我是 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 最适合 Apple?
答案1
MP4 确实是 Apple 设备和软件的最佳格式。DTS 也确实不受支持,许多 MP4 视频文件包含两个音轨,一个 DTS 和一个 AAC。
有多个编码器可用,它们都记录在ffmpeg 维基. 哪个编解码器可用取决于 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 程序苏伯勒使得这个过程变得非常容易。
编辑:评论 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
。
多次拯救了我。
答案2
我知道这是一个老问题 - 而且已经有答案了 - 但我想分享一些我在 macOS 上使用 FFmpeg 的命令。
来自 MKV 的 x264 视频编码 MP4 和 AAC 音频
对包含 MP4 的 MKV 进行基本转换,但将音频转换为 128k 的 AAC。请注意映射:-map 0:0
表示0
来自源输入 ( 0
) 的第一个 ( ) 音轨,表示来自相同源输入 ( ) 的-map 0:1
第二个 ( ) 音轨。我喜欢在有多个音轨的情况下这样做,这样我就可以执行诸如选择之类的操作来获取第三个音轨。1
0
-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 的 HEVC/x265 视频编码 MP4 和 AAC 音频
这类似于上面的 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 可能会阻塞一些由于我不是 100% 清楚的原因,MKV 必须明确设置宽度,如下所示:-vf scale=1280:720
。试验一下,看看哪种方法适合您。-c:v libx265 -crf 20
:libx265
是视频编码编解码器。-crf 20
是CRF(恒定速率因子)。如果您不指定,默认 CRF 为 28,但 — 截至目前 — 发现质量相当……嗯。我更喜欢 20,因为它在质量和文件大小之间实现了非常好的平衡。-threads 4
:我喜欢指定线程数。我的系统现在可以处理 4 个线程,但有时我会将其降低到 2 个或 3 个。如果您有足够的 CPU 来处理,则数字越大速度越快。-tag:v hvc1
:为 iOS 设备正确播放 HEVC/x265 视频而设置的神奇元数据。
就是这样!