ffmpeg/ffplay/ffprobe命令簡單使用

ffplay使用

ffplay用于渲染音視頻的
如播放視頻

ffplay http://tb-video.bdstatic.com/tieba-video/15_4f104948e182a557c4eb651d9720a5ae.mp4

這時(shí)候會(huì)直接在新彈出的窗口上播放該視頻囤萤,如果想要同時(shí)播放多 個(gè)文件,那么只需要在多個(gè)命令行下同時(shí)執(zhí)行ffplay就可以了,在對比 多個(gè)視頻質(zhì)量的時(shí)候這是一個(gè)操作技巧全释,此外,如果按s鍵則可以進(jìn)入 frame-step模式,即按s鍵一次就會(huì)播放下一幀圖像幔托。

播放音頻

ffplay ~/Desktop/GALA.mp3 

這時(shí)候會(huì)彈出一個(gè)窗口,一邊播放MP3文件蜂挪,一邊將播放聲音的語譜圖畫到該窗口上重挑。針對該窗口的操作如下,點(diǎn)擊窗口的任意一個(gè)位 置(右鍵)棠涮,ffplay會(huì)按照點(diǎn)擊的位置計(jì)算出時(shí)間的進(jìn)度谬哀,然后跳(seek)到這個(gè) 時(shí)間點(diǎn)上繼續(xù)播放;按下鍵盤上的右鍵會(huì)默認(rèn)快進(jìn)10s,左鍵默認(rèn)后退 10s严肪,上鍵默認(rèn)快進(jìn)1min史煎,下鍵默認(rèn)后退1min;按ESC鍵就是退出播放 進(jìn)程;如果按w鍵則將繪制音頻的波形圖等。

語譜圖
音頻的波形圖

更多的ffplay命令介紹:

  1. 播放視頻結(jié)束之后會(huì)從頭再次播放驳糯,共循環(huán)播放10 次篇梭。
ffplay GALA.mp4 -loop 10
  1. 指定使用哪一路音頻流或者視頻流,表示播放視頻中的第一路音頻流,如果參數(shù)ast后面跟的是 2酝枢,那么就播放第二路音頻流恬偷,如果沒有第二路音頻流的話,就會(huì)靜音
ffplay ~/Desktop/8703.mov -ast 1
ffplay ~/Desktop/8703.mov -vst 1

表示播放視頻中的第一路視頻流帘睦,如果參數(shù)vst后面跟的是 2袍患,那么就播放第二路視頻流,但是如果沒有第二路視頻流官脓,就會(huì)是黑 屏即什么都不顯示协怒。

開發(fā)工作中常用的幾個(gè)命令
1.播放PCM裸數(shù)據(jù)

ffplay song.pcm -f s16le -channels 2 -ar 44100

這行命令其實(shí)就可以正常播放song.pcm了,當(dāng)然卑笨,前提 是格式(-f)孕暇、聲道數(shù)(-channels)、采樣率(-ar)必須設(shè)置正確,如 果其中任何一項(xiàng)參數(shù)設(shè)置不正確妖滔,都不會(huì)得到正常的播放結(jié)果隧哮。

  1. 播放YUV420P格式的視頻幀
ffplay -f rawvideo -pixel_format yuv420p -s 480*480 texture.yuv

對于一幀視頻幀,或者更直接來說一張PNG或者JPEG的圖 片座舍,直接用ffplay是可以顯示或播放的沮翔,當(dāng)然PNG或者JPEG都會(huì)在其頭 部信息里面指明這張圖片的寬高以及格式表示。若想讓ffplay顯示一張 YUV的原始數(shù)據(jù)表示的圖片曲秉,那么需要告訴ffplay一些重要的信息采蚀,其 中包括格式(-f rawvideo代表原始格式)、表示格式(-pixel_format yuv420p)承二、寬高(-s 480*480)榆鼠。

對于RGB表示的圖像,其實(shí)是一樣 的亥鸠,命令如下:

ffplay -f rawvideo -pixel_format rgb24 -s 480*480 texture.rgb

音畫同步

視頻播放器妆够,不得不提的一個(gè)問題就是音畫同步,在 ffplay中音畫同步的實(shí)現(xiàn)方式其實(shí)有三種负蚊,分別是:以音頻為主時(shí)間軸 作為同步源;以視頻為主時(shí)間軸作為同步源;以外部時(shí)鐘為主時(shí)間軸作 為同步源神妹。下面就以音頻為主時(shí)間軸來作為同步源來作為案例進(jìn)行講 解,這也是后面章節(jié)中完成視頻播放器項(xiàng)目時(shí)要使用到的對齊策略家妆,并 且在ffplay中默認(rèn)的對齊方式也是以音頻為基準(zhǔn)進(jìn)行對齊的鸵荠,那么以音 頻作為對齊基準(zhǔn)是如何實(shí)現(xiàn)的呢?

