我有大量的MKV文件需要转换为MP4,我选择的软件是Handbrake。
我一直坚持哪种设置最适合转换。我想保持完整的品质。我是否仅使用原始设置进行转换,而不更改任何内容,还是需要更改任何特定内容?
我有大量的MKV文件需要转换为MP4,我选择的软件是Handbrake。
我一直坚持哪种设置最适合转换。我想保持完整的品质。我是否仅使用原始设置进行转换,而不更改任何内容,还是需要更改任何特定内容?
Answers:
当您使用Handbrake将一种容器格式转换为另一种容器格式(即您的情况下从MKV转换为MP4)时,Handbrake将重新编码视频。另请参阅将启用视频传递的相应功能请求:
抱歉,未计划添加视频直通。HandBrake被设计为视频转码器。它并非旨在允许通过。
因此,无论何时使用Handbrake更换容器,您的视频都将被重新编码,这意味着a)需要时间,b)可能会导致质量下降。
由于无法通过,请问问自己:我需要重新编码吗?如果您只想将容器从MKV更改为MP4,通常不需要编码,只需更改视频周围的“包装”即可。这不会失去质量,这将是一个更快的过程。
您可以使用FFmpeg轻松地交换容器-您只需要告诉它复制视频和音频流即可:
ffmpeg -i input.mkv -c copy -map 0 output.mp4
还有诸如MP4Box之类的工具,它们也可以创建MP4容器-具有MKVtoolnix的 MKV也存在相同的工具。
但是,有一个很大的警告:仅当目标(MP4)容器中支持音频和视频编解码器时,此方法才有效,例如H.264 / H.265和AAC就是这种情况,而其他许多情况则不是。另外,对MP4的字幕格式支持与MKV不同,并且实际上受到很大限制,因此此命令可能会失败。
如果此命令不起作用,并且您的输入对输出容器使用了错误的编解码器,则可能必须重新编码。在这种情况下,编解码器将适应输出容器。
要了解为什么需要这样做,了解视频编解码器和容器之间的区别非常重要。实际上,这将帮助您理解为何更改容器有效以及为何MP4和MKV容器与视频编解码器几乎没有关系。
编码已经编码的视频时,您通常不能保持完整的质量。这是因为原始文件已经通过丢弃信息而被压缩,而再次执行此操作则会引入世代损失。
通常,您想在视频尺寸发生变化时重新编码视频,或者需要特定的比特率将视频流压缩到其中,或者原始视频使用的编解码器由于某种原因而无法播放。
因此,如果将MKV视频加载到Handbrake中,然后用x264重新编码,则Handbrake使用的H.264编码器将其存储在MP4容器中,无论如何,质量都会下降,除非您设置了比特率或品质因数如此之高,以至于您(真的)看不到差异。但是,文件大小也会变大。
在理想的情况下,您可以将视频转换为未压缩的视频,这不会损失任何质量,但是即使是几分钟的视频素材,也可以提供12 GB的文件大小。
如果确实需要重新编码,请确保不要设置平均比特率,而应选择“ 恒定速率因子”,例如“恒定质量”。就像MP3的“可变比特率”一样:它将确保将比特花费在需要它们的视频部分上,并以相同的文件大小提高整体质量。
Sane CRF值在19到24之间,其中“ lower”(低)表示“更好”。因此,您可以尝试使用19的速率因子。此外,请确保设置“高”配置文件,这使编码器可以使用所有铃声,并针对给定的比特率优化质量。
ffmpeg -i input.mp4 -c copy output.mkv
,你就可以了。
这对我来说很好。以下是将Windows中所有.mkv转换为.mp4文件的代码。
保存在名为convert.bat的文件中。
for %%a in ("*.mkv") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
pause
for %%a in ("*.mkv") do %~dp0ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"