2014-04-16 67 views
0

我試圖使用ffmpeg和mplayer的基準來比較不同視頻編解碼器之間的延遲。mplayer無法讀取udp視頻流

我使用此命令行生成和發送數據流:

ffmpeg -s 1280x720 -r 100 -f x11grab -i :0.0 -vcodec mpeg2video -b:v 8000 -f mpegts udp://localhost:4242 

而且我成功地利用ffplay接收並實時閱讀:

ffplay -an -sn -i -fflags nobuffer udp://localhost:4242?listen 

現在,而不是使用ffplay播放流,我想使用mplayer基準測試來獲取有關延遲的一些信息:

mplayer -msglevel all=6 -benchmark udp://localhost:4242 

但我得到這個輸出,而不是:

Playing udp://localhost:4242. 
get_path('sub/') -> '/home/XXXXX/.mplayer/sub/' 
STREAM_UDP, URL: udp://localhost:4242 
Filename for url is now udp://localhost:4242 
Listening for traffic on localhost:4242 ... 
Timeout! No data from host localhost 
udp_streaming_start failed 
No stream found to handle url udp://localhost:4242 

我用RTP協議而不是嘗試過,沒有工作,要麼...

有沒有人有一個想法是什麼我做錯了嗎?

+0

如果您使用vcodec libx264,該怎麼辦? – rogerdpack

+0

使用任何其他編解碼器都不會改變任何內容。此外,我想使用mpeg2video,因爲我的目標是達到最短的延遲時間,並且現在我嘗試了所有不同的編解碼器,它顯然是最快的。正如我所說的,我可以使用ffplay播放流。但我真正想做的就是使用mplayer的-benchmark選項在我的延遲上加上一個數字 – lagarkane

+1

我已經通過使用libx264及其調諧穩定性[etc.]選項獲得了類似(低)的值,FWIW:https:/ /trac.ffmpeg.org/wiki/StreamingGuide#Latency也可以像mplayer ffmpeg:// udp:// localhost [或者可能指定127.0.0.1而不是本地主機?]一樣嘗試。 GL! – rogerdpack

回答

2

感謝您的答案,

其實我嘗試了很多不同的編解碼器,特別是VP9,H264和MPEG2的,但最好的低延遲居然是用mpeg2video。這裏是我使用的三條命令行。我讀ffmpeg的流引導和不同的編解碼器的編碼指導,試圖獲得最佳的參數爲他們每個人,但不同的是明顯的:

ffmpeg -an -sn -s 1280x720 -r 30 -f x11grab -i :0.0 -vcodec libx264 -crf 18 -tune zerolatency -preset ultrafast -pix_fmt yuv420p -profile:v baseline -b:v 8000 -f mpegts threads 4 udp://127.0.0.1:4242 

ffmpeg -s 1280x720 -r 30 -f x11grab -i :0.0 -vcodec mpeg2video -b:v 800k -f mpegts -threads 8 udp://127.0.0.1:4242 

ffmpeg -t 5 -s 1280x720 -r 30 -f x11grab -i :0.0 -vcodec libvpx-vp9 -an -crf 18 -b:v 1M -f webm -threads 8 udp://127.0.0.1:4242 

在本地主機上,我是接近無延遲,在所有mpeg2video,當我有幾乎1秒的延遲與h264。我聽說vp9可能有非常低的延遲,但我顯然不知道如何使用ffmpeg中的選項,因爲我得到了非常差的延遲值...

無論如何,要回到主題,127.0。 0.1而不是本地主機不起作用,並與ffmpeg:// udp:// ip:port它不工作...:/我想我可能在mplayer上有錯誤的配置。也許我應該嘗試自己編譯它。但實際上,我甚至不知道mplayer是否會給我提供我想要的信息(編解碼器編碼/解碼幀的平均毫秒數,以便我可以精確比較我的不同編解碼器)。

編輯:對不起...... ffmpeg:// udp:// ip_addr作品=)我犯了一個輸入錯誤... n_n 非常感謝。雖然,當我使用mplayer時,視頻的質量與ffplay相比是非常可觀的...