Handbrake 设置可将 MKV 转换为 MP4,同时保留原始质量

Handbrake 设置可将 MKV 转换为 MP4,同时保留原始质量

我有大量 MKV 文件需要转换为 MP4,我选择的软件是 Handbrake。

我不知道哪种设置最适合转换。我想保留完整质量。我是否只使用原始设置进行转换而不做任何更改,还是我需要更改任何特定内容?

答案1

手刹存在什么问题?

当您使用 Handbrake 将一种容器格式转换为另一种容器格式(例如,在您的情况下将 MKV 转换为 MP4)时,Handbrake 将重新编码视频。另请参阅相应的功能请求这样就可以启用视频直通功能:

抱歉,没有计划添加视频直通功能。HandBrake 的设计初衷是视频转码器。它并非为允许直通而设计的。

因此,无论何时使用 Handbrake 更改容器,您的视频都会被重新编码,这意味着 a) 需要时间并且 b) 可能会导致质量损失。

我必须重新编码吗?我不能只更换容器吗?

由于无法直通,请问自己:我需要重新编码吗?如果你只想将容器从 MKV 更改为 MP4,你通常不需要编码任何东西,您只需更改视频的“环绕”即可。这不会损失质量,而且处理速度会快得多。

你可以使用以下方式轻松更换容器FFmpeg– 你只需要告诉它复制视频和音频流:

ffmpeg -i input.mkv -c copy -map 0 output.mp4

还有类似MP4盒也可以创建 MP4 容器 — MKV 也同样如此MKVtoolnix

然而,有一个很大的警告:这仅在音频和视频编解码器受支持时才有效在目标 (MP4) 容器中,例如 H.264/H.265 和 AAC 就是这种情况,但其他许多容器则不是。此外,MP4 的字幕格式支持与 MKV 不同,而且实际上相当受限,因此此命令可能会失败。

如果此命令不起作用,并且如果你的输入使用了错误的编解码器作为输出容器,你可能需要重新编码。在这种情况下,编解码器将适应输出容器。

要理解为什么这是必要的,重要的是要了解视频编解码器和容器之间的区别。这将帮助您理解为什么更改容器有效,以及为什么 MP4 和 MKV 容器实际上与视频编解码器关系不大。

无论如何,重新编码为什么不好?

通常无法保留完整质量对已编码的视频进行编码时。这是因为原始视频已经通过丢弃信息进行了压缩,而再次执行此操作会引入发电损失

通常,当视频尺寸发生变化时,您需要重新编码视频,或者您需要特定的比特率来压缩视频流,或者您的原始视频使用了您因某种原因无法播放的编解码器。

因此,如果你将 MKV 视频加载到 Handbrake 中,并使用 x264(Handbrake 使用的 H.264 编码器)重新编码,并将其存储在 MP4 容器中,无论如何,你都会损失质量,除非您将比特率或质量因子设置得太高,以至于您(实际上)看不到差异。但文件大小也会变大。

在理想情况下,您会将视频转换为未压缩的视频,这样不会损失任何质量,但即使只有几分钟的视频素材,也会产生十几 GB 大小的文件。

好的,但我确实必须重新编码!

如果你真的必须重新编码,请确保不要设置平均比特率,而是选择一个恒定利率因子,类似于“恒定质量”。就像 MP3 的“可变比特率”一样:它将确保将比特用在需要的视频部分上,并使整体质量更好 — 在文件大小相同的情况下。

合理的 CRF 值范围是 19 到 24,值越低表示“越好”。因此,您可以尝试将速率因子设为 19。此外,请确保设置“高”配置文件,这样编码器就可以使用所有附加功能并优化给定比特率的质量。

答案2

这对我来说非常有效。以下是在 Windows 中将所有 .mkv 文件转换为 .mp4 文件的代码。

  • 您可能需要将 ffmpeg 添加到您的路径中。您只需输入 ffmpeg 可执行文件的完整路径,D:\apps\ffmpeg\bin\ffmpeg.exe
  • 在此处下载适用于 Windows 的 ffmpeg。
  • 使用方法:将 .mkv 文件拖放到上面。它将处理整个目录。

保存在名为 convert.bat 的文件中。

for %%a in ("*.mkv") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
pause

相关内容