1.視頻的錄制
同時打開攝像頭跟麥克風奏属,進行錄制:點擊q進行退出
0:0仿村,前面為圖像設(shè)備,后面為聲音設(shè)備或舞。
ffmpeg -f avfoundation -framerate 30 -i "0:0" -s 320x240 cam2.mp4
如果只要聲音荆姆,則:
ffmpeg -f avfoundation -i ":0" sound.aac
或者:
ffmpeg -f avfoundation -i ":0" -acodec libmp3lame sound2.mp3
aac是音頻的一種編碼格式,我用的ffmpeg3.1.2會編碼成aac格式映凳,當然也可以指定編碼成mp3胆筒,但要借助libmp3lame這個組件。
想錄制屏幕诈豌,那只需要把-i "0"換成-i "1"了
2.從視頻中抽幾張圖
ffmpeg -ss 00:00:5 -i /moments.mp4 -vframes 1 -f image2 -y a.png
ss表示開始提取圖片的時間點仆救,既可以用時分秒方式,也可以是多少秒矫渔。如果使用到這個參數(shù)彤蔽,那應(yīng)該把它作為第一個參數(shù),因為可以讓FFmpeg提速庙洼。
i表示輸入文件铆惑,就是視頻文件。
vframes表示拿多少幀送膳,也就是多少張圖片员魏。注意,這個參數(shù)要放在-i參數(shù)之后叠聋。
f 表示提取出來的圖片的格式撕阎。
y 表示覆蓋已有同名的圖片。
ffmpeg -i xxx.mp4 -r 1 -y -f image2 -t 5 -s 240*320 pc%3d.jpg
r 表示每秒提取圖片的幀數(shù)碌补,即幀率虏束,默認是25fps,上面設(shè)置為一秒拿一張圖厦章。
t 表現(xiàn)提取持續(xù)多少秒镇匀,也可以用時分秒的格式來表示。
s 表出來的圖片的尺寸袜啃。
3%d表示以001汗侵、002這樣的格式來命名輸出的圖片。
如果我發(fā)現(xiàn)視頻某個時間點有美女的話,那我就可以用ss從這個時間點再前一點晰韵,然后用t來持續(xù)提取5秒发乔,或者用vframes來提取幾十張,那就準沒漏了雪猪!也就是這樣:
ffmpeg -ss 10 -t 5 -r 1 -i Movie-1.mp4 -f image2 -y pc-temp/image%3d.jpg
提取到一些圖片后栏尚,我想弄成視頻,怎么辦只恨?
很簡單译仗,前提是你的ffmpeg已經(jīng)支持視頻編碼器(比如x264),參考FFmpeg的安裝吧( 已經(jīng)支持lamemp3官觅、x264古劲、librtmp、fdk-aac等)
把圖片制作成視頻
ffmpeg -f image2 -i img%3d.jpg test.mp4
-img%d表示以‘img001’, ’img002‘這類的命名缰猴,按順序使用产艾。注意f參數(shù)要在i參數(shù)之前。
3.使用FFmpeg
提取視頻流:
ffmpeg -i xx.flv -vcodec copy -an output.h264
提取音頻流:
ffmpeg -i fx_flash22298734.flv -acodec copy -vn audio.aac
提取視頻流并且為mp4格式:
ffmpeg -i xx.flv -vcodec copy -an -f mp4 1.mp4
提取音軌(音頻流):
ffmpeg -i 后來_MQ.m4a -map 0:0 0.wav
ffmpeg -i 后來_MQ.m4a -map 0:1 1.wav
提取聲道:
ffmpeg -i "TFBOYS - 是你.mp3" -map_channel 0.0.0 1.aac -map_channel 0.0.1 2.aac
提取流中的packet:
ffmpeg -v 48 -i "rtmp://xxx.com/live/7360883 live=1" out.flv
提取pcm:
ffmpeg -i "Rogue Traders - Watching You.mp3" -f s16le -ar 44100 -ac 2 -loglevel quiet -y decoded.pcm
合成音頻與視頻:
ffmpeg -i 1.mp4 -i 1.wav -vcodec copy mix_test.mp4
轉(zhuǎn)碼:
ffmpeg -i 22298734.flv -vcodec mpeg4 -s 320*240 -an -f m4v test.mp4
保存rtmp流在本地:
ffmpeg -i "rtmp://xxx.com/live/hks live=1" -vcodec copy -acodec copy out.flv
FFmpeg官網(wǎng)
或者更具體一點的比如:
4.視頻MP4轉(zhuǎn)成GIF
ffmpeg -i small.mp4 small.gif
轉(zhuǎn)化視頻中的一部分為 GIF
ffmpeg -t 3 -ss 00:00:02 -i small.webm small-clip.gif
從視頻中第二秒開始滑绒,截取時長為3秒的片段轉(zhuǎn)化為 gif
轉(zhuǎn)化高質(zhì)量 GIF
默認轉(zhuǎn)化是中等質(zhì)量模式闷堡,若要轉(zhuǎn)化出高質(zhì)量的 gif,可以修改比特率
ffmpeg -i small.mp4 -b 2048k small.gif
視頻屬性調(diào)整
縮放視頻尺寸
ffmpeg -i big.mov -vf scale=360:-1 small.mov
注意 sacle
值必須是偶數(shù)疑故,這里的 -1
表示保持長寬比,根據(jù)寬度值自適應(yīng)高度纵势。
如果要求壓縮出來的視頻尺寸長寬都保持為偶數(shù)踱阿,可以使用 -2
加倍速播放視頻
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
就是禁止音頻輸出
將 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
獲取 GIF 的第一幀圖片
使用 ImageMagick 可以方便第提取 gif 圖片的第 N 幀圖像。
安裝 ImageMagick
brew install imagemagick
提取第一幀
convert 'animation.gif[0]' animation-first-frame.gif
通過 [0]
就可以提取出 gif 的第一幀圖像钦铁。
GIF 轉(zhuǎn)出來的 MP4 播放不了软舌?
有些 GIF 轉(zhuǎn)化出來的 MP4 不能被 Mac QuickTime Player.app 播放,需要添加 pixel formal
參數(shù)
ffmpeg -i input.gif -vf scale=420:-2,format=yuv420p out.mp4
使用 yunv420p
需要保證長寬為偶數(shù)牛曹,這里同時使用了 scale=420:-2
佛点。
wiki 解釋: QuickTime Player 對 H.264 視頻只支持 YUV 色域 4:2:0 方式的二次插值算法。
參考資料
- FFmpeg CompilationGuide/MacOSX
- Convert Video to GIF or GIF to Video
- Get the First Frame of an Animated GIF with ImageMagick
- Create an Image Preview from a Video
- How to speed up / slow down a video
- ffmpeg useful commands (FFMPEG 命令大全)
- ffmpeg 文檔
ffmpeg -i input.mp4 output.avi