Elimine 4 canales de audio vacíos de MOV con 6 canales en una secuencia

Elimine 4 canales de audio vacíos de MOV con 6 canales en una secuencia

Tengo que trabajar con archivos de video obviamente grabados con algún tipo de configuración 5.1 donde solo dos canales se llenaron con señales mono de dos micrófonos separados. Mi idea es usar ffmpeg para eliminar los cuatro canales vacíos pero estoy perdido.

Logré eliminar todas las transmisiones de audio, pero después de horas de intentos y errores usando -map, -filter, etc., no logré eliminar los canales vacíos dentro de la transmisión de audio. Los canales 3 y 4 contienen el audio que me gustaría tener como pistas mono separadas. Los canales 1,2,5,6 deben eliminarse y la transmisión de video simplemente debe copiarse.

Este es el resultado de ffprobe:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2.MOV':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2022-01-21T04:37:49.000000Z
    make            : Atomos
    make-eng        : Atomos
    encoder         : ShogunInferno - 9.11
    encoder-eng     : ShogunInferno - 9.11
    com.atomos.hdr.gamut: Rec709
    com.atomos.hdr.gamma: SLog2
    com.atomos.hdr.camera: Sony
    com.apple.proapps.image.{TIFF}.Make: Atomos
    com.apple.proapps.image.{TIFF}.Model: ShogunInferno
    com.apple.proapps.image.{TIFF}.Software: 9.11
    timecode        : 05:11:39:13
  Duration: 00:01:14.78, start: 0.000000, bitrate: 1064887 kb/s
  Stream #0:0[0x1](eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 6 channels, s32 (24 bit), 6912 kb/s (default)
    Metadata:
      creation_time   : 2022-01-21T04:37:49.000000Z
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](eng): Video: prores (Standard) (apcn / 0x6E637061), yuv422p10le(tv, bt709/bt709/unknown, progressive), 4096x2160, 1057968 kb/s, SAR 1:1 DAR 256:135, 50 fps, 50 tbr, 5k tbn (default)
    Metadata:
      creation_time   : 2022-01-21T04:37:49.000000Z
      vendor_id       : appl
      encoder         : Apple ProRes 422
  Stream #0:2[0x3](eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2022-01-21T04:37:49.000000Z
      timecode        : 05:11:39:13

Gracias por la ayuda...

Respuesta1

No estoy muy seguro del diseño del canal, puedes probar la siguiente sintaxis:

ffmpeg -y -i six_channels.mp4 -filter_complex "[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FC][LFE]amix=inputs=2[a];[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink" -map 0:v -map "[a]" -vcodec copy -acodec aac -ar 48000 -ac 2 stereo.mov


  • [0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]- divida el diseño 5.1 en 6 canales de audio con los nombres temporales [FL],,,,,, .[FR][FC][LFE][BL][BR]
  • [FC][LFE]amix=inputs=2[a]- fusiona canales [FC]y [LFE]nombres temporales [a].
  • [FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink- ignora los canales de audio redundantes.
  • -vcodec copy -acodec aac -ar 48000 -ac 2- seleccione el códec de audio, la frecuencia de muestreo y el número de canales de salida.

Creando la entrada a six_channels.mp4(para probar):

ffmpeg -y -f lavfi -i testsrc=size=192x108:rate=1 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=300 -f lavfi -i sine=frequency=400 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=1000 -filter_complex "join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-LFE|4.0-BL|5.0-BR" -acodec aac -ar 48000 -ac 6 -t 10 six_channels.mp4


Actualizar:

Dos pistas mono independientes y códec PCM24:

Ejemplo de línea de comando:

ffmpeg -y -i six_channels.mp4 -filter_complex "[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink" -map 0:v -map "[FC]" -map "[LFE]" -vcodec copy -acodec pcm_s24le -ar 48000 -ac 1 two_mono_tracks.mov

información relacionada