Ayuda de mapeo ffmpeg, codifica audio de 1 6 canales en múltiples pistas

Ayuda de mapeo ffmpeg, codifica audio de 1 6 canales en múltiples pistas

Tengo 2 archivos de entrada:

  • cover.jpg
  • audio.dts(6 canales)

Mi archivo de destino será un mp4 con 1 video y 3 audio:

  • El audio 1 es aac de 2 canales.
  • El audio 2 es de 6 canales ac3.
  • audio 3 es dts de 6 canales

Aquí está el comando que he probado. Imagen Imagen a Vídeo con audio multicanal:

ffmpeg -loop 1 -i cover.jpg -i audio.dts \
-map 0:0 -map 1:0 -map 1:0 -map 1:0 \
-f mp4 \
-codec:v:0 libx264 -r:0 1 -profile:v:0 main -level 3.1 -pix_fmt:0 yuv420p -qmax:0 19 -qmin:0 18 \
-codec:a:0 libfaac -ac:0 2 -ar:0 44100 -q:a:0 640 -af:0 "pan=stereo| FL = FL + 0.5*FC + 1.0*BL + 1.0*SL + 0.8*LFE | FR = FR + 0.5*FC + 1.0*BR + 1.0*SR + 0.8*LFE" \
-codec:a:1 ac3 -ac:1 6 -ab:a:1 640 \
-codec:a:2 copy \
-threads 0 -y \
-shortest -t 00:00:39.000 out.mp4

Pero parece que las opciones de audio que apliqué al audio n.° 1 también se aplicaron al audio n.° 2 y al audio n.° 3.

¿Cómo podría hacer que esa opción funcione solo para una pista?

Respuesta1

Como siempre, existen múltiples formas de realizar tareas como esta dentro de FFmpeg.

Con el que estoy más familiarizado es con el uso del channelsplitfiltro para separar las transmisiones de audio y definir etiquetas para cada una de ellas. De esa manera, puede realizar varios filtros en cualquiera de los canales individualmente y asignar la salida para incluir cualquier combinación de canales que desee.

El filtro se verá así:

ffmpeg -i [INPUT_video] -i [INPUT_3channel_audio] -filter_complex "[1:a]channelsplit[1][2][3];...."

En este ejemplo, hemos dividido cada uno de los 3 canales en nuevas etiquetas: [1] [2]y [3]. Estas etiquetas ahora se pueden invocar más tarde y pasar por otros filtros y/o asignar a la salida final.

¡Espero que esto ayude!

información relacionada