开发学院

您的位置:首页>技术文章>正文

技术文章

在Linux中使用FFmpeg修剪视频

开发学院2024-02-17 17:23:45
FFmpeg是一个强大的Linux命令行多媒体编辑器。它允许您录制和处理视频,创建截屏,甚至编辑和编码高比特率视频文件。在这里,我们向您展示如何使用FFmpeg对视频文件进行快速修剪和基本剪切。值得一提的是,不少音视频软件实际上内部也是调用了FFmpeg库。

  FFmpeg是一个强大的Linux命令行多媒体编辑器。它允许您录制和处理视频,创建截屏,甚至编辑和编码高比特率视频文件。在这里,我们向您展示如何使用FFmpeg对视频文件进行快速修剪和基本剪切。值得一提的是,不少音视频软件实际上内部也是调用了FFmpeg库。


删除视频的开头和结尾

  FFmpeg最强大的功能之一是能够快速删除视频文件中的片段。这使您可以从视频中删除任何不必要的部分,甚至可以使用shell脚本实现自动化。

  开始修剪之前,请确认保存一份原始视频的备份,因为FFmpeg不提供撤销功能。

  要删除5分钟视频文件的开头30秒视频,可以运行以下命令:

ffmpeg -ss 00:00:30 -to 00:05:00 -i my-video.mp4 -c copy my-video-trim.mp4

  也可以将此语法转换为在视频文件的结尾进行修剪,运行以下内容将删除视频的最后30秒:

ffmpeg -ss 00:00:00 -to 00:04:30 -i my-video.mp4 -c copy my-video-trim.mp4

  该语法还支持视频两端的修剪。例如,删除视频的前30秒和后30秒:

ffmpeg -ss 00:00:30 -to 00:04:30 -i my-video.mp4 -c copy my-video-trim.mp4

在视频文件中剪切一小段

  例如想为原始视频中2:30到4:00和7:45到8:30的内容创建一个视频文件。

  首先将时间戳从分钟转换为秒:

echo "00:02:30" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'

  然后执行以下命令:

ffmpeg -i my-video.mp4 \
-vf "select='between(t,FIRST-START-VALUE,FIRST-END-VALUE)+between(t,SECOND-START-VALUE,SECOND-END-VALUE)', setpts=N/FRAME_RATE/TB" \
-af "aselect='between(t,FIRST-START-VALUE,FIRST-END-VALUE)+between(t,SECOND-START-VALUE,SECOND-END-VALUE)', asetpts=N/SR/TB" \
my-video-cut.mp4

  用第一次切割的值替换-vf和-af标志的FIRST-START-VALUE和FIRST-END-VALUE。在我的视频中,我的第一次剪辑从150秒开始,到240秒结束。

  用第二次切割的值替换SECOND-START-VALUE和SECOND-END-VALUE,然后按回车键运行命令。

  注意:您可以通过复制-vf和-af标志上的+between()函数以及新切割时间的逗号分隔列表来添加其他切割。


FFmpeg还可以将整个视频拆分为多个片段。

  将以下代码行复制到您的终端中:

ffmpeg -i my-video.mp4 -c copy -map 0 -segment_time 00:10:00 -f segment -reset_timestamps 1 my-video-%03d.mp4

  用目标剪辑长度替换segment_time的值。例如,您可以将此值设定为“00:05:00”以将您的长视频分成5分钟的片段。