FFmpeg使用方法

官方文檔:ffmpeg Documentation

查看支持的硬件加速方法

ffmpeg -hwaccels
結(jié)果包含:
Hardware acceleration methods:
cuda
dxva2
qsv
d3d11va
opencl
vulkan

GPU加速轉(zhuǎn)換視頻

ffmpeg -y -vsync 0 -hwaccel cuda -i input.mp4 -vf scale=960:-1 -c:a copy -c:v h264_nvenc -b:v 10M output.mp4
-y 若輸出文件存在則覆蓋
-vsync 0 passthrough: 時間戳不做任何改變犬第,demuxer中是什么,直接傳給muxer
-hwaccel cuda 使用cuda硬件加速
-i input.mp4 輸入視頻文件
-vf scale=960:-1 改變視頻尺寸,-1表示按比例變化
-c:a分別代表視頻,音頻格式,copy代表原視頻格式
-c:v h264_nven NVIDIA硬件解碼
-b:v 10M 輸出視頻碼率單位K,M

改變視頻音頻速度

視頻速度提高一倍荷愕,音頻不變,多余幀丟棄
ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
視頻速度提高一倍,音頻不變柜某,提高幀率避免丟幀(如原來30幀提高到60幀)
ffmpeg -i input.mkv -r 60 -filter:v "setpts=0.5*PTS" output.mkv
濾波器通過改變每個視頻幀的呈現(xiàn)時間戳(PTS)來工作,如果要降低速度敛纲,則使用大于1的PTS喂击。
音頻速度提高一倍,視頻不變
ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
atempo過濾器限于使用介于0.5和2.0之間的值(因此它可以將其減慢到不小于原始速度的一半淤翔,并且速度不超過輸入的兩倍)笙什。如果你需要,你可以通過串聯(lián)多個atempo過濾器來克服這個限制慕嚷,如:
ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv
使用復(fù)雜的濾鏡侈贷,同時加速視頻和音頻
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

合并多個視頻

使用 FFmpeg concat 分離器
這種方法成功率很高,也是最好的抡谐,但是需要 FFmpeg 1.1 以上版本
先創(chuàng)建一個文本文件 filelist.txt:
file 'input1.mkv'
file 'input2.mkv'
file 'input3.mkv'
……
命令:
ffmpeg -f concat -i filelist.txt -c copy output.mkv
注意:
輸出文件的擴(kuò)展名必須與輸入文件相同裁奇。
使用 FFmpeg concat 分離器時,如果文件名有奇怪的字符麦撵,要在 filelist.txt 中轉(zhuǎn)義刽肠。

合并視頻和音頻

視頻中不包含音頻,并且視頻和音頻長度相同
ffmpeg -i video.mp4 -i audio.mp3 -vcodec copy -acodec aac -strict experimental output.mp4
視頻中包含音頻免胃,用新的音頻替換原音頻
ffmpeg -i video.mp4 -i audio.mp3 -vcodec copy -acodec aac -strict experimental -map 0:v:0 -map 1:a:0?output.mp4
視頻和音頻長度不同音五,視頻短于音頻,-ss指定音頻開始時間羔沙,用視頻長度截取音頻
ffmpeg -i video.mp4?-ss 00:04:00?-i audio.mp3 -vcodec copy -acodec aac -shortest output.mp4
視頻和音頻長度不同放仗,音頻短于視頻,-ss指定音頻開始時間撬碟,添加靜默填充
ffmpeg -i video.mp4?-ss 00:04:00-i audio.mp3 -vcodec copy -acodec aac?-af apad -shortest?output.mp4

視頻轉(zhuǎn)換為GIF

ffmpeg -ss 10 -t 5 -i input.mp4 -vf "fps=24,scale=320:-1:flags=lanczos,format=rgb24,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif
-ss 起始時間诞挨;-t 持續(xù)時間;fps 輸出幀率呢蛤;scale 輸出尺寸惶傻;flags 縮放方法

序列圖片轉(zhuǎn)換為視頻

首先對序列圖片進(jìn)行重命名,文件名中需要有數(shù)字序列標(biāo)記圖片的先后順序其障,如pic01.jpg银室、pic02.jpg……pic**.jpg。
按照默認(rèn)參數(shù)將序列圖片轉(zhuǎn)換為視頻,默認(rèn)視頻幀率25fps蜈敢,采用h264編碼辜荠,圖片原始分辨率。
ffmpeg -f image2 -i pic%d.jpg?-profile:v high -level 3.0 -pix_fmt yuv420p output.mp4
%d為數(shù)字占位符抓狭,前導(dǎo)零填充如001伯病、002、003可以表示為%03d否过,它與 C printf 函數(shù)支持的語法相同午笛。
常用參數(shù):
-r 調(diào)整幀率
需要注意-r參數(shù)的位置,在-i pic%d.jpg前面和在后面的效果是不一樣的苗桂。放在-i后面只會改變輸出的視頻幀率药磺,而輸入的還是默認(rèn)值25 ,例如ffmpeg -f image2 -i pic%d.jpg -r 10 output.mp4煤伟,會先按照25fps生成視頻癌佩,但視頻的播放幀率會減小到10fps。
-b:v 調(diào)整視頻碼率
改變碼率會影響到視頻清晰度便锨,但并不意味著高碼率的視頻一定比低碼率的視頻清晰度更高围辙,這還取決于視頻編碼格式,比如h265編碼可以用更小的碼率生成h264同等的視頻質(zhì)量鸿秆,av1酌畜、v8怎囚、v9等編碼也優(yōu)于h264卿叽。
-crf 調(diào)整視頻質(zhì)量
用以平衡視頻質(zhì)量和文件大小的參數(shù),F(xiàn)FMPEG里取值范圍為0-51恳守,取值越高內(nèi)容損失越多考婴,視頻質(zhì)量更差。 ffmpeg的默認(rèn)值是23催烘,建議的取值范圍是17-28沥阱。
-c:v 調(diào)整視頻的編碼格式
目前ffmpeg針對于mp4默認(rèn)使用的是h264,可以使用-c:v libx265生成同等質(zhì)量伊群,但文件更小的h265視頻考杉。也可以使用-c:v libvpx -c:v libvpx-vp9分別生成v8和v9編碼的webm文件。
-vf scale 調(diào)整視頻分辨率
使用-s 640x480會將視頻直接調(diào)整為640x480的分辨率舰始,如果原始圖片不是4:3會對原始圖像做拉伸變形崇棠。可以使用下面的命令等比例縮放
-vf scale=640:-1????????固定寬度進(jìn)行等比例縮放
-vf scale=-1:480? ? ? ? 固定高度進(jìn)行等比例縮放
以上幾個參數(shù)不僅限于圖片轉(zhuǎn)視頻丸卷,視頻轉(zhuǎn)視頻時也可以使用枕稀。

提取音頻

提取音頻且不對其進(jìn)行重新編碼
ffmpeg -i videoWithAudio.mp4 -vn -acodec copy onlyAudio.aac
提取音頻并重新編碼
ffmpeg -i videoWithAudio.mp4 -vn -c:a libmp3lame -q:a 1 onlyAudio.mp3
該命令從視頻中提取音頻,然后使用libmp3lame將音頻編碼為不同的質(zhì)量,并將其存儲為mp3文件萎坷。
-q:a表示質(zhì)量(在LAME文檔中定義[1])凹联,質(zhì)量分布范圍為0~6,其中0表示高質(zhì)量音頻哆档,6表示低質(zhì)量音頻蔽挠。
截取音頻片段
ffmpeg -i input.mp3 -ss 00:00:10 -t 00:00:10 output.mp3
-ss 起始時間;-t 持續(xù)時間虐呻;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末象泵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子斟叼,更是在濱河造成了極大的恐慌偶惠,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朗涩,死亡現(xiàn)場離奇詭異忽孽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谢床,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門兄一,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人识腿,你說我怎么就攤上這事出革。” “怎么了渡讼?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵骂束,是天一觀的道長。 經(jīng)常有香客問我成箫,道長展箱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任蹬昌,我火速辦了婚禮混驰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘皂贩。我一直安慰自己栖榨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布明刷。 她就那樣靜靜地躺著婴栽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪遮精。 梳的紋絲不亂的頭發(fā)上居夹,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天败潦,我揣著相機(jī)與錄音,去河邊找鬼准脂。 笑死劫扒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狸膏。 我是一名探鬼主播沟饥,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼湾戳!你這毒婦竟也來了贤旷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤砾脑,失蹤者是張志新(化名)和其女友劉穎幼驶,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體韧衣,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盅藻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了畅铭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氏淑。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖硕噩,靈堂內(nèi)的尸體忽然破棺而出假残,到底是詐尸還是另有隱情,我是刑警寧澤炉擅,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布辉懒,位于F島的核電站,受9級特大地震影響坑资,放射性物質(zhì)發(fā)生泄漏耗帕。R本人自食惡果不足惜穆端,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一袱贮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧体啰,春花似錦攒巍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至沽翔,卻和暖如春兢孝,著一層夾襖步出監(jiān)牢的瞬間窿凤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工跨蟹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雳殊,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓窗轩,卻偏偏與公主長得像夯秃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子痢艺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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