ffmpeg學習筆記1----->udp流多路節目實現分離

lzzzzzzzzzzzzzzz發表於2018-01-06

環境:centos/ubuntu 安裝好ffmpeg即可

安裝教程:https://trac.ffmpeg.org/wiki/CompilationGuide

準備需要一個udp組播流(含有多路節目那種)

可以用下面的命令檢視流的資訊:

ffprobe -i udp://224.2.2.21:10001             //-i 後接的是你的流地址

ok看到目標,我們可以進行普通操作

ffmpeg -re -i udp://224.2.2.21:10001 -s 1280*720  -vcodec h264  -acodec copy -crf 30  -f mpegts udp://239.0.0.1:8001  執行完,發現報快取溢位的錯誤。他叫我們加fifo_size 引數。好吧那我們就加上

ffmpeg -re -i udp://224.2.2.21:10001?fifo_size=409600 -s 1280*720  -vcodec h264  -acodec copy -crf 30 -f mpegts udp://239.0.0.1:8001

再次執行,走你~

這次就正確了,沒有異常退出。那麼問題來了,現在的這個流是那一路節目視訊音訊又是否同步?

ok我們在看一下輸出表

這是第一個節目到第四個節目。由於字元編碼問題,節目名稱為亂碼。那麼看看我們剛才執行的命令視訊和音訊是如何轉的

這裡我們看到了貌似好像沒有什麼規律。所有我肯定的話,這個流拉出來的節目他肯定是視訊和音訊不同步(這裡的不同步是指B節目的音訊+A節目的視訊組成了我們現在的流,這樣肯定是不行的),我們需要怎麼做。這裡加一個-map引數指定一下,對引數不是很瞭解,連結在此:http://blog.csdn.net/xuheazx/article/details/51969535

於是我們的命令變成了這樣:

ffmpeg -re -i udp://224.2.2.21:10001?fifo_size=409600 -s 1280*720 -map \#0x3e9 -vcodec h264 -map \#0x3ea -acodec copy -crf 30 -f mpegts udp://229.0.0.1:8001

map後的引數對應標籤後的引數。

這樣就ok了,嘗試執行一下~

大功告成!



ps (#0:x) 這個東西會變得不是唯一標識,唯一的是([0x407])。然後開啟VLC測試。我太懶就不做了。

88~


相關文章