首先要聲明的是,播放器接收到的視頻幀或者音頻幀揩徊,內(nèi)部都會(huì)有 時(shí)間戳(PTS時(shí)鐘)來標(biāo)識(shí)它實(shí)際應(yīng)該在什么時(shí)刻進(jìn)行展示腰鬼。實(shí)際的對 齊策略如下:比較視頻當(dāng)前的播放時(shí)間和音頻當(dāng)前的播放時(shí)間,如果視 頻播放過快塑荒,則通過加大延遲或者重復(fù)播放來降低視頻播放速度;如果 視頻播放慢了熄赡,則通過減小延遲或者丟幀來追趕音頻播放的時(shí)間點(diǎn)。關(guān) 鍵就在于音視頻時(shí)間的比較以及延遲的計(jì)算齿税,當(dāng)然在比較的過程中會(huì)設(shè)
置一個(gè)閾值(Threshold)彼硫,若超過預(yù)設(shè)的閾值就應(yīng)該做調(diào)整(丟幀渲染 或者重復(fù)渲染),這就是整個(gè)對齊策略凌箕。

對于ffplay可以明確指明使用的到底是哪一種具體的對齊方式拧篮,比 如:
指定了ffplay使用音頻為基準(zhǔn)進(jìn)行音視頻同步,用 來播放文件32037.mp4牵舱,當(dāng)然這也是ffplay的默認(rèn)設(shè)置

ffplay 8703.mp4 -sync audio

指定了使用以視頻為基準(zhǔn)進(jìn)行音視頻同步的方式播 放視頻文件串绩。

ffplay 8703.mp4 -sync video

指定了使用外部時(shí)鐘作為基準(zhǔn)進(jìn)行音視頻同步的方 式,用來播放視頻文件芜壁。

ffplay 8703.mp4 -sync ext

ffprobe

  1. ffprobe查看一個(gè)音頻的文件
ffprobe ~/Desktop/809.mp3
截屏2019-11-23下午9.50.30.png
  1. ffprobe查看一個(gè)視頻的文件
ffprobe ~/Desktop/8703.mp4
截屏2019-11-23下午9.52.02.png

1)輸出格式信息format_name礁凡、時(shí)間長度duration高氮、文件 大小size、比特率bit_rate顷牌、流的數(shù)目nb_streams等剪芍。

ffprobe -show_format 8703.mp4

2)以JSON格式的形式輸出具體每一個(gè)流最詳細(xì)的信 息,視頻中會(huì)有視頻的寬高信息窟蓝、是否有b幀罪裹、視頻幀的總數(shù)目、視頻 的編碼格式运挫、顯示比例状共、比特率等信息,音頻中會(huì)有音頻的編碼格式谁帕、 表示格式口芍、聲道數(shù)、時(shí)間長度雇卷、比特率、幀的總數(shù)目等信息颠猴。

ffprobe -print_format json -show_streams 8704.mp4

3)顯示幀信息的命令

ffprobe -show_frames sample.mp4

4)查看包信息的命令

ffprobe -show_packets sample.mp4

ffmpeg使用

(1)剪切一段媒體文件关划,可以是音頻或者視頻文件

將文件input.mp4從第50s開始剪切20s的時(shí)間,輸出到文件 output.mp4中翘瓮,其中-ss指定偏移時(shí)間(time Offset)贮折,-t指定的時(shí)長 (duration)。

ffmpeg -i input.mp4 -ss 00:00:50.0 -codec copy -t 20 output.mp4

(2)視頻文件切割為多個(gè)文件

ffmpeg -i input.mp4 -t 00:00:50 -c copy small-1.mp4 -ss 00:00:50 -codec copy small-2.mp4

(3)提取一個(gè)視頻文件中的音頻文件

ffmpeg -i input.mp4 -vn -acodec copy output.m4a

(4)使一個(gè)視頻中的音頻靜音资盅,即只保留視頻

ffmpeg -i input.mp4 -an -vcodec copy output.mp4

(5)從MP4文件中抽取視頻流導(dǎo)出為裸H264數(shù)據(jù)

ffmpeg -i output.mp4 -an -vcodec copy -bsf:v h264_mp4toannexb output.h264

(6)使用AAC音頻數(shù)據(jù)和H264的視頻生成MP4文件

ffmpeg -i test.aac -i test.h264 -acodec copy -bsf:a aac_adtstoasc -vcodec copy -f
mp4 output.mp4

(7)音頻文件的編碼格式做轉(zhuǎn)換

ffmpeg -i input.wav -acodec libfdk_aac output.aac

(8)從WAV音頻文件中導(dǎo)出PCM裸數(shù)據(jù)

導(dǎo)出用16個(gè)bit來表示一個(gè)sample的PCM數(shù)據(jù)了调榄,并且每 個(gè)sample的字節(jié)排列順序都是小尾端表示的格式,聲道數(shù)和采樣率使用 的都是原始WAV文件的聲道數(shù)和采樣率的PCM數(shù)據(jù)呵扛。

ffmpeg -i input.wav -acodec pcm_s16le -f s16le output.pcm

(9)重新編碼視頻文件每庆,復(fù)制音頻流,同時(shí)封裝到MP4格式的文件中

ffmpeg -i input.flv -vcodec libx264 -acodec copy output.mp4

(10)將一個(gè)MP4格式的視頻轉(zhuǎn)換成為gif格式的動(dòng)圖

按照分辨比例不動(dòng)寬度改為100(使用VideoFilter的 scaleFilter)今穿,幀率改為10(-r)缤灵,只處理前5秒鐘(-t)的視頻,生成 gif蓝晒。

ffmpeg -i input.mp4 -vf scale=100:-1 -t 5 -r 10 image.gif

(11)將一個(gè)視頻的畫面部分生成圖片, 提取幀圖片

每4秒鐘截取一幀視頻畫面生成一張圖片腮出,生成的圖片從 frames_0001.png開始一直遞增下去。

ffmpeg -i output.mp4 -r 0.25 frames_%04d.png

(12)使用一組圖片可以組成一個(gè)gif

ffmpeg -i frames_%04d.png -r 5 output.gif

(13)將兩路聲音進(jìn)行合并芝薇,比如要給一段聲音加上背景音樂

ffmpeg -i vocal.wav -i accompany.wav -filter_complex
amix=inputs=2:duration=shortest output.wav

(14)為視頻增加水印效果

main_w代表主視頻寬度胚嘲, overlay_w代表水印寬度,main_h代表主視頻高度洛二,overlay_h代表水印高度馋劈。

ffmpeg -i input.mp4 -i changba_icon.png -filter_complex
'[0:v][1:v]overlay=main_w-overlay_w-10:10:1[out]' -map '[out]' output.mp4

(15)將一段視頻推送到流媒體服務(wù)器上

rtmp://xxx代表流媒體服務(wù)器的地址攻锰,加上-re參數(shù)代 表將實(shí)際媒體文件的播放速度作為推流速度進(jìn)行推送。

ffmpeg -re -i input.mp4 -acodec copy -vcodec copy -f flv rtmp://xxx

(16)將流媒體服務(wù)器上的流dump到本地

http://xxx/xxx.flv 代表一個(gè)可以訪問的視頻網(wǎng)絡(luò)地 址侣滩,可按照復(fù)制視頻流格式和音頻流格式的方式口注,將文件下載到本地的 output.flv媒體文件中。

ffmpeg -i http://xxx/xxx.flv -acodec copy -vcodec copy -f flv output.flv

ffmpeg編碼支持查看

首先下載源碼https://github.com/FFmpeg/FFmpeg, 切換到源碼目錄
(1)編碼器支持

./configure --list-encoders

(2)解碼器支持

./configure --list-decoders       

(3)封裝支持

FFmpeg的封裝( Muxing)是指將壓縮后的編碼封裝到一個(gè)容器格式中君珠,如果要查
看FFmpeg源代碼中都可以支持哪些容器格式寝志,可以通過命令./configure --list-muxers查看

./configure --list-muxers

(4)解封裝支持

FFmpeg的解封裝(Demuxing)是指將讀人的容器格式拆解開,將里面壓縮的音頻流策添、
視頻流材部、字幕流、數(shù)據(jù)流等提取出來唯竹,如果要查看FFmpeg的源代碼中都可以支持哪些輸
人的容器格式乐导,可以通過命令./configure --ist- demuxers來查看:

./configure --list-demuxers

(5)通信協(xié)議支持

FFmpeg不僅僅支持本地的多媒體處理,而且還支持網(wǎng)絡(luò)流媒體的處理浸颓,支持的網(wǎng)絡(luò)
流媒體協(xié)議相對來說也很全面物臂,可以通過命令./configure --list- protocols查看

./configure --list-protocols
截屏2019-11-24下午7.18.52.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市产上,隨后出現(xiàn)的幾起案子棵磷,更是在濱河造成了極大的恐慌,老刑警劉巖晋涣,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仪媒,死亡現(xiàn)場離奇詭異,居然都是意外死亡谢鹊,警方通過查閱死者的電腦和手機(jī)算吩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佃扼,“玉大人偎巢,你說我怎么就攤上這事∷伤唬” “怎么了艘狭?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長翠订。 經(jīng)常有香客問我巢音,道長,這世上最難降的妖魔是什么尽超? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任官撼,我火速辦了婚禮,結(jié)果婚禮上似谁,老公的妹妹穿的比我還像新娘傲绣。我一直安慰自己掠哥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布秃诵。 她就那樣靜靜地躺著续搀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菠净。 梳的紋絲不亂的頭發(fā)上禁舷,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機(jī)與錄音毅往,去河邊找鬼牵咙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛攀唯,可吹牛的內(nèi)容都是我干的洁桌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼侯嘀,長吁一口氣:“原來是場噩夢啊……” “哼另凌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起戒幔,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤途茫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后溪食,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娜扇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年错沃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雀瓢。...
    茶點(diǎn)故事閱讀 40,021評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡枢析,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刃麸,到底是詐尸還是另有隱情醒叁,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布泊业,位于F島的核電站把沼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吁伺。R本人自食惡果不足惜饮睬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望篮奄。 院中可真熱鬧捆愁,春花似錦割去、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至菩帝,卻和暖如春咖城,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胁附。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工酒繁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人控妻。 一個(gè)月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓州袒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弓候。 傳聞我的和親對象是個(gè)殘疾皇子郎哭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容