FFmpeg常用命令行

  1. 分離視頻音頻流
    ffmpeg -i input_file -vcodec copy -an output_file_video  //分離視頻流ffmpeg -i ffmpeg -i input_file -acodec copy -vn output_file_audio  //分離音頻流

  2. 視頻解復(fù)用
    ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
    ffmpeg –i test.avi –vcodec copy –an –f m4v test.264

  3. 視頻轉(zhuǎn)碼
    ffmpeg –i test.mp4 –vcodec h264 –s 352:278 –an –f m4v test.264

  • 轉(zhuǎn)換視頻分辯率
    ffmpeg -i input.mp4 -vf scale=1080:1920 output.mp4

  • 轉(zhuǎn)碼為碼流原始文件
    ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352:278 –an –f m4v test.264 //轉(zhuǎn)碼

  • 為碼流原始文件
    ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //轉(zhuǎn)碼為封裝文件

    說明:-bf B幀數(shù)目控制,-g 關(guān)鍵幀間隔控制,-s 分辨率控制

  1. 視頻剪切
    ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取圖片
    ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切視頻//-r 提取圖像的頻率狈蚤,-ss 開始時間,-t 持續(xù)時間

  2. 轉(zhuǎn)視頻格式
    ffmpeng -i source.mp4 -c:v libx264 -crf 24 destination.flv

  3. ffmpeg 把文件當(dāng)做直播推送至服務(wù)器 (RTMP + FLV)
    ffmpeg - re -i demo.mp4 -c copy - f flv rtmp://w.gslb.letv/live/streamid

  4. 將直播的媒體保存到本地
    ffmpeg -i rtmp://r.glsb.letv/live/streamid -c copy streamfile.flv

  5. 將一個直播流带族,視頻改用h264壓縮,音頻改用faac壓縮蟀给,送至另一個直播服務(wù)器
    ffmpeg -i rtmp://r.glsb.letv/live/streamidA -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://w.glsb.letv/live/streamb

  6. 提取視頻中的音頻,并保存為mp3 然后輸出
    ffmpeg -i input.avi -b:a 128k output.mp3

  7. 合成視頻和音頻
    ffmpeg -i son.wav -i video_origine.avi video_finale.mpg

  8. 將.avi轉(zhuǎn)成.flv
    ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv

  1. 從flv提取mp3
    ffmpeg -i source.flv -ab 128k dest.mp3

13蝙砌、將文件當(dāng)做直播送至live

ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName

  1. 將直播媒體保存至本地文件

ffmpeg -i rtmp://server/live/streamName -c copy dump.flv

  1. 將其中一個直播流,視頻改用h264壓縮跋理,音頻不變择克,送至另外一個直播服務(wù)流

ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream

  1. 將其中一個直播流,視頻改用h264壓縮前普,音頻改用faac壓縮肚邢,送至另外一個直播服務(wù)流

ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream

  1. 將其中一個直播流,視頻不變拭卿,音頻改用faac壓縮骡湖,送至另外一個直播服務(wù)流

ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream

  1. 將一個高清流,復(fù)制為幾個不同視頻清晰度的流重新發(fā)布峻厚,其中音頻不變

ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec copy -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec copy -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec copy -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k

  1. 功能一樣响蕴,只是采用-x264opts選項

ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a copy -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a copy -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a copy -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k

  1. 將當(dāng)前攝像頭及音頻通過DSSHOW采集,視頻h264惠桃、音頻faac壓縮后發(fā)布

ffmpeg -r 25 -f dshow -s 640×480 -i video=”video source name”:audio=”audio source name” -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name

  1. 視頻轉(zhuǎn)換
    比如一個avi文件浦夷,想轉(zhuǎn)為mp4,或者一個mp4想轉(zhuǎn)為ts辜王。
    ffmpeg -i input.avi output.mp4
    ffmpeg -i input.mp4 output.ts

  2. 提取音頻
    ffmpeg -i test.mp4 -acodec copy -vn output.aac
    上面的命令劈狐,默認mp4的audio codec是aac,如果不是,可以都轉(zhuǎn)為最常見的aac誓禁。
    ffmpeg -i test.mp4 -acodec aac -vn output.aac

  3. 提取視頻
    ffmpeg -i input.mp4 -vcodec copy -an output.mp4

  4. 視頻剪切
    下面的命令懈息,可以從時間為00:00:15開始肾档,截取5秒鐘的視頻摹恰。
    ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4
    -ss表示開始切割的時間辫继,-t表示要切多少。上面就是從15秒開始俗慈,切5秒鐘出來姑宽。

  5. 碼率控制
    碼率控制對于在線視頻比較重要。因為在線視頻需要考慮其能提供的帶寬闺阱。

那么炮车,什么是碼率?很簡單:
bitrate = file size / duration
比如一個文件20.8M酣溃,時長1分鐘瘦穆,那么,碼率就是:
biterate = 20.8M bit/60s = 20.810241024*8 bit/60s= 2831Kbps
一般音頻的碼率只有固定幾種赊豌,比如是128Kbps扛或,
那么,video的就是
video biterate = 2831Kbps -128Kbps = 2703Kbps碘饼。

