2012-09-10 17:23:32 +0000 2012-09-10 17:23:32 +0000
44
44

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

我有一大堆 MKV文件需要转换为MP4,我选择的软件是手刹。

我卡在哪种设置是最好的转换。我想保留完整的质量。我是用原来的设置进行转换,什么都不改,还是有什么特殊的东西需要改?

答案 (2)

87
87
87
2012-09-10 17:58:20 +0000

手刹的问题是什么?

当你使用Handbrake从一个容器格式转换到另一个(即MKV到MP4在你的情况下),Handbrake将重新编码的视频。也请看 各自的功能请求 ,将启用视频直通:

对不起,添加视频直通没有计划。手刹被设计成一个视频转码器。

所以,手刹的设计是作为一个视频转码器,而不是为了允许直通而设计的。

所以,无论何时你在用手刹改变容器,你的视频都会被重新编码,这意味着a)需要时间,b)可能会带来质量损失。

我必须重新编码吗?我不能直接交换容器吗?

由于不可能进行直通,请问自己: 我需要重新编码吗?如果你只想把容器从MKV改成MP4,你通常不需要进行任何编码,你只需要改变视频的 “包装"。这不会损失质量,而且会是一个更快的过程。

你可以用 FFmpeg 轻松地交换容器 - 你只需要告诉它复制视频和音频流。

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

也有一些工具,比如 MP4Box 也可以创建MP4容器–同样的,MKV也有 MKVtoolnix

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

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

为了理解为什么要这样做,了解视频编解码器和容器之间的区别很重要。这将帮助你理解为什么改变容器的工作原理,以及为什么容器MP4和MKV与视频编解码器没有什么关系,其实。

到底为什么重新编码不好?

能(通常)在对一个已经编码的视频进行编码时,不能保留完整的质量。这是因为原片已经被丢弃信息而被压缩了,再做一次你就会引入生成损失

通常情况下,当视频的尺寸发生变化时,您需要对视频进行重新编码,或者您需要一个特定的比特率来挤压您的视频流,或者您的原始视频使用一个您无法播放的编解码器,无论什么原因。

所以,如果你把你的MKV视频加载到Handbrake中,然后用x264重新编码,Handbrake使用的H.264编码器,把它存储在一个MP4容器中,你会失去质量,无论如何,_除非你设置的比特率或质量因子如此之高,你不会(真的)看到的差异。但这样一来,文件大小也会变大。

在理想的情况下,你会将视频转换为非压缩视频,这不会让你失去任何质量,但会给你十几GB大小的文件,即使是几分钟的视频材料。

好吧,但我真的要重新编码了!

如果你真的要重新编码,请确保不要设置平均比特率,而是选择 Constant Rate Factor ,也就是类似于 "恒定质量"。就像MP3的 "可变比特率 "一样:它将确保把比特花在需要它们的视频部分,并使整体质量更好–在相同的文件大小下。

Sane CRF的值是从19到24,其中越低代表 "越好"。所以,你可以尝试使用19的速率因子。另外,请确保设置 "高 "配置文件,它使编码器能够使用所有的钟声和口哨,并优化给定比特率的质量。

4
4
4
2014-11-15 12:52:09 +0000

这对我来说非常好。下面是在windows下将所有的.mkv转换为mp4文件的代码。

  • 你可能需要把 ffmpeg 添加到你的路径中,你可以把 ffmpeg 可执行文件的完整路径,D:apps\ffmpeg\bin\ffmpeg.exe
  • 在这里下载 ffmpeg for windows.
  • 使用方法。把一个.mkv文件放到上面. 它将对整个目录进行处理。

保存在一个叫convert.bat的文件里。

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