Answers:
确保运行最新版本的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
MKV只是一个容器。您可以在.mkv
容器内放置MPEG-4视频。
我的建议是这样的:
将文件推送到.mkv
容器:
mkvmerge -o newfile.mkv inputfile.m4v
在此处获取可用的mkvdts2ac3.sh
脚本并运行以下命令:
mkvdts2ac3.sh newfile.mkv
做完了!
我的电视支持AC3,但不支持DTS,因此此设置对我来说确实很神奇。
请注意,其中mkvdts2ac3.sh
有一些非常基本的依赖要求。运行脚本时,您会看到它们。
m4v
文件,这就是您的命令不起作用的原因。此外,dale使用了错误的语法,将他现有的文件指定为输出,并给出inputfile.m4v
了输入,但显然不存在。
您可以这样做:
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
正如@UtahJarhead所说,MKV是容器。基本上,您想要的是将DTS音频转换为AC3或AAC。
最好的方法是将FFmpeg用于音频,并使用MKVToolNix合并音频和视频。
如果您更喜欢GUI而不是命令,那么我在这里介绍了如何执行此操作:从video转换不受支持的音频。