溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

FFMPEG進(jìn)階系列01-ffplay命令詳解

發(fā)布時(shí)間:2020-07-17 13:05:06 來(lái)源:網(wǎng)絡(luò) 閱讀:4096 作者:muyuyuzhong 欄目:編程語(yǔ)言

概述

  1. ffplay是一個(gè)基于FFMPEG庫(kù)和SDL庫(kù)開(kāi)發(fā)的多媒體播放器。它的主要目的是是用來(lái)測(cè)試FFMPEG的各種API,比如codec/format/filter等等庫(kù)。
  2. 掌握f(shuō)fplay的設(shè)計(jì)邏輯,對(duì)于播放器開(kāi)發(fā)人員提升經(jīng)驗(yàn)非常有幫助。嗶哩嗶哩的ijkplayer就是基于ffplay做的二次開(kāi)發(fā)。

    命令格式

    ffplay [options] [input_url]

主要選項(xiàng)

選項(xiàng) 說(shuō)明
-x width 強(qiáng)制顯示寬帶。
-y height 強(qiáng)制顯示高度。
-s size 幀尺寸 設(shè)置顯示幀存儲(chǔ)(WxH格式),僅適用于類(lèi)似原始YUV等沒(méi)有包含幀大小(WxH)的視頻。該參數(shù)已經(jīng)被廢棄,請(qǐng)嘗試用-video_size代替
-fs 以全屏模式啟動(dòng)。
-an 禁用音頻(不播放聲音)
-vn 禁用視頻(不播放視頻)
-sn 禁用字幕(不顯示字幕)
-ss pos 根據(jù)設(shè)置的秒進(jìn)行定位拖動(dòng),注意時(shí)間單位:比如'55' 55 seconds, '12:03:45' ,12 hours, 03 minutes and 45 seconds, '23.189' 23.189 second
-t duration 設(shè)置播放視頻/音頻長(zhǎng)度,時(shí)間單位如 -ss選項(xiàng)
-bytes 按字節(jié)進(jìn)行定位拖動(dòng)。
-seek_interval interval 自定義左/右鍵定位拖動(dòng)間隔(以秒為單位),默認(rèn)值為10秒
-nodisp 關(guān)閉圖形化顯示窗口,視頻將不顯示
-noborder 無(wú)邊框窗口
-volume vol 設(shè)置起始音量。音量范圍[0 ~100]
-f fmt 強(qiáng)制使用設(shè)置的格式進(jìn)行解析。比如-f s16le
-window_title title 設(shè)置窗口標(biāo)題(默認(rèn)為輸入文件名)
-loop number 設(shè)置播放循環(huán)次數(shù)
-showmode mode 設(shè)置顯示模式,可用的模式值:0 顯示視頻,1 顯示音頻波形,2 顯示音頻頻譜。缺省為0,如果視頻不存在則自動(dòng)選擇2
-vf filtergraph 設(shè)置視頻濾鏡
-af filtergraph 設(shè)置音頻濾鏡
-i input_url input_url

高級(jí)選項(xiàng)

