2013-05-29 42 views
2

中使用比特流篩選器我正在嘗試將RTSP流解複用,並使用libavformat,libavcodec等將其複製到TS文件中,複製視頻並對音頻進行轉碼。如果我使用的ffmpeg,命令大致是這樣的:如何在

ffmpeg -rtsp_transport tcp -re -fflags +genpts -i rtsp://10.0.0.42/channel1 -vcodec copy -copyts -bsf dump_extra -acodec libfdk_aac -b:a 16k -ac 1 -map 0:0 -map 0:1 -f mpegts out.ts 

我已經看過了多路複用/多路分解的例子,但除了難以理解如何使一個流拷貝,我找不到任何提及比特流過濾器。我目前收到以下錯誤:

[mpegts @ 0x7ff20c009600] H.264 bitstream malformed, no startcode found, use the h264_mp4toannexb bitstream filter (-bsf h264_mp4toannexb) 

如何創建比特流篩選器並如何分配它?我將它分配給輸入流還是輸出流?

+0

請使用-vbsf h264_mp4toannexb –

+0

試試您的命令對不起,我編輯了我的帖子以便更清楚。我不再使用ffmpeg,我正在編寫自己的代碼並直接使用庫。 – evilpenguin

+0

查看此處的回覆:[什麼是ffmpeg中的比特流篩選器?](https://stackoverflow.com/questions/32028437/what-are-bitstream-filters-in-ffmpeg/32035072#32035072) –

回答

2

比特流過濾器可悲的是未公開,但不應該是全部很難搞清楚。最簡單的方法可能就是模擬avconv的功能 - setup,然後apply在將它複用之前對每個數據包進行過濾。

+0

感謝您提供非常有用的代碼參考。 – evilpenguin

+0

查看此處的回覆:https://stackoverflow.com/questions/32028437/what-are-bitstream-filters-in-ffmpeg/32035072#32035072 –

0

你能找到的MPEG-2 TS這裏http://wiki.multimedia.cx/index.php?title=MPEG-2_Transport_Stream 簡短描述的例子TS文件(H.264):http://samples.mplayerhq.hu/V-codecs/h264/

但你的問題是不明確的。你想要做什麼?你想爲TS創建自己的muxer嗎?

BR, 亞歷山大

+0

不,我是簡單地試圖從rtsp輸入中獲取H264流並將其複製到磁盤上的TS文件,然後從混合器獲得反饋。我正在使用libaformat和它自動爲mpegts選擇的muxer:avformat_alloc_output_context2(&output_ctx,NULL,「mpegts」,dst_filename); – evilpenguin