【问题标题】:FFMPEG : Cut specific parts of a video, and merge them in a single fileFFMPEG:剪切视频的特定部分,并将它们合并到一个文件中
【发布时间】:2017-07-08 02:15:39
【问题描述】:

我想剪切 mp4 视频的特定部分,然后合并这些部分以创建单个视频文件。这是为了对视频进行动画预览。

更具体地说: 剪下视频的这些部分:

  • 第 1 部分:剪辑开始时间 = 总时间的 20%;的结束时间 切割 = 总时间的 20% + 3 秒,
  • 第 2 部分:占总时间的 40%;总时间的 40%n + 3 秒
  • 第 3 部分:总时间的 60%;总时间的 60% + 3 秒
  • 第 4 部分:总时间的 80%;总时间的 80% + 3 秒

(视频时长超过3分钟,部分内容不应有重叠)

然后将这 4 个部分合并到一个新的 mp4 视频文件中。您如何使用 FFMPEG 做到这一点?

编辑:这就是我对这个问题的看法:

我在 FFMPEG 上找到了有关“超级用户”和“Stackexchange”问题的答案: - 如何以秒为单位获取视频时长 - 从具有开始/结束位置的视频文件中剪切部分 - 连接 mp4 文件

所以:获取视频的总时间:

$ ffprobe -v error -show_entries format=duration \
  -of default=noprint_wrappers=1:nokey=1 -sexagesimal inputvideo.mp4

使用 -sexagesimal 我应该得到正确的时间格式以供之后使用。

截取部分视频

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

【问题讨论】:

  • 到目前为止你有没有尝试过?

标签: video ffmpeg mp4 video-editing


【解决方案1】:

根据 ffmpeg 文档 SeekingTime Duration,指定“搜索时间”的唯一方法是给出确切的时间。

您可以编写一个 shell 脚本来使用 ffprobe 提取视频的总时长,计算起点并使用这些起点调用 ffmpeg。

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    相关资源
    最近更新 更多