Я пытаюсь создать аудиофайл путем объединения нескольких видеовходов. Для объединенных входов может быть указан -itsoffset, чтобы определить, когда они начнутся в объединении.

Я не уверен, почему не работает 3 входа. Почти идентичная команда работает с двумя входами. Когда у меня есть 3 входа, я получаю ошибку:

[libmp3lame @ 0x2b55d60] Specified channel layout '2.1' is not supported

Я считаю, что ошибка означает, что более 2-х канальных входов не поддерживаются. Я правильно читаю? Нужно ли объединять их по два входа одновременно? Я подумал о том, чтобы сначала объединить все три входа в виде видео, а затем преобразовать готовый видеофайл в аудиофайл. Но я подумал, что было бы разумнее избегать преобразований видео, поскольку в конечном итоге мне нужен только аудиофайл.

Команда с 2 входами, которая работает:

ffmpeg -itsoffset 0.5 -i 850_segment_0_remote_0.webm \
       -i 850_segment_0_local_0.webm  \
       -filter_complex " [0:a][1:a]amerge=inputs=2[a]" \
       -map "[a]" -ac 2 -ar 44100 -strict -2 \
       -acodec libmp3lame 850_segment_0.mp3

Команда с 3 входами, которые не работают:

ffmpeg -itsoffset 8.698 -i 850_segment_1_remote_0.webm -itsoffset 9.705 \
       -i 850_segment_1_remote_1.webm -i 850_segment_1_local_0.webm \
       -filter_complex " [0:a][1:a][2:a]amerge=inputs=3[a]" \
       -map "[a]" -ac 3 -ar 44100 -strict -2 \
       -acodec libmp3lame 850_segment_1.mp3

ffmpeg version 3.0.git Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.2) 20160609
  configuration: --prefix=/home/daryl/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/daryl/ffmpeg_build/include --extra-ldflags=-L/home/daryl/ffmpeg_build/lib --bindir=/home/daryl/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
  libavutil      55. 32.100 / 55. 32.100
  libavcodec     57. 63.103 / 57. 63.103
  libavformat    57. 52.100 / 57. 52.100
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 64.100 /  6. 64.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  2.100 /  2.  2.100
  libpostproc    54.  0.100 / 54.  0.100
Input #0, matroska,webm, from '850_segment_1_remote_0.webm':
  Metadata:
    encoder         : Chrome
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
    Stream #0:1(eng): Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
Input #1, matroska,webm, from '850_segment_1_remote_1.webm':
  Metadata:
    encoder         : Chrome
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #1:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)
    Stream #1:1(eng): Video: vp8, yuv420p, 480x640, SAR 1:1 DAR 3:4, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
Input #2, matroska,webm, from '850_segment_1_local_0.webm':
  Metadata:
    encoder         : Chrome
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #2:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)
    Stream #2:1(eng): Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc (default)
[Parsed_amerge_0 @ 0x2b56680] No channel layout for input 1
[Parsed_amerge_0 @ 0x2b56680] Input channel layouts overlap: output layout will be determined by the number of distinct input channels
[libmp3lame @ 0x2b55d60] Specified channel layout '2.1' is not supported
Stream mapping:
  Stream #0:0 (opus) -> amerge:in0
  Stream #1:0 (opus) -> amerge:in1
  Stream #2:0 (opus) -> amerge:in2
  amerge -> Stream #0:0 (libmp3lame)
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

Спасибо @Mulvya!

Две версии команды, которые работают:

ffmpeg -itsoffset 8.698 -i 850_segment_1_remote_0.webm \
       -itsoffset 9.705 -i 850_segment_1_remote_1.webm \
       -i 850_segment_1_local_0.webm \
       -filter_complex " [0:a][1:a][2:a]amerge=inputs=3[a]" \
       -map "[a]" -ac 2 -ar 44100 -strict -2 \
       -acodec libmp3lame 850_segment_1.mp3

ffmpeg -itsoffset 8.698 -i 850_segment_1_remote_0.webm \
       -itsoffset 9.705 -i 850_segment_1_remote_1.webm \
       -i 850_segment_1_local_0.webm \
       -filter_complex " [0:a][1:a][2:a]amerge=inputs=3[a]" \
       -map "[a]" -ac 3 -ar 44100 -strict -2 \
       -acodec aac 850_segment_1.m4a

1 ответ1

2

MP3 не поддерживает более 2 каналов. Измените -ac 3 на -ac 2 или выберите другой аудиокодек, такой как AAC.

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