ffmpeg剪辑视频文件非常简单,一个命令就可以搞定。
ffmpeg -ss 00:03:00 -i video.mp4 -t 60 -c copy cut.mp4
-ss后面指定的时间轴,-t后面指定时长单位为秒。为什么要将-ss放在-i前面?因为官方文档推荐这样做,这样做剪辑出来的视频时间轴更精准,并且速度更快。还有一个参数-to放在-i video.mp4后面,作用是指定剪辑时长,例如-to 00:02:00,当-ss放在-i前面的时候,这个-to剪辑出来的是-ss指定的时间轴加上-to指定的时间,比如-ss 00:01:00 -i video.mp4 -to 00:02:00,则剪辑出来的视频,是原视频00:01:00到00:03:00的片段。如果想把片头给去掉则指定了时间轴就不要添加-to和-t参数。
-to参数实例
ffmpeg -ss 00:03:00 -i video.mp4 -to 00:02:00 -c copy cut.mp4
以上命令代表将原视频文件00:03:00到00:05:00的片段剪辑出来,生成为cut.mp4文件在当前文件夹,并且使用编码为copy复制源视频文件的编码格式。
去除片头
ffmpeg -ss 00:03:00 -i video.mp4 -c copy cut.mp4
去除片头,就不需要添加-to或者-t参数,那么则是剪辑00:03:00到视频结尾
1.分离视频音频流
ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流
2.视频解复用
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
3.视频转码
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264 //转码为码流原始文件
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //转码为码流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //转码为封装文件
//-bf B帧数目控制,-g 关键帧间隔控制,-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 开始时间,-t 持续时间
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序列转AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
9.视频转帧序列
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.多个视频拼接
可以将几个视频拼接成一个视频 -f 表示采用concat协议,-c 表示采用什么编码器 copy表示不重新编码,如果是x264 表示将采用x264进行重新编码。
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 表示每秒截多少张图; -qscale 表示生成的截图质量,该值越小图片质量越好;%5d.jpg 表示生成的截图的命令规则,5位数的整数命名。
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.设置视频的音量
-vol 设置视频的音量,是以%为单位,500表示500%
ffmpeg -y -i source.mp4 -vol 500 -strict -2 -vcodec copy output.mp4
1
9.视频转码
-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
视频打多个水印:
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
网友评论