那么ffmpeg如何控制碼率熙兔。
ffmpg控制碼率有3種選擇,-minrate -b:v -maxrate
-b:v主要是控制平均碼率艾恼。
比如一個視頻源的碼率太高了住涉,有10Mbps,文件太大钠绍,想把文件弄小一點舆声,但是又不破壞分辨率。
ffmpeg -i input.mp4 -b:v 2000k output.mp4
上面把碼率從原碼率轉(zhuǎn)成2Mbps碼率柳爽,這樣其實也間接讓文件變小了纳寂。目測接近一半。
不過泻拦,ffmpeg官方wiki比較建議毙芜,設(shè)置b:v時,同時加上 -bufsize
-bufsize 用于設(shè)置碼率控制緩沖器的大小争拐,設(shè)置的好處是腋粥,讓整體的碼率更趨近于希望的值,減少波動架曹。(簡單來說隘冲,比如1 2的平均值是1.5, 1.49 1.51 也是1.5, 當(dāng)然是第二種比較好)
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k output.mp4

-minrate -maxrate就簡單了绑雄,在線視頻有時候展辞,希望碼率波動,不要超過一個閾值万牺,可以設(shè)置maxrate罗珍。
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k -maxrate 2500k output.mp4

  1. 視頻編碼格式轉(zhuǎn)換
    比如一個視頻的編碼是MPEG4洽腺,想用H264編碼,咋辦覆旱?
    ffmpeg -i input.mp4 -vcodec h264 output.mp4
    相反也一樣
    ffmpeg -i input.mp4 -vcodec mpeg4 output.mp4

當(dāng)然了蘸朋,如果ffmpeg當(dāng)時編譯時,添加了外部的x265或者X264扣唱,那也可以用外部的編碼器來編碼藕坯。(不知道什么是X265,可以 Google一下噪沙,簡單的說炼彪,就是她不包含在ffmpeg的源碼里,是獨立的一個開源代碼正歼,用于編碼HEVC霹购,ffmpeg編碼時可以調(diào)用它。當(dāng)然 了朋腋,ffmpeg自己也有編碼器)
ffmpeg -i input.mp4 -c:v libx265 output.mp4
ffmpeg -i input.mp4 -c:v libx264 output.mp4

  1. 過濾器的使用
  • 將輸入的1920x1080縮小到960x540輸出:
    ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
    //ps: 如果540不寫齐疙,寫成-1,即scale=960:-1, 那也是可以的旭咽,ffmpeg會通知縮放濾鏡在輸出時保持原始的寬高比贞奋。

  • 為視頻添加logo

比如,我有這么一個圖片

logo_white.png

ffmpeg命令添加文字水印
ffmpeg -i balabalayingzhihua1.mp4 -vf "drawtext=fontfile=simhei.ttf:textfile=textfile.txt:x=1590:y=1020:fontsize=24:fontcolor=white@0.9:shadowy=2" balabalayingzhihua12.mp4

相關(guān)說明:
1.drawtext必須依賴libfreetype畫字庫穷绵,libfontconfig字體庫兩個庫
scale分辨率filter轿塔,overlay圖片水印filter
2.文字水印的話,文字水印必須是utf8編碼的仲墨,不然會是亂碼

想要貼到一個視頻上勾缭,那可以用如下命令:
./ffmpeg -i input.mp4 -i logo.png -filter_complex overlay output.mp4

給指定位置添加水印:

$ ffmpeg -i /Users/nenhall_work/Movies/I’m-so-sick-1080P—Apink_m.mp4 -vf 
"movie=/Users/nenhall_work/Desktop/logo_white.png[watermark];[in][watermark]overlay=50:50:1[out]" 
-acodec copy -vcodec copy /Users/nenhall_work/Movies/I’m-so-sick-1080P—Apink_m2.mp4

overlay=50:50:1代表x目养,y的位置俩由,第三個參數(shù)為1,表示支持透明水印癌蚁。使用透明的png圖片進行視頻編碼后幻梯,成功獲得帶透明水印的視頻,并且畫質(zhì)也比較好努释,
-acodec copy -vcodec copy表示保持音視頻編碼不變
-vf “…” 中間便是水印處理參數(shù)碘梢,movie是指圖片水印路徑,搭配overlay一起使用

結(jié)果如下所示:

logo2

要貼到其他地方伐蒂?看下面:
右上角:
./ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w output.mp4
左下角:
./ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=0:H-h output.mp4
右下角:
./ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w:H-h output.mp4

參數(shù)說明

  • 去掉視頻的logo

語法:-vf delogo=x:y:w:h[:t[:show]]
x:y 離左上角的坐標
w:h logo的寬和高
t: 矩形邊緣的厚度默認值4
show:若設(shè)置為1有一個綠色的矩形煞躬,默認值0。

ffmpeg -i input.mp4 -vf delogo=0:0:220:90:100:1 output.mp4
結(jié)果如下所示:

