【问题标题】:ffmpeg extract all audio channelsffmpeg 提取所有音频通道
【发布时间】:2020-03-19 10:58:12
【问题描述】:

ffmpeg 中是否有办法提取所有音频通道并为每个通道指定一个单独的名称?

问题是我事先不知道输入文件将有多少个通道。

这确实会分成两个 wav 文件:

ffmpeg -y -i input.wav -filter_complex
"[0:a]channelsplit=channel_layout=stereo[left][right]" -map "[left]"
left.wav -map "[right]" right.wav

如果输入文件包含 3 或 8 个通道,该怎么办? 理想情况下,我想有一种方法将Nchannels.mp4 转换为Nchannels_1.wav、Nchannels_2.wav、...、Nchannels_N.wav。

【问题讨论】:

    标签: audio ffmpeg


    【解决方案1】:

    您必须分多个步骤执行此操作。

    1. 使用ffprobe获取通道数:
      ffprobe -v error -show_entries stream=channels,channel_layout -of default=nw=1 input.wav
          channels=6
          channel_layout=5.1
      
    2. (可选)请参阅ffmpeg -layouts 以获取通道名称,以便您知道如何命名输出;如下例所示。
    3. 使用来自ffprobe 的结果构建ffmpeg 命令:
      ffmpeg -i input.wav -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -map "[FL]" front_left.wav -map "[FR]" front_right.wav -map "[FC]" front_center.wav -map "[LFE]" low_frequency_effects.wav -map "[BL]" back_left.wav -map "[BR]" back_right.wav
      

    【讨论】:

    • 好吧,在我的情况下 ffprobe -v error -show_entries stream=channels,channel_layout -of default=nw=1 8ch.wav。显示:channels=8 channel_layout=unknown,所以我不确定如何将结果映射到 ffmpeg 参数
    • @AlexanderF 请参考ffmpeg -layouts 并选择您认为最有可能的布局。
    • 这是一个非常好的答案,它适用于实际的 5.1 音频。知道如何为仅在 2 个音频通道中编码的 Dolby Surround 执行此操作吗?默认情况下,ffmpeg 只发出两个通道,而不是将音频解复用为 3 或 4。据说它可以用 GraphEdit 完成,但这只是 Windows。仍在寻找适用于 Mac 的解决方案。
    • @larryy ffmpeg 显示有关输入文件的哪些信息?您可以使用 pastebin 网站并在评论中提供链接。
    • @llogan 这是一个 ffprobe 和尝试的解复用器:https://pastebin.com/NSQbiZAu。 test.ac3 文件是here。生成的通道文件在 FL 和 FR 通道中有音频,而在任何其他通道中都没有。
    猜你喜欢
    • 2021-12-17
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2019-07-06
    • 1970-01-01
    • 2011-06-05
    • 2016-10-15
    相关资源
    最近更新 更多