ffmpeg извлекает все аудио каналы - PullRequest
1 голос
/ 18 марта 2020

Есть ли способ в 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.

1 Ответ

0 голосов
/ 18 марта 2020

Вам нужно будет сделать это в несколько шагов.

  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. Команда ffmpeg Build с использованием результатов из ffprobe:
    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
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...