ffplay是一個基于FFMPEG庫和SDL庫開發的多媒體播放器。它的主要目的是是用來測試FFMPEG的各種API,比如codec/format/filter等等庫。
掌握ffplay的設計邏輯,對于播放器開發人員提升經驗非常有幫助。哔哩哔哩的ijkplayer就是基于ffplay做的二次開發。
ffplay [options] [input_url]
選項
說明
-x width
強制顯示寬帶。
-y height
強制顯示高度。
-s size
幀尺寸 設定顯示幀存儲(WxH格式),僅适用于類似原始YUV等沒有包含幀大小(WxH)的視訊。該參數已經被廢棄,請嘗試用-video_size代替
-fs
以全屏模式啟動。
-an
禁用音頻(不播放聲音)
-vn
禁用視訊(不播放視訊)
-sn
禁用字幕(不顯示字幕)
-ss pos
根據設定的秒進行定位拖動,注意時間機關:比如'55' 55 seconds, '12:03:45' ,12 hours, 03 minutes and 45 seconds, '23.189' 23.189 second
-t duration
設定播放視訊/音頻長度,時間機關如 -ss選項
-bytes
按位元組進行定位拖動。
-seek_interval interval
自定義左/右鍵定位拖動間隔(以秒為機關),預設值為10秒
-nodisp
關閉圖形化顯示視窗,視訊将不顯示
-noborder
無邊框視窗
-volume vol
設定起始音量。音量範圍[0 ~100]
-f fmt
強制使用設定的格式進行解析。比如-f s16le
-window_title title
設定視窗标題(預設為輸入檔案名)
-loop number
設定播放循環次數
-showmode mode
設定顯示模式,可用的模式值:0 顯示視訊,1 顯示音頻波形,2 顯示音頻頻譜。預設為0,如果視訊不存在則自動選擇2
-vf filtergraph
設定視訊濾鏡
-af filtergraph
設定音頻濾鏡
-i input_url
input_url
-pix_fmt format
格式設定像素格式。此選項已被棄用,有利于私有選項,try -pixel_format
-stats
列印多個回放統計資訊,包括顯示流持續時間,編×××參數,流中的目前位置,以及音頻/視訊同步內插補點。預設情況下處于啟用狀态,要顯式禁用它則需要指定-nostats。
-fast
非标準化規範的多媒體相容優化
-genpts
生成pts。
-sync type
同步類型 将主時鐘設定為audio(type=audio),video(type=video)或external(type=ext),預設是音頻為主時鐘。
-ast audio_stream_specifier
指定音頻流索引,比如-ast 3,播放流索引為3的音頻流
-vst video_stream_specifier
指定視訊流索引,比如-vst 4,播放流索引為4的視訊流
-sst subtitle_stream_specifier
指定字幕流索引,比如-sst 5,播放流索引為5的字幕流
-autoexit
視訊播放完畢後退出。
-exitonkeydown
鍵盤按下任何鍵退出播放
-exitonmousedown
滑鼠按下任何鍵退出播放
-codec:media_specifier codec_name
強制使用設定的多媒體×××,media_specifier可用值為a(音頻), v(視訊)和s字幕。比如-codec:v h265 強制視訊采用h265解碼
-acodec codec_name
強制使用設定的音頻×××進行音頻解碼
-vcodec codec_name
強制使用設定的視訊×××進行視訊解碼
-scodec codec_name
強制使用設定的字幕×××進行字幕解碼
-autorotate
根據檔案中繼資料自動旋轉視訊。預設情況下啟用,若需禁用則使用-noautorotate
-framedrop
如果視訊不同步則丢棄視訊幀。當主時鐘非視訊時鐘時預設開啟。若需禁用則使用 -noframedrop
-infbuf
不限制輸入緩沖區大小。盡可能快地從輸入中讀取盡可能多的資料。播放實時流時預設啟用,如果未及時讀取資料,則可能會丢棄資料。此選項将不限制緩沖區的大小。若需禁用則使用-noinfbuf
q, ESC
退出播放
f
全屏切換
p, SPC
暫停
m
靜音切換
9, 0
9減少音量,0增加音量
/, *
/減少音量,*增加音量
a
循環切換音頻流
v
循環切換視訊流
t
循環切換字幕流
c
循環切換節目
w
循環切換過濾器或顯示模式
s
逐幀播放
left/right
向後/向前拖動10秒
down/up
向後/向前拖動1分鐘
page down/page up
拖動上一個/下一個。或者如果沒有章節向後/向前拖動10分鐘。
滑鼠右鍵單擊
拖動與顯示寬度對應百分比的檔案進行播放
滑鼠左鍵輕按兩下
打開網絡直播流,可以使用指令
ffplay -window_title "rtmp stream" rtmp://202.69.69.180:443/webcast/bshdlive-pc
從2秒播放一個視訊,播放時長為10秒鐘,播放完成後自動退出ffplay,播放器的視窗标題為”test time”,
ffplay -window_title "test time" -ss 2 -t 10 -autoexit test.mp4
強制使用mp3×××解碼aac的音頻,将會報錯:
ffplay -acodec mp3 test.mp4
當視訊流中出現多個Program時,播放Program與正常的播放方式則有所不同,需要指定對應的流,可以通過vst、ast、sst參數指定,例如希望播放Program 13中的音視訊流,則通過如下指令行指定:
ffplay -vst 4 -ast 5 ~/Movies/movie/ChinaTV-11.ts
當播放視訊時體驗×××是如何解碼每個宏塊的,可以使用指令
ffplay -debug vis_mb_type -window_title "show vis_mb_type" -ss 20 -t 10 -autoexit Titanic.ts
顯示視窗内容
在輸出的視訊資訊中,可以看到不同顔色的方塊,下面來說明一下這些顔色代表着什麼資訊:
通過ffplay檢視B幀預測與P幀預測資訊,希望将資訊在視窗中顯示出來,使用指令
ffplay -vismv pf Titanic.ts
顯示效果如圖
通過圖中的箭頭可以看到p幀運動估計的資訊
而vismv參數則是用來顯示圖像解碼時的運動向量資訊的,參數可以設定三種類型的運動向量資訊顯示
這個vismv參數将會在未來被替換掉,未來更多的是使用codecview這個filter來進行設定,如上面
圖像,也可以通過下面這條指令完成
ffplay -flags2 +export_mvs Titanic.ts -vf codecview=mv=pf+bf+bb
當播放音頻檔案時,不确定檔案的聲音是否正常,噪聲資料等分析,可以直接使用ffplay播放音頻檔案,播放的時候将會把解碼後的音頻資料以音頻波形顯示出來:
ffplay -showmode 1 Titanic.ts
在多媒體進行中,filter的意思是被編碼到輸出檔案之前用來修改輸入檔案内容的一個軟體工具。比如:視訊翻轉,旋轉,縮放等。
文法:[input_link_label1] [input_link_label1]... filter_name=parameters [output_link_label1] [output_link_label2] ...
過濾器圖link label:是标記過濾器的輸入或輸出名稱
視訊過濾器-vf
将原視訊按順時針旋轉90度
ffplay -i test.mp4 -vf transpose=1
将原視訊垂直翻轉
ffplay -i test.mp4 -vf vflip transpose=1
将以下兩個效果疊加
ffplay -i test.mp4 -vf vflip,transpose=1
音頻過濾器-af
實作快速播放,聲音速度是原始速度的1.5倍
ffplay -i test.mp4 -af atempo=1.5
香港衛視,rtmp://live.hkstv.hk.lxdns.com/live/hks (最近測試已不能連接配接)
香港财經,rtmp://202.69.69.180:443/webcast/bshdlive-pc
南韓GoodTV,rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp
南韓北韓日報,rtmp://live.chosun.gscdn.com/live/tvchosun1.stream
美國1,rtmp://ns8.indexforce.com/home/mystream
美國2,rtmp://media3.scctv.net/live/scctv_800
美國中文電視,rtmp://media3.sinovision.net:1935/live/livestream
http://samples.mplayerhq.hu/
https://wenku.baidu.com/view/296eefcaf90f76c661371af1.html
音視訊技術交流群1 已滿
音視訊技術交流群2 已滿
音視訊技術交流群3 群号782508536