FFMPEG:剪辑视频的特定部分,并将它们合并成一个文件

5
我想剪辑mp4视频的特定部分,并将这些部分合并成一个单独的视频文件,以制作视频的动画预览。
更具体地说: 剪切视频的这些部分:
- 第1部分:剪切的开始时间=总时间的20%; 剪切的结束时间=总时间的20%+ 3秒, - 第2部分:总时间的40%; 总时间的40%+ 3秒 - 第3部分:总时间的60%; 总时间的60%+ 3秒 - 第4部分:总时间的80%; 总时间的80%+ 3秒
(视频长达3分钟以上,因此这些部分不应有任何重叠)
然后将这4个部分合并到新的mp4视频文件中。如何使用FFMPEG完成?
编辑:以下是此问题的解答:
我在“Superuser”和“Stackexchange”上找到了FFMPEG的这些问题的答案:
- 如何获取视频的总时长(秒) - 使用开始/结束位置从视频文件中剪切部分 - 连接多个mp4文件
所以,获取视频的总时间:
$ ffprobe -v error -show_entries format=duration \
  -of default=noprint_wrappers=1:nokey=1 -sexagesimal inputvideo.mp4

使用六十进制格式,我应该得到正确的时间格式以便后续使用。

剪辑视频的一部分。

ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy /path/videopart[number].mp4

在这里我不知道怎么做:

如何对总时间进行操作(20%,40%...然后20%+ 3秒,40%+ 3秒...)

如何在代码行中正确实现它

创建一个名为videoparts.txt的文件,其中包含文件名:

$ cat videoparts.txt
file '/path/videopart1.mp4'
file '/path/videopart2.mp4'
file '/path/videopart3.mp4'
file '/path/videopart4.mp4'

然后,这将把它们合并到一个文件中:
$ ffmpeg -f concat -i videoparts.txt -c copy outputvideo.mp4

你目前尝试过什么了吗? - tyb
1个回答

1
根据ffmpeg文档寻找时间长度,指定“寻找时间”的唯一方法是给出确切的时间。
您可以编写一个shell脚本,使用ffprobe提取视频的总持续时间,计算起始点,并使用这些起始点调用ffmpeg。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接