FFmpeg Builds官方下载地址:https://ffmpeg.zeranoe.com/builds/
1、使用ffmpeg截取视频中 指定时间段视频:
ffmpeg -i ./plutopr.mp4 -vcodec copy -acodec copy -ss 00:00:10 -to 00:00:15 ./cutout1.mp4 -y
-ss time_off:set the start time offset(设置从视频的哪个时间点开始截取,上文从视频的第10s开始截取)
-to:截到视频的哪个时间点结束。上文到视频的第15s结束。截出的视频共5s.
如果用-t 表示截取多长的时间,如上文-to换成-t则是截取从视频的第10s开始,截取15s时长的视频。即截出来的视频共15s.
注意的地方是:
如果将-ss放在-i ./plutopr.mp4后面则-to的作用就没了,跟-t一样的效果了,变成了截取多长视频。一定要注意-ss的位置。
参数解析:
-vcodec copy表示使用跟原视频一样的视频编解码器。
-acodec copy表示使用跟原视频一样的音频编解码器。
-i 表示源视频文件
-y 表示如果输出文件已存在则覆盖。
2019年3月14日更新:
上面这些是照搬其他博文的,但是据我使用几次后,发现有问题(截取的视频时间点总是有几秒差距),今天google了一下,
http://trac.ffmpeg.org/wiki/Seeking
▲官方文档
▼官方例子:
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy cut.mp4
ffmpeg -i video.mp4 -ss 00:01:00 -to 00:02:00 -c copy cut.mp4
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4
第一条命令截取的其实是 00:01:00 到 00:03:00 (in the original), 处理快速;
第二条命令截取的才是 00:01:00 到 00:02:00, 处理慢;
第三条命令截取的也是 00:01:00 到 00:02:00, 处理快速;
关键的选项是 -copyts 按原视频的默认时间戳处理 copy timestamp的意思
2、音频流 视频流 分离
▼分离音频:
ffmpeg -i input_file -acodec copy -vn output_file_audio
copy 代表使用相同的音频编码 小编使用最新的版本已经集成mp3编码库 所以直接写mp3 也是成功的
▼分离视频:
ffmpeg -i input_file -vcodec copy -an output_file_video
3、裁剪视频
ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4
out_w 表示输出宽度;
out_h 表示输出高度;
x、y 指定左上角的像素位置;
ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
▲像上例,不指定x、y的话,程序会自动居中裁剪,所以最后输出的 output.mp4 相对于原始视频是上下各裁掉了20px;
ffplay -i input -vf "crop=in_w:in_h-40"
▲上例则是预览裁剪效果,不用浪费时间encode