簡體   English   中英

使用 ffmpeg-lib 實現一個簡單的 MPEG-TS 復用器

[英]Implement a simple MPEG-TS muxer using ffmpeg-lib

我有一個應用程序,它記錄存儲在緩沖區中的 LPCM 中的原始音頻數據。 我想將數據封裝在傳輸流中,並通過 UDP 將該傳輸流發送到另一台主機上的流分段器(根據 HTTP Live Streaming 規范)。

FFmpeg 提供了一個命令行實用程序來執行此操作,但將文件作為輸入ffmpeg -re -i output.aac -acodec copy -f mpegts udp://127.0.0.1:5555

我的第一個想法是使用 FFmpeg API,尤其是libavformat庫。 libavformat 是否提供了一個多路復用器,我可以用它來將 LPCM 中的音頻封裝到傳輸流中,還是我必須從頭開始實現它?

我找到了這個源代碼https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/mpegts.c但我不確定它是否真的符合我的要求。

謝謝你的幫助,

因此,根據您關於在 TS 中不需要它一定是 LPCM 的評論,您將需要:

  1. 解碼您的音頻/讀取幀
  2. 將其編碼為適合在傳輸流中發送的內容,例如 mp3 或 AAC 我相信這是選項列表: https : //github.com/FFmpeg/FFmpeg/blob/master/libavformat/mpegts.h#L45- L64
  3. 將其打包在適合您的網絡條件的 TS 中,例如數據包大小等
  4. 通過UDP發送

這里有一個合理的例子: https : //github.com/rvs/ffmpeg/blob/master/libavformat/output-example.c

正如 szatmary 的先前回答中提到的,您也可以將其通過管道傳輸到 ffmpeg,這可能是最簡單的

您可以通過 libavformat 直接使用 ts muxer。 但是,您也可以使用 -i - 將音頻通過管道傳輸到 ffmpeg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM