FFmpeg常用命令

記錄一下工作中常用的FFmpeg命令及其參數(shù)的解釋吼蚁,以例子的形式記錄刺下,某些參數(shù)可以組合使用免绿。詳細(xì)的用法請(qǐng)參考FFmpeg Documention浸剩。

查看可用編解碼器等信息

FFmpeg由于版本的不同,可支持的編解碼器的名稱及功能可能不一樣娄涩,遇到問(wèn)題時(shí)可以查一下

  • 可用的編解碼器
    ffmpeg –codecs
  • 可用的解碼器
    ffmpeg –decoders
  • 可用的編碼器
    ffmpeg –encoders
  • 可用的過(guò)濾器
    ffmpeg –filters
  • 可用的視頻格式
    ffmpeg –formats
  • 可用的協(xié)議
    ffmpeg -protocals

基礎(chǔ)用法

ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy -y -f mp4 OUTPUT
  • -i 源輸入窗怒,可以是文件,也可以是網(wǎng)絡(luò)源地址蓄拣,ffmpeg可以有多個(gè)輸入源扬虚,如ffmpeg -i INPUT -i INPUT -i INPUT ……
  • -map 指明對(duì)某個(gè)文件的某個(gè)流進(jìn)行操作,因?yàn)檩斎胛募梢杂卸鄠€(gè)弯蚜,文件也可以有多個(gè)音視頻流孔轴,-map 0表示對(duì)第一個(gè)文件的所有流進(jìn)行處理,-map 0:1表示對(duì)第一個(gè)文件的第二個(gè)流進(jìn)行處理碎捺,注意計(jì)數(shù)從0開(kāi)始
  • -c:v 指明輸出文件的視頻編碼路鹰,等同于-codec:v贷洲,等同于-vcodeclibx264即H.264編碼器晋柱,若不想對(duì)視頻重新編碼优构,即保持原視頻的編碼,則后面跟copy
  • -c:a 指明輸出文件的音頻編碼雁竞,用法同上钦椭,等同于-codec:a,等同于-acodec
  • -y 表示輸出時(shí)如果相同文件名的文件已經(jīng)存在碑诉,則直接覆蓋彪腔,不用詢問(wèn);相反-n表示遇到此情況時(shí)立即退出
  • -f 指明輸出文件的封裝格式进栽,如mp4德挣、flv

直接推流mp4文件

ffmpeg -re -i INPUT.mp4 -c copy -f flv rtmp://……
  • -c copy 表示音視頻保持原有編碼

本地文件重新編碼并同時(shí)進(jìn)行rtmp推流

ffmpeg -re -i INPUT -acodec aac -ac 2 -ar 44100 -ab 128k -vol 3000 -vcodec libx264 -vb 800k -s 360*640 -r 24 -b 928k -f flv rtmp://……
  • -re 表示以原生幀率讀取數(shù)據(jù)。一般情況下ffmpeg會(huì)以盡可能快的速度讀取數(shù)據(jù)快毛,所以推流文件的話要加上此參數(shù)格嗅,如果是轉(zhuǎn)推直播流的話,不用加此參數(shù)
  • -ac 設(shè)置音頻編碼聲道數(shù)
  • -ar 設(shè)置音頻編碼采樣率唠帝,單位kHz屯掖,如44100, 24000襟衰, 16000等
  • -ab 設(shè)置音頻碼率贴铜,也可以寫(xiě)作-b:a
  • -vol 設(shè)置音頻音量為原音頻的多少倍,3000表示為原來(lái)的3000%右蒲,即30倍
  • -vb 設(shè)置視頻碼率阀湿,等同于-b:v
  • -s 設(shè)置視頻分辨率赶熟,參數(shù)格式為w*hw×h
  • -r 設(shè)置幀率(fps)
  • -b 設(shè)置總碼率瑰妄,分別設(shè)置了音視頻碼率后通常省略

對(duì)視頻畫(huà)面旋轉(zhuǎn)90°

ffmpeg -i INPUT -acodec copy -vcodec libx264 -b 800k -vf transpose=1 OUTPUT
  • -vf 表示對(duì)視頻應(yīng)用Video Filter,可應(yīng)用多個(gè)filter映砖,中間用,隔開(kāi)并用""包起來(lái)
  • transpose Video Filter的一種间坐,表示對(duì)視頻畫(huà)面進(jìn)行旋轉(zhuǎn)、翻轉(zhuǎn)變換
    • transpose=0 表示先逆時(shí)針旋轉(zhuǎn)90°邑退,再垂直翻轉(zhuǎn)
L.R     L.l
. . ->  . .
l.r     R.r
  • transpose=1 表示順時(shí)針旋轉(zhuǎn)90°
L.R     l.L
. . ->  . .
l.r     r.R
  • transpose=2 表示逆時(shí)針旋轉(zhuǎn)90°
L.R     R.r
. . ->  . .
l.r     L.l
  • transpose=3 表示順時(shí)針旋轉(zhuǎn)90°竹宋,再垂直翻轉(zhuǎn)
L.R     r.R
. . ->  . .
l.r     l.L

修改視頻分辨率并添加黑邊

ffmpeg -i INPUT  -vf "scale=640:360,pad=640:1138:0:389:black" -acodec copy -vcodec libx264 -s 640*1138 -b 800k OUTPUT

現(xiàn)將視頻分辨率壓縮到640×360,再給視頻加上黑邊地技,最終視頻分辨率改為640×1138

  • scale Video Filter的一種蜈七,設(shè)置視頻分辨率,假設(shè)分辨率要設(shè)置成200×100莫矗,使用方法如下:
scale=200:100

等同于

scale=200x100

等同于

scale=w=200:h=100

當(dāng)寬或高的值為-1時(shí)飒硅,表示維持原有寬或高
還可以使用一些常量定義砂缩,iwih三娩、ow庵芭、oh,分別表示輸入寬雀监、輸入高双吆、輸出寬、輸出高会前,假設(shè)要縮小到原來(lái)的1/2好乐,則可以用

scale=iw/2:ih/2

假設(shè)要寬度變成原來(lái)的2/3,高度和最后的寬度一樣瓦宜,則可以用

scale=2/3*iw:ow
  • pad Video Filter的一種曹宴,設(shè)置視頻邊框,使用方法為
pad=w:h:x:y:color

w歉提、h表示輸出的寬笛坦、高,x苔巨、y表示原視頻畫(huà)面在最終輸出畫(huà)面中的左上角位置版扩,color表示邊框的顏色,默認(rèn)是black侄泽,其余顏色請(qǐng)參考FFmpeg顏色定義

裁減視頻畫(huà)面

ffmpeg -i INPUT -vf crop=995:1080:540:0 -acodec copy -vcodec libx264 -f mp4 OUTPUT
  • crop=w:h:x:y Video Filter的一種礁芦,表示裁切畫(huà)面,從(x, y)的位置開(kāi)始取w×h大小的畫(huà)面

截取視頻生成Gif

從視頻25s處開(kāi)始悼尾,截取10s長(zhǎng)度的畫(huà)面生成320x240大小柿扣、幀率為15fps的Gif

ffmpeg -ss 25 -t 10 -i INPUT -s 320x240 -f gif -r 15 OUTPUT.gif
  • -ss 表示從輸入文件開(kāi)始讀取的時(shí)間位置,也就是開(kāi)始截取的時(shí)間點(diǎn)闺魏,參數(shù)格式為HH:MM:SS.mmm未状,小時(shí)和分鐘可以省略,截取的時(shí)間點(diǎn)不是完全精準(zhǔn)的
  • -t 表示截取的時(shí)間長(zhǎng)度析桥,即duration司草,也可以使用-to,表示截取的截止時(shí)間點(diǎn)泡仗,配合-ss來(lái)定義截取的長(zhǎng)度
  • -r 表示輸出幀率

截取視頻內(nèi)任意時(shí)間點(diǎn)的一幀圖像保存為JPEG文件

ffmpeg -ss 16.1 -i INPUT -s 320x240 -vframes 1 -f image2 OUTPUT.jpeg
  • -vframes 設(shè)置要輸出的幀的個(gè)數(shù)埋虹,等同于-frames:v
  • -f image2 表示封裝格式為image2類型,image2為FFmpeg中的圖片封裝格式名稱

抽取幀序列娩怎,再生成Gif

從源視頻中每秒鐘抽取5幀圖像搔课,保存為一系列JPEG文件

ffmpeg -ss 25 -t 10 -i INPUT -r 5 -s 320x240 -f image2 D:\result-%03d.jpeg
  • D:\result-%03d.jpeg 自動(dòng)按序號(hào)命名輸出

將這一系列JPEG圖像合成為幀率5 fps的GIF文件

ffmpeg -f image2 -framerate 5 -i D:\result-%03d.jpeg OUTPUT.gif
  • -framerate 表示每秒讀取多少幀,與-r好像不同截亦,讀取圖片類型時(shí)最好用這個(gè)

生成高質(zhì)量Gif

上述方法生成的Gif畫(huà)質(zhì)比較一般爬泥,下面的方法可生成更高質(zhì)量的Gif旦事,windows平臺(tái)下將下面代碼存為bat文件執(zhí)行即可

