![将长视频文件分割成大约相等大小的部分的正确方法是什么?](https://linux22.com/image/1502662/%E5%B0%86%E9%95%BF%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6%E5%88%86%E5%89%B2%E6%88%90%E5%A4%A7%E7%BA%A6%E7%9B%B8%E7%AD%89%E5%A4%A7%E5%B0%8F%E7%9A%84%E9%83%A8%E5%88%86%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
假设foo.mp4
这是一段时长为 3 小时 49 分 06 秒的 twitch 流录制,我想将其分成 8 个部分,每个部分大约 28 分 40 秒,然后将其分成合理的部分上传到 youtube。
我知道我可以将该时间除以 8,然后以指定的开始和结束位置运行mencoder
8ffmpeg
次,但这仍然存在诸如关键帧、不重新编码以及视频之间未解决的小重叠等问题。
那么什么是“正确”的方法呢?
答案1
我能找到的最好的是:
ffmpeg -i stream.mp4 -c copy -map 0 -segment_time $[60*28] -reset_timestamps 1 -f segment "stream_part_%02d.mp4"
这会将关键帧分成大约相等长度的段,而无需重新编码。
主要缺点是您需要手动计算片段大小(如果您将 3 小时 1 分钟的视频分割成 30 分钟的片段,您将得到尴尬的第 7 个 1 分钟片段)。在此示例中,我使用了 28 分钟的片段,因为这是最接近均等的。
小小的缺点是它生成的文件编号从 0 开始。
答案2
我成功使用了第三方视频转换工具Pavtube 视频转换器终极版将我的2小时电影分成5个长度相同的部分。