使用 -ss 设置起始时间
格式为 HH:MM:SS.MILLISECONDS 或者秒数
设置结束时间
-to 参数
设置的 endTime, 格式为 HH:MM:SS.MILLISECONDS 或者秒数
例如
ffmpege -ss 20 -to 80 -i inputVideo.mp4
ffmpege -ss 01:02:03 -to 02:02:03 -i inputVideo.mp4
-t 参数
设置持续时间,单位为s
例如
ffmpege -ss 01:02:03 -t 80 -i inputVideo.mp4
若 -to 和 -t 同时设置,以 -t 为准
方法一:re-encoding形式裁剪视频【处理速度慢】
ffmpeg -ss 00:03 -to 00:08 -i inputVideo.mp4 -threads 2 -c:v libx264 -crf 30 trim_opseek_encode.mp4
参数说明
-c:v ****指定视频的编码格式,若不指定也会以Re-Encoding形式裁剪视频
-crf ****CRF质量更改分辨率
-ss ****指定开始时间
-to ****指定结束时间,不指定时默认为视频结束时间
-therads****指定调用的cpu核数,避免ffmpeg将cpu占满,可根据机器实际情况配置
备注
-ss 和 -to 的位置不同代表的意义也不一样
放在 -i 前代表对输入视频的参数指定
放在 -i 后代表对输出视频的参数指定
如果我们需要一个更精确的时间,我们可以手动添加关键帧开始和结束的时间
ffmpeg -i my_video.mp4 -force_key_frames 00:00:15,00:00:25 clip.mp4
方法二:以流复制方式裁剪视频【处理速度快】
./ffmpeg -ss 00:17:24 -to 02:19:31 -i inputVideo.mp4 -threads 2 -c:v copy -c:a copy outputVideo.mp4
参数说明
-c:v ****copy 指定以copy方式处理视频流
-c:a ****copy 指定以copy方式处理音频流
-ss ****指定开始时间
-to ****指定结束时间,不指定时默认为视频结束时间
-therads ****指定调用的cpu核数,避免ffmpeg将cpu占满,可根据机器实际情况配置
处理结果
frame=222065 fps=14206 q=-1.0 Lsize= 1332873kB time=02:02:07.61 bitrate=1490.1kbits/s speed= 469x
video:1239527kB audio:83530kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.741900%
可以看到处理速度speed为469x,还是非常快的
方法三:使用 trim 过滤命令处理【适用于小视频,1min以内】
ffmpeg -i my_video -vf trim=10:25,setpts=PTS-STARTPTS clip.mp4
参数说明
-vf ****指定视频过滤
trim ****10:25代表 裁切00:00:10~00:00:25这个范围
setpts ****为剪辑中的每一帧设置,表示时间戳,PTS-STARTPTS确保剪辑不会延迟或停止,并且帧是相对于setpts值(即0)进行同步的