如何将MKV视频转换为与Windows上的iOS设备兼容的无损MP4视频?


10

我是FFmpeg(Windows)的新手,需要帮助。

我想将我的MKV转换为MP4,同时尽可能减少质量损失。MKV由MakeMKV制成,并包含DTS音轨。他们是无损的。我要转换的原因是我打算将其流式传输到iPad和Apple TV。iPad不支持DTS和MKV。MKV既是DVD又是蓝光。MKV包含视频,配乐和字幕。

我已经尝试过了,但是由于DTS音轨没有声音:

ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4

有谁能够帮助我?

我应该使用什么编解码器?MP4最适合苹果吗?


1
您是否有针对的iPad和Apple TV版本,或者您想支持所有这些版本?
llogan 2014年

2
注意:MP4不是编解码器。它只是一种文件格式(“容器”)。
slhck

我有最新的iPod Air。我有最新的Apple TV。我知道MP4是容器,而不是编解码器:)
Striky 2014年

请提供有关您的一种典型输入的信息。完整的控制台输出ffmpeg -i input.mkv就足够了。
llogan 2014年

我已经尝试了ffmpeg -i input.mkv -c:v复制-c:a复制output.mp4这确实可以播放,但是没有声音,因为苹果无法播放DTS。还尝试了ffmpeg -i input.mkv-严格实验-c:v复制-c:a aac -b:a 192k -q:a 6 output.mp4但影片(视频和声音)在我上播放不流畅iPad Air(流媒体和已下载)。
2014年

Answers:


22

MP4确实是Apple设备和软件的最佳格式。确实也不支持DTS,许多MP4视频文件包含两个音轨,一个DTS和一个AAC。

有多种编码器可用,所有编码器都记录在ffmpeg Wiki上。可用的编解码器取决于ffmpeg的编译方式。libfdk_aac将为您带来最佳效果,但是由于此编解码器不是免费的,因此并非总是可用。

您可以尝试的事情(我按照我认为的质量顺序排列,最好是第一)

ffmpeg -i input.mkv -c:v copy -c:a libfdk_aac -b:a 128k output.mp4
ffmpeg -i input.mkv -strict experimental -c:v copy -c:a aac -b:a 192k output.mp4
ffmpeg -i input.mkv -c:v copy -c:a libfaac -b:a 192k output.mp4

如果您也想保留DTS轨道,请使用该-map标志。

不是直接用于OP,而是OS X程序subler使此过程非常容易。

编辑:评论tl; dr?OP使用以下命令解决了问题

ffmpeg -i input.mkv -strict experimental -map 0:0 -map 0:1 -map 0:2 -map 0:3 -c:v copy -c:a aac -b:a 384 -c:s copy output.mp4

提示:如果-c:s copy字幕不起作用,请尝试-c:s mov_text
多次救了我。


我认为内部AAC编码器的VBR模式无法按预期工作。上次我检查它是否损坏。最好使用CBR,并将VBR用于其他编码器(libfdklibfaac
slhck 2014年

我还读过libfdk_aac将给出最好的结果。我已经下载了Windows的32位静态版本(git-9722a6a(2014-05-24))。如何检查我是否有libfdk编解码器?编辑:我得到未知的编码器'libfdk_aac'。我在哪里可以下载它,或者有几乎一样好的音频编解码器?
2014年

已经尝试了ffmpeg -i input.mkv -c:v复制-c:a libfdk_aac -b:a 128k输出.mp4和ffmpeg -i input.mkv -c:v复制-c:a libfaac -b:a 192k输出.mp4不行:(
Striky 2014年

@Striky“ No go :(”我用来自Homebrew的新ffmpeg尝试了最后一个命令,对我
有用

@slhck:我只是尝试了-c:a aac -q:a 6设置,并将结果与​​进行了比较-c:a libfaac -b:a 192k,在我看来,aac编解码器的结果要好于libfaac,但是由于编解码器正在开发中,因此这可能会改变。libfdk_aac可能会给出更好的结果,但是我现在没有。
jornane 2014年

0

我知道这是一个老问题-已经有一个答案-但我想与macOS上的FFmpeg共享一些命令。

来自MKV的具有AAC音频的x264视频编码的MP4

带有MP4的MKV的基本转换,但将音频转换为128k的AAC。请注意映射:-map 0:0表示0来自源输入(0)的第一个()轨道,并且-map 0:1表示1来自同一源输入(0)的第二个()轨道。我喜欢在有多个音轨的情况下执行此操作,因此我可以执行诸如select的操作-map 0:3来获取第三个音轨。

ffmpeg -i input.mkv \
       -c:v copy \
       -c:a aac -b:a 128k \
       -map 0:0 -map 0:1 \
       output.mp4 \
       ;

来自MKV的带有AAC音频的HEVC / x265视频编码的MP4

这类似于上面的x264命令,但是使用HEVC / x265来获得较小的文件大小,并且具有相同的(即使不是更好的质量)来自源MKV的视频。请注意,使用HEVC / x265时,我更喜欢将iOS视频缩放到720。在我的MacBook,iPad和iPhone上,没有太多杂音的播放质量非常可靠。只要确定您的硬件和操作系统支持HEVC / x265播放即可。请注意:HEVC / x265占用大量CPU,因此如果您的计算机没有太多的CPU能力,则可能需要一天左右的时间来编码90分钟的视频。

ffmpeg -i input.mkv \
       -vf scale=-1:720 \
       -c:v libx265 -crf 20 \
       -c:a aac -b:a 128k \
       -threads 4 \
       -tag:v hvc1 \
       -map 0:0 -map 0:1 \
       output.mp4 \
       ;

这是除输入和输出文件以外的每个核心参数的细分。

  • -vf scale=-1:720:将视频缩放到720高度并自动计算宽度。请注意,FFmpeg可能会由于某些原因而使某些 MKV 窒息,因此我还不能100%清楚地知道它,因此您必须使用以下类似的方法明确设置宽度:-vf scale=1280:720。进行实验,看看有什么适合您的。
  • -c:v libx265 -crf 20libx265是视频编码编解码器。的-crf 20CRF(恒定速率因子)。如果未指定默认CRF,则默认值为28,但是-到目前为止,它的质量非常高……嗯。我更喜欢20,因为它在质量和文件大小之间取得了很好的平衡。
  • -threads 4:我喜欢指定线程数。4是我的系统现在可以处理的,但有时我会将其降低到2或3。如果您有足够的CPU来处理,则数字越大越快。
  • -tag:v hvc1:用于iOS设备的魔术元数据设置,可以正确播放HEVC / x265视频。

就是这样!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.