編譯舊版本的FFmpeg源代碼,如果系統(tǒng)中包含SDL-1.2版本,會生成ffplay,如果不包含就無法生成ffplay文件;新版本FFmpeg需要SDL-2.0版本;想要用ffplay進(jìn)行流媒體播放測試,需要系統(tǒng)支持SDL然后編譯源碼生成ffplay。
ffplay的功能
ffplay不僅僅是播放器,也可以作為音視頻數(shù)據(jù)圖形化分析工具,ffplay也可以看到視頻圖像的運動估計方向、音視頻波形等,同時也是測試ffmpeg的codec引擎、format引擎、filter引擎工具,還可以進(jìn)行可視化的媒體參數(shù)分析,可以通過ffplay --help來查看:
image.png
| 字段 | 說明 |
|---|---|
| x | 強制設(shè)置視頻顯示窗口的寬度 |
| y | 視頻顯示窗口的高度 |
| s | 設(shè)置視頻顯示的寬高 |
| fs | 強制設(shè)置全屏顯示 |
| an | 屏蔽音頻 |
| vn | 屏蔽視頻 |
| sn | 屏蔽字幕 |
| ss | 根據(jù)設(shè)置的秒進(jìn)行定位拖動 |
| t | 設(shè)置播放長度 |
| bytes | 設(shè)置定位拖動的策略,0不可拖動,1為可拖動,-1為自動 |
| nodisp | 關(guān)閉圖形化顯示窗口 |
| f | 強制使用設(shè)置的格式進(jìn)行解析 |
| window_title | 設(shè)置窗口的標(biāo)題 |
| af | 設(shè)置音頻的濾鏡 |
| codec | 強制使用設(shè)置的codec進(jìn)行解碼 |
| autorotate | 自動旋轉(zhuǎn)視頻 |
舉個栗子:
ffplay -window_title "caterpillar404" input.mp4
image.png
ffplay打開網(wǎng)絡(luò)直播視頻
通過ffplay打開網(wǎng)絡(luò)直播視頻,可以使用如下命令:
** ffplay -window_title "直播測試" rtmp://47.254.42.238:1935/live/caterpillar ** 這是我自己的測試直播流
image.png
高級參數(shù)
上面基礎(chǔ)參數(shù)介紹完畢,一樣ffplay --help查看,我就不截圖了,如下表所示:
| 字段 | 說明 |
|---|---|
| ast | 設(shè)置將要播放的音頻流 |
| vst | 設(shè)置將要播放的視頻流 |
| sst | 設(shè)置將要播放的字幕 |
| stats | 輸出多媒體播放狀態(tài) |
| fast | 非標(biāo)準(zhǔn)化規(guī)范的多媒體兼容優(yōu)化 |
| sync | 音視頻同步設(shè)置可根據(jù)音頻時間、視頻時間或者外部擴展時間進(jìn)行參考 |
| autoexit | 播放完畢后自動退出 |
| exitonkeydown | 當(dāng)有按下事件的時候退出ffplay |
| exitonmousedown | 當(dāng)有鼠標(biāo)按鍵的時候退出ffplay |
| loop | 設(shè)置多媒體文件循環(huán)播放的次數(shù) |
| framedrop | 當(dāng)CPU資源占用過高時,自動丟幀 |
| infbuf | 設(shè)置無極限的播放器buffer,這個選項常見與實時流媒體播放場景 |
| vf | 視頻濾鏡設(shè)置 |
| acodec | 強制設(shè)置音頻解碼器 |
| vcodec | 強制設(shè)置視頻解碼器 |
| scodec | 強制設(shè)置字幕解碼器 |
從上述參數(shù)進(jìn)行一些參數(shù)組合,舉個栗子:
例如從第5秒開始播放一個視頻,播放10秒鐘,播放完成后自動退出ffplay,播放窗口標(biāo)題為“綠帽子”,為了確認(rèn)播放時長正確,可以通過系統(tǒng)命令time 來查看運行時長:
time ffplay -ss 5 -t 10 -autoexit input.mp4
命令執(zhí)行完畢之后輸出如下:
image.png
從輸出內(nèi)容上看,實際消耗時間為12.335s,用戶空間消耗0.801s,情況基本相符。
通過filter將字幕文件加載到播放數(shù)據(jù)中
可以加載ASS和SRT格式的字幕文件
ffplay -window_title "胖胖胖" -vf "subtitles=input.srt" input.mp4
ffplay的數(shù)據(jù)可視化分析應(yīng)用
使用ffplay除了可以播放視頻流媒體文件之外,還可以作為可視化的視頻流媒體分析工具,例如播放音頻文件,如果不確定文件的聲音是否正常,可以使用ffplay播放音頻文件,播放的時候?qū)⒔獯a后的音頻數(shù)據(jù)以音頻波形的形式顯示出來,執(zhí)行效果如下:
ffplay -showmode 1 input.mp3
image.png
上圖可以看到,音頻播放時的波形可以通過振幅顯示出來,可以用來查看音頻的播放情況。
查看B幀和P幀預(yù)測信息
ffplay -vismv pf input.mp4
目前vismv這個參數(shù)已經(jīng)被替換掉了,現(xiàn)在使用codecview這個濾鏡來進(jìn)行設(shè)置,命令如下:
ffplay input.mp4 -vf codecview=mv=pf+bf+bb
運動向量顯示參數(shù):
| 參數(shù) | 說明 |
|---|---|
| pf | P幀向前運動估計顯示 |
| bf | B幀向前玉棟估計顯示 |
| bb | B幀向后運動估計顯示 |




