ffplay是以FFmpeg框架爲基礎,外加渲染音視頻的庫libSDL構建的媒體文件播放器。html
在使用ffplay以前必需要安裝到系統中,MAC的安裝教程爲:http://www.cnblogs.com/renhui/p/8458150.html框架
在安裝了在命令行中輸入以下格式的命令:ide
ffplay [選項] ['輸入文件']
'-x width' 強制以 "width" 寬度顯示 '-y height' 強制以 "height" 高度顯示 '-an' 禁止音頻 '-vn' 禁止視頻 '-ss pos' 跳轉到指定的位置(秒) '-t duration' 播放 "duration" 秒音/視頻 '-bytes' 按字節跳轉 '-nodisp' 禁止圖像顯示(只輸出音頻) '-f fmt' 強制使用 "fmt" 格式 '-window_title title' 設置窗口標題(默認爲輸入文件名) '-loop number' 循環播放 "number" 次(0將一直循環) '-showmode mode' 設置顯示模式 可選的 mode : '0, video' 顯示視頻 '1, waves' 顯示音頻波形 '2, rdft' 顯示音頻頻帶 默認值爲 'video',你能夠在播放進行時,按 "w" 鍵在這幾種模式間切換 '-i input_file' 指定輸入文件
'-sync type' 設置主時鐘爲音頻、視頻、或者外部。默認爲音頻。主時鐘用來進行音視頻同步 '-threads count' 設置線程個數 '-autoexit' 播放完成後自動退出 '-exitonkeydown' 任意鍵按下時退出 '-exitonmousedown' 任意鼠標按鍵按下時退出 '-acodec codec_name' 強制指定音頻解碼器爲 "codec_name" '-vcodec codec_name' 強制指定視頻解碼器爲 "codec_name" '-scodec codec_name' 強制指定字幕解碼器爲 "codec_name"
'q, ESC' 退出 'f' 全屏 'p, SPC' 暫停 'w' 切換顯示模式(視頻/音頻波形/音頻頻帶) 's' 步進到下一幀 'left/right' 快退/快進 10 秒 'down/up' 快退/快進 1 分鐘 'page down/page up' 跳轉到前一章/下一章(若是沒有章節,快退/快進 10 分鐘) 'mouse click' 跳轉到鼠標點擊的位置(根據鼠標在顯示窗口點擊的位置計算百分比)
播放音頻文件的命令:oop
ffplay shy.mp3
這時候就會彈出來一個窗口,一邊播放MP3文件,一邊將播放音頻的圖畫到該窗口上。針對該窗口的操做以下:ui
播放視頻文件的命令:命令行
ffplay pm.mp4
這時候,就會在新彈出的窗口上播放該視頻了。線程
ffplay pm.mp4 -loop 10
上述命令表明播放視頻結束以後會從頭再次播放,共循環播放10次。code
ffplay -autoexit pm.mp4
ffplay -x 320 -y 240 pm.mp4
ffplay -window_title myplayer -loop 2 pm.mp4
ffplay -f s16le -ar 32000 -ac 2 test.pcm
ffplay也是一個視頻播放器,因此不得不提出來的一個問題是:音畫同步。ffplay的音畫同步的實現方式其實有三種,分別是:以音頻爲主時間軸做爲同步源,以視頻爲主時間軸做爲同步源,之外部時鐘爲主時間軸做爲同步源。視頻
下面就以音頻爲主時間軸來做爲同步源來做爲案例進行講解,並且ffplay默認也是以音頻爲基準進行對齊的,那麼以音頻做爲對齊基準是如何實現的呢?xml
首先須要說明的是,播放器接收到的視頻幀或者音頻幀,內部都是會有時間戳(PTS時鐘)來標識它實際應該在什麼時刻展現,實際的對齊策略以下:比較視頻當前的播放時間和音頻當前的播放時間,若是視頻播放過快,則經過加大延遲或者重複播放來下降視頻播放速度,若是視頻播放滿了,則經過減少延遲或者丟幀來追趕音頻播放的時間點。關鍵就在於音視頻時間的比較和延遲的計算,當前在比較的過程當中會設置一個閾值,若是超過預設的閾值就應該做出調整(丟幀或者重複渲染),這就是整個對齊策略。
在使用ffplay的時候,咱們能夠明確的指定使用那種對齊方式,好比:
ffplay pm.mp4 -sync audio
上面這個命令顯式的指定了使用以音頻爲基準進行音視頻同步的方式播放視頻文件,固然這也是ffplay的默認播放設置。
ffplay pm.mp4 -sync video
上面這個命令顯式的指定了使用以視頻爲基準進行音視頻同步的方式播放視頻文件。
ffplay pm.mp4 -sync ext
上面這個命令顯式的指定了使用外部時鐘爲基準進行音視頻同步的方式播放視頻文件。
你們能夠分別使用這三種方式進行播放,嘗試聽一聽,作一些快進或者seek的操做,看看不一樣的對齊策略對最終的播放會產生什麼樣的影響。