選項(xiàng) 說(shuō)明
-pix_fmt format 格式設(shè)置像素格式。此選項(xiàng)已被棄用,有利于私有選項(xiàng),try -pixel_format
-stats 打印多個(gè)回放統(tǒng)計(jì)信息,包括顯示流持續(xù)時(shí)間,編×××參數(shù),流中的當(dāng)前位置,以及音頻/視頻同步差值。默認(rèn)情況下處于啟用狀態(tài),要顯式禁用它則需要指定-nostats。
-fast 非標(biāo)準(zhǔn)化規(guī)范的多媒體兼容優(yōu)化
-genpts 生成pts。
-sync type 同步類(lèi)型 將主時(shí)鐘設(shè)置為audio(type=audio),video(type=video)或external(type=ext),默認(rèn)是音頻為主時(shí)鐘。
-ast audio_stream_specifier 指定音頻流索引,比如-ast 3,播放流索引為3的音頻流
-vst video_stream_specifier 指定視頻流索引,比如-vst 4,播放流索引為4的視頻流
-sst subtitle_stream_specifier 指定字幕流索引,比如-sst 5,播放流索引為5的字幕流
-autoexit 視頻播放完畢后退出。
-exitonkeydown 鍵盤(pán)按下任何鍵退出播放
-exitonmousedown 鼠標(biāo)按下任何鍵退出播放
-codec:media_specifier codec_name 強(qiáng)制使用設(shè)置的多媒體×××,media_specifier可用值為a(音頻), v(視頻)和s字幕。比如-codec:v h365 強(qiáng)制視頻采用h365解碼
-acodec codec_name 強(qiáng)制使用設(shè)置的音頻×××進(jìn)行音頻解碼
-vcodec codec_name 強(qiáng)制使用設(shè)置的視頻×××進(jìn)行視頻解碼
-scodec codec_name 強(qiáng)制使用設(shè)置的字幕×××進(jìn)行字幕解碼
-autorotate 根據(jù)文件元數(shù)據(jù)自動(dòng)旋轉(zhuǎn)視頻。默認(rèn)情況下啟用,若需禁用則使用-noautorotate
-framedrop 如果視頻不同步則丟棄視頻幀。當(dāng)主時(shí)鐘非視頻時(shí)鐘時(shí)默認(rèn)開(kāi)啟。若需禁用則使用 -noframedrop
-infbuf 不限制輸入緩沖區(qū)大小。盡可能快地從輸入中讀取盡可能多的數(shù)據(jù)。播放實(shí)時(shí)流時(shí)默認(rèn)啟用,如果未及時(shí)讀取數(shù)據(jù),則可能會(huì)丟棄數(shù)據(jù)。此選項(xiàng)將不限制緩沖區(qū)的大小。若需禁用則使用-noinfbuf

播放控制

選項(xiàng) 說(shuō)明
q, ESC 退出播放
f 全屏切換
p, SPC 暫停
m 靜音切換
9, 0 9減少音量,0增加音量
/, * /減少音量,*增加音量
a 循環(huán)切換音頻流
v 循環(huán)切換視頻流
t 循環(huán)切換字幕流
c 循環(huán)切換節(jié)目
w 循環(huán)切換過(guò)濾器或顯示模式
s 逐幀播放
left/right 向后/向前拖動(dòng)10秒
down/up 向后/向前拖動(dòng)1分鐘
page down/page up 拖動(dòng)上一個(gè)/下一個(gè)。或者如果沒(méi)有章節(jié)向后/向前拖動(dòng)10分鐘。
鼠標(biāo)右鍵單擊 拖動(dòng)與顯示寬度對(duì)應(yīng)百分比的文件進(jìn)行播放
鼠標(biāo)左鍵雙擊 全屏切換

應(yīng)用范例

播放媒體文件

  1. 打開(kāi)網(wǎng)絡(luò)直播流,可以使用命令
    ffplay -window_title "rtmp stream" rtmp://202.69.69.180:443/webcast/bshdlive-pc
    FFMPEG進(jìn)階系列01-ffplay命令詳解
  2. 從2秒播放一個(gè)視頻,播放時(shí)長(zhǎng)為10秒鐘,播放完成后自動(dòng)退出ffplay,播放器的窗口標(biāo)題為”test time”,
    ffplay -window_title "test time" -ss 2 -t 10 -autoexit test.mp4
  3. 強(qiáng)制使用mp3×××解碼aac的音頻,將會(huì)報(bào)錯(cuò):
    ffplay -acodec mp3 test.mp4

  4. 當(dāng)視頻流中出現(xiàn)多個(gè)Program時(shí),播放Program與常規(guī)的播放方式則有所不同,需要指定對(duì)應(yīng)的流,可以通過(guò)vst、ast、sst參數(shù)指定,例如希望播放Program 13中的音視頻流,則通過(guò)如下命令行指定:
    ffplay -vst 4 -ast 5 ~/Movies/movie/ChinaTV-11.ts

    ffplay的數(shù)據(jù)可視化分析應(yīng)用

  5. 當(dāng)播放視頻時(shí)體驗(yàn)×××是如何解碼每個(gè)宏塊的,可以使用命令
    ffplay -debug vis_mb_type -window_title "show vis_mb_type" -ss 20 -t 10 -autoexit Titanic.ts
    顯示窗口內(nèi)容
    FFMPEG進(jìn)階系列01-ffplay命令詳解

