使用 FFMPEG 的一个命令将 .mkv 文件分成两半时出现问题,必须使用稍微不同的命令一次完成一个

使用 FFMPEG 的一个命令将 .mkv 文件分成两半时出现问题,必须使用稍微不同的命令一次完成一个

我有一个 ~400GB 的 .mkv 文件,想上传到 YouTube,但不幸的是 YouTube 限制我上传 256GB。所以我在 Google 上搜索是否可以使用 FFMPEG 分割文件,并找到了以下文章 (FFMPEG 分割相同质量的 MP4),总而言之我运行了以下命令(我在 Windows 上):

%UserProfile%\Downloads\ffmpeg-5.1.1-full_build\bin\ffmpeg.exe -i largefile.mp4 -t 02:30:23 -c copy smallfile1.mkv -ss 02:30:23 -c copy smallfile2.mkv

阅读上一篇文章中的文本,似乎两个时间戳都需要相同,对于第 1 部分,它应该是结束时间,对于第 2 部分,它应该是开始时间。

这花了很长时间,它首先开始工作smallfile1.mkv,大约每 20 分钟就会得到 1 GB,同时我的 CPU 使用率达到 100%。我粗略计算了一下,如果第一个文件完成。没人有时间做这个!

于是我接下来找到了这篇文章(https://stackoverflow.com/questions/18444194/cutting-the-videos-based-on-start-and-end-time-using-ffmpeg),最终生成了 2 个命令:

%UserProfile%\Downloads\ffmpeg-5.1.1-full_build\bin\ffmpeg.exe -ss 00:00:00 -to 02:30:23 -i largefile.mp4 -c copy smallfile1.mkv

%UserProfile%\Downloads\ffmpeg-5.1.1-full_build\bin\ffmpeg.exe -ss 02:30:20 -to 05:04:31 -i largefile.mp4 -c copy smallfile2.mkv

但这个速度要快得多,它占用了我的硬盘空间,但没有占用我的 CPU(我有 2 个驱动器,所以在运行时我的电脑是可用的),我知道它马上就起作用了,因为我只用了几秒钟就得到了 1 GB。每个文件大约需要 30 分钟的转换时间,然后我就可以开始上传了。

第一个步骤我做错了什么?为什么效率这么低,而且耗时这么长?我本来可以用一个命令将它们拼接起来,只需运行

%UserProfile%\Downloads\ffmpeg-5.1.1-full_build\bin\ffmpeg.exe -ss 00:00:00 -to 02:30:23 -i largefile.mp4 -c copy smallfile1.mkv && %UserProfile%\Downloads\ffmpeg-5.1.1-full_build\bin\ffmpeg.exe -ss 02:30:20 -to 05:04:31 -i largefile.mp4 -c copy smallfile2.mkv

(注意两个命令之间的空格&&)但我可以在处理其他事情的同时关注进度。

我在解释中跳过了这一点,但在排除故障时,我尝试将其转换为 .mp4(希望保持相同的质量),这似乎有效,文件大小非常相似,质量也差不多。这是链接(https://askubuntu.com/questions/50433/how-to-convert-mkv-file-into-mp4-file-losslessly) 和以下命令:

%UserProfile%\Downloads\ffmpeg-5.1.1-full_build\bin\ffmpeg.exe -i input.mkv -codec copy output.mp4

我还将最终的分割文件转换为 .mp4,但在测试时,将输出文件指定为 .mkv 的速度大致相同,甚至更快。尝试将完整文件转换为 .mp4 并将 .mkv 转换为 .mp4 的原始命令也会导致同样的高 CPU 缓慢进度。

我对未来有自己的解决方案,但我真的很好奇为什么另一个解决方案不起作用,这样我就可以让我将来的生活更轻松。

编辑:格式化。

答案1

你应该读一下这个:https://trac.ffmpeg.org/wiki/Seeking

-ss如果是在之前或之后,行为会有很大不同-i

相关内容