假设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个长度相同的部分。