1

Я пытаюсь объединить эти два WAV (L.wav и R.wav) в один двухканальный стерео OGG. Вот что я пытаюсь:

ffmpeg -i L.wav -i R.wav -c:a libvorbis -q:a 5 \
-filter_complex "[0:a][1:a]amerge" -f ogg out.ogg

Тем не менее, ffmpeg говорит, что:

Расположение входного канала перекрывается: расположение выхода будет определяться количеством различных входных каналов

И это

4.0 не поддерживается Vorbis: выходной поток будет иметь неправильное расположение каналов.

Поэтому я понимаю, что я получу только один звук только в одном канале моего выходного файла. Итак, вопрос в том, как я могу сказать ffmpeg отобразить канал 0 L.wav и канал 0 R.wav на каналы 0 и 1 out.ogg (соответственно)? что-то вроде этого:

input #0 [1.0.0.0] → [1.0.0.0] \
                                > output #0 [1.1] 
input #1 [1.0.0.0] → [0.1.0.0] /

1 ответ1

1

Как вы amerge фильтр слияния объединил оба стерео входа в 4 канала. Текущий 4-х канальный макет:

  • c0 - левый канал от L.wav
  • c1 - правильный канал от L.wav
  • c2 - левый канал от R.wav
  • c3 - правильный канал из R.wav

Вы можете добавить фильтр pan чтобы микшировать нужные каналы обратно в стереофонический выход. Насколько я могу сказать, вы хотите, чтобы c0 был левым каналом вашего выхода, а c2 - правым каналом:

ffmpeg -i L.wav -i R.wav \
-filter_complex "[0:a][1:a]amerge=inputs=2,pan=stereo|c0=c0|c1=c2[a]" \
-map "[a]" -c:a libvorbis -q:a 5 out.ogg
  • Я обычно явно добавляю опцию input в amerge . По умолчанию 2 , но я делаю это в случае, если я использую более 2 входов; в противном случае, будучи забывчивым и часто ленивым, я могу установить его правильно.

  • -f ogg в этом случае является излишним, поскольку он определяет правильный формат, используя имя выходного файла.

  • Посмотрите FFmpeg Wiki: Audio Channel Manipulation для большего количества примеров.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .