使用ffmpeg轉(zhuǎn)換視頻為gif
ffmpeg 是一個自由軟件航徙,可以運行音頻和視頻多種格式的錄影瞭郑、轉(zhuǎn)換勿锅、流功能撬陵,包含了libavcodec——這是一個用于多個項目中音頻和視頻的解碼器庫,以及l(fā)ibavformat——一個音頻與視頻格式轉(zhuǎn)換庫泡态。 “FFmpeg”這個單詞中的“FF”指的是“Fast Forward”
在Ubuntu上安裝ffmpeg
sudo apt-get install ffmpeg
- 將視頻 MP4 轉(zhuǎn)化為 GIF
ffmpeg -i small.mp4 small.gif
- 將視頻中的一部分轉(zhuǎn)換為GIF
// 從視頻中第二秒開始搂漠,截取時長為3秒的片段轉(zhuǎn)化為 gif
ffmpeg -t 3 -ss 00:00:02 -i small.mp4 small-clip.gif
- 轉(zhuǎn)化高質(zhì)量 GIF
// 默認(rèn)轉(zhuǎn)化是中等質(zhì)量模式,若要轉(zhuǎn)化出高質(zhì)量的 gif某弦,可以修改比特率
ffmpeg -i small.mp4 -b 2048k small.gif
- 將 GIF 轉(zhuǎn)化為 MP4
ffmpeg -f gif -i animation.gif animation.mp4
也可以將 gif 轉(zhuǎn)為其他視頻格式
ffmpeg -f gif -i animation.gif animation.mpeg
ffmpeg -f gif -i animation.gif animation.webm
- 加倍速播放視頻
ffmpeg -i input.mov -filter:v "setpts=0.5*PTS" output.mov
定義幀率 16fps:
ffmpeg -i input.mov -r 16 -filter:v "setpts=0.125*PTS" -an output.mov
- 慢倍速播放視頻
ffmpeg -i input.mov -filter:v "setpts=2.0*PTS" output.mov
- 靜音視頻(移除視頻中的音頻)
ffmpeg -i input.mov -an mute-output.mov
-an 就是禁止音頻輸出
- 視頻提取幀
// 將視頻提取10幀
ffmpeg -i index.mp4 -r 10 %03d.jpg;
- 主要參數(shù)
-i——設(shè)置輸入檔名桐汤。
-f——設(shè)置輸出格式。
-y——若輸出文件已存在時則覆蓋文件靶壮。
-fs——超過指定的文件大小時則結(jié)束轉(zhuǎn)換怔毛。
-ss——從指定時間開始轉(zhuǎn)換。
-t從-ss時間開始轉(zhuǎn)換(如-ss 00:00:01.00 -t 00:00:10.00即從00:00:01.00開始到00:00:11.00)腾降。
-title——設(shè)置標(biāo)題拣度。
-timestamp——設(shè)置時間戳。
-vsync——增減Frame使影音同步螃壤。 - 視頻參數(shù)
-b:v——設(shè)置視頻流量抗果,默認(rèn)為200Kbit/秒。(單位請引用下方注意事項)
-r——設(shè)置幀率值奸晴,默認(rèn)為25冤馏。
-s——設(shè)置畫面的寬與高。
-aspect——設(shè)置畫面的比例寄啼。
-vn——不處理視頻逮光,于僅針對聲音做處理時使用。
-vcodec( -c:v )——設(shè)置視頻視頻編解碼器墩划,未設(shè)置時則使用與輸入文件相同之編解碼器涕刚。 - 聲音參數(shù)
-b:a——設(shè)置每Channel(最近的SVN版為所有Channel的總合)的流量。(單位請引用下方注意事項)
-ar——設(shè)置采樣率乙帮。
-ac——設(shè)置聲音的Channel數(shù)杜漠。
-acodec ( -c:a ) ——設(shè)置聲音編解碼器,未設(shè)置時與視頻相同,使用與輸入文件相同之編解碼器碑幅。
-an——不處理聲音戴陡,于僅針對視頻做處理時使用。
-vol——設(shè)置音量大小沟涨,256為標(biāo)準(zhǔn)音量恤批。(要設(shè)置成兩倍音量時則輸入512,依此類推裹赴。) - 注意事項
以-b:v及-b:a首選項流量時喜庞,根據(jù)使用的ffmpeg版本,須注意單位會有kbits/sec與bits/sec的不同棋返。(可用ffmpeg -h顯示說明來確認(rèn)單位延都。)
例如,單位為bits/sec的情況時睛竣,欲指定流量64kbps時需輸入 -b:a 64k晰房;單位為kbits/sec的情況時則需輸入 -b:a 64。
以-acodec及-vcodec所指定的編解碼器名稱射沟,會根據(jù)使用的ffmpeg版本而有所不同殊者。例如使用AAC編解碼器時,會有輸入aac與libfaac的情況验夯。此外猖吴,編解碼器有分為僅供解碼時使用與僅供編碼時使用,因此一定要利用ffmpeg -formats確認(rèn)輸入的編解碼器是否能運作挥转。
參考:
https://zh.wikipedia.org/wiki/FFmpeg
http://siwei.me/blog/posts/ffmpeg-useful-commands
http://note.rpsh.net/posts/2015/04/21/mac-osx-ffmpeg-mp4-gif-convert/
https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video