将具有DTS声音的MKV转换为具有AAC或AC3音频的MP4视频


13

我有一个4.3 GB 720p的电影,并且想要将此具有DTS声音的MKV转换为具有AAC或AC3音频的MP4视频。

我有时会得到:

ffmpeg: unrecognized option '-c:v'

…和:

aac unrecognized

¬和其他类似的东西。

我希望这部电影的尺寸能像在洪流站点上找到的一样小。


您能否帮助我们,并给我们您正在使用的确切命令以及FFmpeg产生的完整,完整的输出?您在哪个操作系统上?最后:您必须使用FFmpeg吗?请编辑您的问题。
slhck

Answers:


19

确保运行最新版本的FFmpeg。对于Windows和Linux,可从主页上获得静态版本。对于macOS,您可以通过Homebrew安装FFmpeg 。

然后,在最简单的情况下运行:

ffmpeg -i input.mkv -c:v libx264 -c:a aac out.mp4

设置视频质量

要控制视频质量,请将参数设置crf默认值23。较低意味着质量更好,但是文件大小较大。尝试在19到26之间的值查看最合适的值。您还可以设置特定的比特率,具体取决于所需的文件大小。例如,此处为500 kBit / s:

ffmpeg -i input.mkv -c:v libx264 -crf 23 …
ffmpeg -i input.mkv -c:v libx264 -b:v 500k …

对于音频,您也可以使用设置比特率-b:a

多声道音频

如果您的音频流使用多个通道(例如5.1声音),则需要使用另一个AAC编码器(libfdk_aac)。该编码器在静态版本中不可用,但可以通过预包装的ffmpeg / Homebrew版本获得。

ffmpeg -i input.mkv -c:v libx264 -crf 23 -c:a libfdk_aac -b:a 384k out.mp4

复制所有流

如果您的输入文件具有多个视频,音频和字幕流,则默认情况下,ffmpeg不会将其全部转换。

使用-map 0指示的ffmpeg采取从输入文件中的所有数据流(见FFmpeg的维基获取更多信息)。这对于保留原始语言中的不同语言和字幕很有用。

ffmpeg -i input.mkv -c:v libx264 -c:a aac -map 0 out.mp4

2

MKV只是一个容器。您可以在.mkv容器内放置MPEG-4视频。

我的建议是这样的:

将文件推送到.mkv容器:

mkvmerge -o newfile.mkv inputfile.m4v

此处获取可用mkvdts2ac3.sh脚本并运行以下命令:

mkvdts2ac3.sh newfile.mkv

做完了!

我的电视支持AC3,但不支持DTS,因此此设置对我来说确实很神奇。

请注意,其中mkvdts2ac3.sh有一些非常基本的依赖要求。运行脚本时,您会看到它们。


root @ Frenzen:〜/ Downloads / 2.Days.In.New.York.2012.720p.BluRay.X264- 7SinS#mkvmerge -o 7s-2days-in-ny-720p.mkv inputfile.m4v mkvmerge v3.0.0('挂断您的挂断电话)),构建于2009年12月29日00:24:14错误:无法成功打开源文件“ inputfile.m4v”,或者通过寻找结尾来获取其大小不起作用。root @ Frenzen:〜/下载/2.Days.In.New.York.2012.720p.BluRay.X264-7SinS#
dale

听起来像一个损坏的输入文件。
犹他州黑德黑德2012年

@dale您能否在原始问题的评论中包含我要求您提供的输出?这将帮助我们解决您的问题。
slhck 2012年

另外,在犹他州黑德,OP似乎想要MKV输入文件中的MP4结果文件。他没有m4v文件,这就是您的命令不起作用的原因。此外,dale使用了错误的语法,将他现有的文件指定为输出,并给出inputfile.m4v了输入,但显然不存在。
slhck 2012年

mp4是编解码器,而不是容器。mkv是容器,而不是编解码器。这就像说他们想用凯迪拉克制造一个车库。输入的.mkv文件是什么编解码器,因为这可能有所不同。
犹他州黑海德2012年

1

您可以这样做:

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

或者,如果没有乐趣,请尝试修复内部位流

转换为立体声和升序:

ffmpeg -i input.mkv -c:v copy -c:a libfaac    \
-bsf:a aac_adtstoasc -ac 2 -ar 48000 -ab 256k \
out.mkv

如果是5.1,则环绕声且声音很难听见,这是因为对话框位于中央通道上,并且您仅从R&L通道中听到非话筒,但音乐和声音效果却非常出色。

您可以使用dolby-II滤波器对此进行补偿,以降低环绕声通道的数量,并将中心通道拆分为立体声,然后将它们全部合并为左右立体声通道。

ffmpeg -i input.mkv -c:v copy -c:a libfaac -bsf:a aac_adtstoasc   \
  -af aresample=matrix_encoding=dplii -ac 2 -ar 48000 -ab 256k    \
  out.mkv

0

正如@UtahJarhead所说,MKV是容器。基本上,您想要的是将DTS音频转换为AC3或AAC。

最好的方法是将FFmpeg用于音频,并使用MKVToolNix合并音频和视频。

如果您更喜欢GUI而不是命令,那么我在这里介绍了如何执行此操作:从video转换不受支持的音频


1
您应该在此处描述该过程,然后仅在此之后,提供到应用程序的下载链接。
Ramhound

@Ramhound我刚刚编辑了答案
IvanRF
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.