如何在 FFmpeg 4.0 中将 5.1 音频拆分为离散的 AAC 流
How to split 5.1 audio into discrete AAC streams in FFmpeg 4.0
在 FFmpeg v4.0 之前,我已经能够 运行 对包含 H.264 视频轨道和 AC3 或 DTS 音频流的输入视频文件执行以下命令,并生成具有6 个音频流。每个流对应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] Unsupported channel layout
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
将命令更改为以下内容并没有改善:
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
它给出了以下错误:
Filter channelsplit:BR has an unconnected output
(请注意 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
这就是设置新布局和地图的方式。
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
在 FFmpeg v4.0 之前,我已经能够 运行 对包含 H.264 视频轨道和 AC3 或 DTS 音频流的输入视频文件执行以下命令,并生成具有6 个音频流。每个流对应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] Unsupported channel layout
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
将命令更改为以下内容并没有改善:
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
它给出了以下错误:
Filter channelsplit:BR has an unconnected output
(请注意 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
这就是设置新布局和地图的方式。
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