FFMPEG進(jìn)階系列01-ffplay命令詳解
在輸出的視頻信息中,可以看到不同顏色的方塊,下面來(lái)說(shuō)明一下這些顏色代表著什么信息:
FFMPEG進(jìn)階系列01-ffplay命令詳解

  1. 通過(guò)ffplay查看B幀預(yù)測(cè)與P幀預(yù)測(cè)信息,希望將信息在窗口中顯示出來(lái),使用命令
    ffplay -vismv pf Titanic.ts
    顯示效果如圖
    FFMPEG進(jìn)階系列01-ffplay命令詳解
    FFMPEG進(jìn)階系列01-ffplay命令詳解
    通過(guò)圖中的箭頭可以看到p幀運(yùn)動(dòng)估計(jì)的信息
    而vismv參數(shù)則是用來(lái)顯示圖像解碼時(shí)的運(yùn)動(dòng)向量信息的,參數(shù)可以設(shè)置三種類(lèi)型的運(yùn)動(dòng)向量信息顯示
    FFMPEG進(jìn)階系列01-ffplay命令詳解
    這個(gè)vismv參數(shù)將會(huì)在未來(lái)被替換掉,未來(lái)更多的是使用codecview這個(gè)filter來(lái)進(jìn)行設(shè)置,如上面
    圖像,也可以通過(guò)下面這條命令完成
    ffplay -flags2 +export_mvs Titanic.ts -vf codecview=mv=pf+bf+bb
    FFMPEG進(jìn)階系列01-ffplay命令詳解

  2. 當(dāng)播放音頻文件時(shí),不確定文件的聲音是否正常,噪聲數(shù)據(jù)等分析,可以直接使用ffplay播放音頻文件,播放的時(shí)候?qū)?huì)把解碼后的音頻數(shù)據(jù)以音頻波形顯示出來(lái):
    ffplay -showmode 1 Titanic.ts
    FFMPEG進(jìn)階系列01-ffplay命令詳解

過(guò)濾器(filter)

在多媒體處理中,filter的意思是被編碼到輸出文件之前用來(lái)修改輸入文件內(nèi)容的一個(gè)軟件工具。比如:視頻翻轉(zhuǎn),旋轉(zhuǎn),縮放等。
語(yǔ)法:[input_link_label1] [input_link_label1]... filter_name=parameters [output_link_label1] [output_link_label2] ...
過(guò)濾器圖link label:是標(biāo)記過(guò)濾器的輸入或輸出名稱(chēng)

  1. 視頻過(guò)濾器-vf
    • 將原視頻按順時(shí)針旋轉(zhuǎn)90度
      ffplay -i test.mp4 -vf transpose=1
    • 將原視頻垂直翻轉(zhuǎn)
      ffplay -i test.mp4 -vf vflip transpose=1
    • 將以下兩個(gè)效果疊加
      ffplay -i test.mp4 -vf vflip,transpose=1
  2. 音頻過(guò)濾器-af
    • 實(shí)現(xiàn)快速播放,聲音速度是原始速度的1.5倍
      ffplay -i test.mp4 -af atempo=1.5

待續(xù) 尚未完成

資源

可用RTMP鏈接

香港衛(wèi)視,rtmp://live.hkstv.hk.lxdns.com/live/hks (最近測(cè)試已不能連接)
香港財(cái)經(jīng),rtmp://202.69.69.180:443/webcast/bshdlive-pc
韓國(guó)GoodTV,rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp
韓國(guó)朝鮮日?qǐng)?bào),rtmp://live.chosun.gscdn.com/live/tvchosun1.stream
美國(guó)1,rtmp://ns8.indexforce.com/home/mystream
美國(guó)2,rtmp://media3.scctv.net/live/scctv_800
美國(guó)中文電視,rtmp://media3.sinovision.net:1935/live/livestream

多種測(cè)試碼流

http://samples.mplayerhq.hu/

參考

https://wenku.baidu.com/view/296eefcaf90f76c661371af1.html

更多資料,更多分享

音視頻技術(shù)交流群1 已滿
音視頻技術(shù)交流群2 已滿
音視頻技術(shù)交流群3 群號(hào)782508536

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI