ffmpeg剪輯視頻文件非常簡(jiǎn)單锭吨,一個(gè)命令就可以搞定促绵。
ffmpeg -ss 00:03:00 -i video.mp4 -t 60 -c copy cut.mp4
-ss后面指定的時(shí)間軸尤蛮,-t后面指定時(shí)長(zhǎng)單位為秒。為什么要將-ss放在-i前面早直?因?yàn)楣俜轿臋n推薦這樣做嘹裂,這樣做剪輯出來的視頻時(shí)間軸更精準(zhǔn),并且速度更快濒持。還有一個(gè)參數(shù)-to放在-i video.mp4后面键耕,作用是指定剪輯時(shí)長(zhǎng),例如-to 00:02:00柑营,當(dāng)-ss放在-i前面的時(shí)候屈雄,這個(gè)-to剪輯出來的是-ss指定的時(shí)間軸加上-to指定的時(shí)間,比如-ss 00:01:00 -i video.mp4 -to 00:02:00官套,則剪輯出來的視頻酒奶,是原視頻00:01:00到00:03:00的片段。如果想把片頭給去掉則指定了時(shí)間軸就不要添加-to和-t參數(shù)奶赔。
-to參數(shù)實(shí)例
ffmpeg -ss 00:03:00 -i video.mp4 -to 00:02:00 -c copy cut.mp4
以上命令代表將原視頻文件00:03:00到00:05:00的片段剪輯出來惋嚎,生成為cut.mp4文件在當(dāng)前文件夾,并且使用編碼為copy復(fù)制源視頻文件的編碼格式站刑。
去除片頭
ffmpeg -ss 00:03:00 -i video.mp4 -c copy cut.mp4
去除片頭另伍,就不需要添加-to或者-t參數(shù),那么則是剪輯00:03:00到視頻結(jié)尾
1.分離視頻音頻流
ffmpeg -i input_file -vcodec copy -an output_file_video //分離視頻流
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 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 分辨率控制
4.視頻封裝
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
5.視頻剪切
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 開始時(shí)間因悲,-t 持續(xù)時(shí)間
6.視頻錄制
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
7.YUV序列播放
ffplay -f rawvideo -video_size 1920x1080 input.yuv
8.YUV序列轉(zhuǎn)AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
9.視頻轉(zhuǎn)幀序列
ffmpeg -i split.avi %d.bmp
10.幀序列合并為視頻
ffmpeg -i %d.bmp -y list.mp4
.獲取視頻流信息
用ffprobe可以獲取到視頻的所有流的具體信息
ffprobe -print_format json -show_streams -i input.mp4
1
2.多個(gè)視頻拼接
可以將幾個(gè)視頻拼接成一個(gè)視頻 -f 表示采用concat協(xié)議堕汞,-c 表示采用什么編碼器 copy表示不重新編碼,如果是x264 表示將采用x264進(jìn)行重新編碼晃琳。
ffmpeg -y -f concat -i videolist.txt -c copy output.mp4
1
3.視頻截圖
截一張圖
-ss 表示在視頻的多少S 截取一張圖
ffmpeg -y -ss 8 -i input.mp4 -f image2 -vframes 1 output.jpg
1
截多張圖
-r 表示每秒截多少?gòu)垐D讯检; -qscale 表示生成的截圖質(zhì)量琐鲁,該值越小圖片質(zhì)量越好;%5d.jpg 表示生成的截圖的命令規(guī)則人灼,5位數(shù)的整數(shù)命名绣否。
ffmpeg -y -ss 0 -i input.mp4 -f image2 -r 1 -t 8 -qscale 1 ./jpgs/%5d.jpg
1
4.給視頻加上水印圖片
ffmpeg -y -i input.mp4 -i ./logo.png filter_complex "overlay=0:0:enable=between(t,0,2)" -c:v libx264 -c:a aac -strict -2 output.mp4
1
5.圖片合成視頻
ffmpeg -y -f image2 -framerate 10 -i ./jpgs/%05d.jpg -c:v libx264 -r 25 -pix_fmt yuv420p output.mp4
1
6.視頻添加背景音樂
ffmpeg -y -i input.mp4 -i ainiyiwannian.wav -filter_complex "[0:a] pan=stereo|c0=1*c0|c1=1*c1 [a1], [1:a] pan=stereo|c0=1*c0|c1=1*c1 [a2],[a1][a2]amix=duration=first,pan=stereo|c0<c0+c1|c1<c2+c3,pan=mono|c0=c0+c1[a]" -map "[a]" -map 0:v -c:v libx264 -c:a aac -strict -2 -ac 2 output.mp4
1
7.將視頻去除音頻
ffmpeg -y -i source.mp4 -an -vcodec copy output.mp4
1
8.設(shè)置視頻的音量
-vol 設(shè)置視頻的音量,是以%為單位挡毅,500表示500%
ffmpeg -y -i source.mp4 -vol 500 -strict -2 -vcodec copy output.mp4
1
9.視頻轉(zhuǎn)碼
-vcodec 指定視頻編碼器,-acodec 指定音頻編碼器
ffmpeg -y -i input.mp4 -vcodec libx264 -acodec copy output.mp4
音頻處理
1.從視頻中提取音頻
ffmpeg -y -i source.mp4 -vn output.wav
2.將音頻用lpcm格式重新編碼暴构,指定采樣率
ffmpeg -y -i source.wav -acodec pcm_s16le -ar 44100 output.wav
視頻打多個(gè)水庸虺省:
ffmpeg -i 1.mp4 -i logo.png -i xh9.png -filter_complex "overlay=5:5,overlay=x=main_w-overlay_w-10 : main_h-overlay_h-10" 11.mp4 -y
水印圖片位置
overlay值
左上角
10:10
右上角
main_w-overlay_w-10:10
左下角
10:main_h-overlay_h-10
右下角
main_w-overlay_w-10 : main_h-overlay_h-10