0

在 FFmpeg v4.0 之前,我已经能够对包含 H.264 视频轨道和 AC3 或 DTS 音频流的输入视频文件运行以下命令,并生成具有 6 个音频流的 MP4。每个流对应一个 5.1 音频的通道。

ffmpeg -i INPUT.MKV -vcodec copy -filter_complex channelsplit=channel_layout=5.1 -acodec aac -movflags faststart OUTPUT.MP4

它甚至可以在立体声轨道上工作,并将 L 和 R 通道放在适当的位置,并为其他 4 个通道生成一些无关紧要的静音轨道。

但现在在 v4.0.1 中,我收到以下错误:

[aac @ 0x7f7f65001e00] 不支持的通道布局

初始化输出流 0:0 时出错 - 打开输出流 #0:0 的编码器时出错 - 可能是不正确的参数,例如 bit_rate、rate、width 或 height

转换失败!

将命令更改为以下内容并不能改善问题:

ffmpeg -i INPUT.MKV -vcodec copy -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -acodec aac -movflags faststart OUTPUT.MP4

它给出了以下错误:

滤波器通道分割:BR 有一个未连接的输出

(注意 BL/BR 和 SL/SR 都产生关于 BR 的相同错误)

这种 MP4 文件结构对于在 Unity 内部使用放置在环境中的虚拟扬声器进行回放非常有用。

我的最终目标:

- MP4 (MOOV Atom at the Front)
    -H.264 Video Stream
    -AAC Audio Stream - FL
    -AAC Audio Stream - FR
    -AAC Audio Stream - FC
    -AAC Audio Stream - LFE
    -AAC Audio Stream - SL
    -AAC Audio Stream - SR
4

1 回答 1

2

这就是您设置新布局和地图的方式。

ffmpeg -i INPUT.MKV
       -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];
                        [FL]aformat=channel_layouts=mono[FL];
                        [FR]aformat=channel_layouts=mono[FR];
                        [FC]aformat=channel_layouts=mono[FC];
                        [LFE]aformat=channel_layouts=mono[LFE];
                        [BL]aformat=channel_layouts=mono[BL];
                        [BR]aformat=channel_layouts=mono[BR]"
       -map 0:v -map '[FL]' -map '[FR]' -map '[FC]' -map '[LFE]' -map '[BL]' -map '[BR]'
       -vcodec copy -acodec aac -movflags faststart OUTPUT.MP4
于 2018-12-17T17:00:24.333 回答