@echo on
set start_time=00:00:10
set duration=5
set palette="D:\tmp\palette.png"
set filters="fps=15,scale=270:-1:flags=lanczos"
ffmpeg -v warning -ss %start_time% -t %duration% -i INPUT -vf "%filters%,palettegen" -y %palette%
ffmpeg -v warning -ss %start_time% -t %duration% -i INPUT -i %palette% -lavfi "%filters% [x]; [x][1:v] paletteuse" -y OUTPUT.gif
pause

中間要生成一個(gè)調(diào)色板文件D:\tmp\palette.png,再利用此調(diào)色板生成Gif急灭,具體原理請(qǐng)參閱使用FFmpeg處理高質(zhì)量GIF圖片

剪切視頻

ffmpeg -ss 00:00:20 -t 00:00:30 -i INPUT -c copy OUTPUT

精確剪切mp4視頻

ffmpeg -i input.mp4 -qscale 0 -intra temp.mp4
ffmpeg -ss 00:00:30 -vsync 0 -t 00:00:30 -i temp.mp4 -acodec libvo_aacenc -vcodec libx264 output.mp4
  • -qscale Use fixed quality scale (VBR)姐浮,即使用動(dòng)態(tài)碼率,值越小質(zhì)量越高
  • -intra 表示使用幀內(nèi)編碼
  • -vsync 視頻同步方法葬馋,0表示:Each frame is passed with its timestamp from the demuxer to the muxer.

將一張圖片轉(zhuǎn)成任意時(shí)長(zhǎng)的視頻

ffmpeg -loop 1 -i input.png -vcodec libx264 -vb 500k -s 480*640 -r 15 -t 10 ouput.mp4
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卖鲤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子畴嘶,更是在濱河造成了極大的恐慌蛋逾,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窗悯,死亡現(xiàn)場(chǎng)離奇詭異区匣,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蒋院,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門亏钩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人欺旧,你說(shuō)我怎么就攤上這事姑丑。” “怎么了辞友?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵栅哀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我称龙,道長(zhǎng)留拾,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任鲫尊,我火速辦了婚禮痴柔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘马昨。我一直安慰自己竞帽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布鸿捧。 她就那樣靜靜地躺著,像睡著了一般疙渣。 火紅的嫁衣襯著肌膚如雪匙奴。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天妄荔,我揣著相機(jī)與錄音泼菌,去河邊找鬼谍肤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哗伯,可吹牛的內(nèi)容都是我干的荒揣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼焊刹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼系任!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起虐块,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤俩滥,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后贺奠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體霜旧,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年儡率,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挂据。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡儿普,死狀恐怖棱貌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情箕肃,我是刑警寧澤婚脱,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站勺像,受9級(jí)特大地震影響障贸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吟宦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一篮洁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧殃姓,春花似錦袁波、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至踏幻,卻和暖如春枷颊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工夭苗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留信卡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓题造,卻偏偏與公主長(zhǎng)得像傍菇,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子界赔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

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

  • 寫(xiě)在前面: 今天往移動(dòng)硬盤上拷電影的時(shí)候忽然遇見(jiàn)文件過(guò)大無(wú)法拷貝的問(wèn)題丢习。因?yàn)橐粋€(gè)移動(dòng)硬盤如果分區(qū)為NTFS格式,那...
    vincentgemini閱讀 14,266評(píng)論 0 9
  • 1.分離視頻音頻流 ffmpeg -i input_file -vcodec copy -an output_fi...
    XLAccount閱讀 3,078評(píng)論 0 8
  • 這里通過(guò)軟件MediaInfo來(lái)查看視頻信息仔蝌。其中黃色為幀數(shù)泛领,紅色為比特率 基本用法: 1除來(lái)上面我們通過(guò)軟件來(lái)查...
    夏廣成閱讀 7,967評(píng)論 1 7
  • 雨中漫步,傘是移動(dòng)的風(fēng)景敛惊,你是孤寂的精靈渊鞋。 孤寂的是身影,放飛的是思緒瞧挤。風(fēng)是柔的锡宋,雨是綿的,你只是溫暖著一...
    楊禮生閱讀 649評(píng)論 0 5
  • 這個(gè)單元的內(nèi)容是-----價(jià)格特恬。 開(kāi)課前薛老師先要帶我們?nèi)タ磦€(gè)熱鬧执俩。是經(jīng)濟(jì)學(xué)史上非常重要的辯論,我們可以欣賞經(jīng)濟(jì)學(xué)...
    AmberShao閱讀 1,344評(píng)論 0 1