logo3

  1. 截取視頻圖像
    ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
    -r 表示每一秒幾幀
    -q:v表示存儲jpeg的圖像質(zhì)量,一般2是高質(zhì)量恩沛。
    如此在扰,ffmpeg會把input.mp4,每隔一秒复唤,存一張圖片下來健田。假設(shè)有60s烛卧,那會有60張佛纫。

可以設(shè)置開始的時間,和你想要截取的時間总放。
ffmpeg -i input.mp4 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
-ss 表示開始時間
-t 表示共要多少時間呈宇。
如此,ffmpeg會從input.mp4的第20s時間開始局雄,往下10s甥啄,即20~30s這10秒鐘之間,每隔1s就抓一幀炬搭,總共會抓10幀蜈漓。

29.視頻轉(zhuǎn)成圖片
ffmpeg -i video.mp4 /outputPath/video-frame-%d.png

fmpeg/ffprobe查看音視頻文件信息并輸出為json格式
ffprobe -v quiet -print_format json -show_format -show_streams 文件路
eg.:ffprobe -v quiet -print_format json -show_format -show_streams /Users/xiud/Downloads/IMG_1070.mp4

30.倒序播放

//reversed.mp4: 處理后的視頻輸出
1.視頻倒放,無音頻
ffmpeg -i input.mp4 -filter_complex 
"[0:v]reverse[v]" -map "[v]" -preset superfast reversed.mp4

2.視頻倒放宫盔,音頻不變
ffmpeg -i input.mp4 -vf reverse reversed.mp4

3.音頻倒放融虽,視頻不變
ffmpeg -i input.mp4 -c:v copy -af areverse reversed_audio.mp4

4.音視頻同時倒放
ffmpeg -i input.mp4 -vf reverse -af areverse -preset superfast reversed.mp4

部份內(nèi)容引用:
FFmpeg ffmpeg 常用命令
短視頻SDK基本免費功能實現(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市灼芭,隨后出現(xiàn)的幾起案子有额,更是在濱河造成了極大的恐慌,老刑警劉巖彼绷,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巍佑,死亡現(xiàn)場離奇詭異,居然都是意外死亡寄悯,警方通過查閱死者的電腦和手機萤衰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猜旬,“玉大人腻菇,你說我怎么就攤上這事∥舨觯” “怎么了筹吐?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秘遏。 經(jīng)常有香客問我丘薛,道長,這世上最難降的妖魔是什么邦危? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任洋侨,我火速辦了婚禮舍扰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘希坚。我一直安慰自己边苹,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布裁僧。 她就那樣靜靜地躺著个束,像睡著了一般。 火紅的嫁衣襯著肌膚如雪聊疲。 梳的紋絲不亂的頭發(fā)上茬底,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音获洲,去河邊找鬼阱表。 笑死,一個胖子當(dāng)著我的面吹牛贡珊,可吹牛的內(nèi)容都是我干的最爬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼门岔,長吁一口氣:“原來是場噩夢啊……” “哼爱致!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起固歪,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蒜鸡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后牢裳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逢防,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年蒲讯,在試婚紗的時候發(fā)現(xiàn)自己被綠了忘朝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡判帮,死狀恐怖局嘁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晦墙,我是刑警寧澤悦昵,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站晌畅,受9級特大地震影響但指,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一棋凳、第九天 我趴在偏房一處隱蔽的房頂上張望拦坠。 院中可真熱鬧,春花似錦剩岳、人聲如沸贞滨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晓铆。三九已至,卻和暖如春莫湘,著一層夾襖步出監(jiān)牢的瞬間尤蒿,已是汗流浹背郑气。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工幅垮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尾组。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓忙芒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讳侨。 傳聞我的和親對象是個殘疾皇子呵萨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

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

  • 前言 如此強大的FFmpeg,能夠?qū)崿F(xiàn)視頻采集跨跨、視頻格式轉(zhuǎn)化潮峦、視頻截圖、視頻添加水印勇婴、視頻切片忱嘹、視頻錄制、視頻推流...
    騷之哈塞給閱讀 25,770評論 6 39
  • 1.分離視頻音頻流 ffmpeg -i input_file -vcodec copy -an output_fi...
    XLAccount閱讀 3,082評論 0 8
  • 前言 如此強大的FFmpeg耕渴,能夠?qū)崿F(xiàn)視頻采集拘悦、視頻格式轉(zhuǎn)化、視頻截圖橱脸、視頻添加水印础米、視頻切片、視頻錄制添诉、視頻推流...
    RichyLeo閱讀 17,409評論 1 22
  • 前言 如此強大的FFmpeg屁桑,能夠?qū)崿F(xiàn)視頻采集、視頻格式轉(zhuǎn)化栏赴、視頻截圖蘑斧、視頻添加水印、視頻切片、視頻錄制乌叶、視頻推流...
    sillen閱讀 5,387評論 2 45
  • 0 概述 FFmpeg是一套領(lǐng)先的音視頻多媒體處理開源框架盆偿,采用LGPL或GPL許可證。它提供了對音視頻的采集准浴、編...
    但行耕者閱讀 6,819評論 0 19