如何使用 ffmpeg 将 5.1 DTS HD MA 或 Dolby TrueHD 混音为带有 Dolby Pro Logic II 的立体声 AAC?

如何使用 ffmpeg 将 5.1 DTS HD MA 或 Dolby TrueHD 混音为带有 Dolby Pro Logic II 的立体声 AAC?

我正在为可以在 Apple TV 和 iOS 设备上播放的电影创建音轨。Handbrake 可以使用 Pro Logic II 矩阵编码将 5.1 音频混音为立体声。如何使用 ffmpeg 做到这一点?

我找到了这个ffmpeg Trac 上的链接提到我可以用进行矩阵编码libswresample,但进一步搜索并没有显示如何在命令行中实际使用它。

我试过

ffmpeg -i test.mkv -map 0:1 -c libfdk_aac -ac 2 -af aresample  -matrix_encoding dplii  out.aac

其中源文件中唯一的音轨test.mkv是 5.1ch DTS H MA,但生成的 AAC 音频似乎不是矩阵编码的。

答案1

根据手动输入aresample,您必须以不同的格式提供重采样器选项:

该过滤器接受语法[sample_rate:]resampler_options,其中sample_rate表示采样率和resampler_options是一个key=value由“ ”分隔的对的列表:

这意味着你需要像这样调用它:

-af "aresample=matrix_encoding=dplii"

答案2

我首选的方法是使用 ffmpeg 将 DTS 混音为立体声,然后将输出传送到 Quicktime AAC 命令行编码器(Quicktime 是最好的 AAC 编码器听力测试)。

ffmpeg.exe -report -loglevel verbose -i "videofile.mkv" -map 0:a:0 -f wav -acodec pcm_f32le -ac 2 - | qaac.exe --tvbr 127 --quality 2 --rate keep --ignorelength --no-delay - -o "audioonly.m4a"

需要执行文件程序

答案3

把这里的几个答案放在一起,看起来这是最好的答案:

ffmpeg -i SourceVideoWithFivePointOne.mkv -map 0:1  \
-c libfdk_aac -ac 2 -af "aresample=matrix_encoding=dplii"  \
DestinationAudioWithDolbyPLII.aac

为了获得加分,将现有的 5.1 声道降级为声道 2,并将立体声升级为声道 1,结果将是:

ffmpeg -i SourceWithFivePointOne.mkv -c:v copy -map 0:0 -map 0:1 -map 0:1  \
-c:a:0 libfdk_aac -ac 2 -af "aresample=matrix_encoding=dplii"  \
-c:a:1 copy  \
DestinationVideoWithSurroundAndStereo.mkv

相关内容