FFmpeg: mezcla y configuración de cada volumen de un archivo de pista de audio múltiple

3

Estoy tratando de mezclar todas las pistas de audio de un archivo de video de múltiples pistas de audio. Lo hice con éxito pero noté que el primero es ruidoso, el segundo es normal y el tercero es bajo. Me gustaría normalizar o (mejor), configurar el volumen manualmente.

Esto es lo que he intentado, pero no funciona (mensaje de error de análisis), así que supongo que no lo uso de la manera correcta.

$ ffmpeg -i INPUT -c:v libx264 -preset slow -crf 23 -filter_complex "[0:1]volume=0.3;[0:2]volume=0.5;[0:3]volume=0.7 amerge=inputs=3" -c:a libmp3lame OUTPUT

ffmpeg version 2.2.git Copyright (c) 2000-2014 the FFmpeg developers
  built on Jun 13 2014 10:28:46 with gcc 4.8.3 (GCC)
  configuration: --extra-ldflags=-L/usr/local/x86_64-w64-mingw32/lib --prefix=/u
sr/local/x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- --target-os=mingw
32 --enable-w32threads --enable-memalign-hack --arch=x86_64 --enable-runtime-cpu
detect --disable-debug --enable-static --disable-shared --disable-ffplay --disab
le-ffserver --enable-gpl --enable-version3 --enable-nonfree --enable-libmp3lame
--enable-libfdk-aac --enable-libx264
  libavutil      52. 89.100 / 52. 89.100
  libavcodec     55. 66.100 / 55. 66.100
  libavformat    55. 43.100 / 55. 43.100
  libavdevice    55. 13.101 / 55. 13.101
  libavfilter     4.  8.100 /  4.  8.100
  libswscale      2.  6.100 /  2.  6.100
  libswresample   0. 19.100 /  0. 19.100
  libpostproc    52.  3.100 / 52.  3.100
[avi @ 000000000357fee0] non-interleaved AVI
Guessed Channel Layout for  Input Stream #0.1 : stereo
Guessed Channel Layout for  Input Stream #0.2 : stereo
Guessed Channel Layout for  Input Stream #0.3 : stereo
Input #0, avi, from 'hl2 2014-06-14 23-46-14-775.avi':
  Metadata:
    encoder         : DxtoryCore ver2.0.0.114
    ISRC            : Video:Lagarith Lossless Codec Audio0:Line 1 (Virtual Audio
 Cable) Audio1:Line 2 (Virtual Audio Cable) Audio2:Microphone (2- PÚriphÚrique H
igh Definition Audio)
  Duration: 01:04:49.17, start: 0.000000, bitrate: 168913 kb/s
    Stream #0:0: Video: lagarith (LAGS / 0x5347414C), yuv420p, 1920x1080, 164302
 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc
    Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels,
 s16, 1536 kb/s
    Stream #0:2: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels,
 s16, 1536 kb/s
    Stream #0:3: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels,
 s16, 1536 kb/s
Cannot find a matching stream for unlabeled input pad 0 on filter Parsed_amerge_
3
Appuyez sur une touche pour continuer...

Cualquier ayuda bienvenida.

Scandale
fuente
Olvidó la salida completa de la consola de su comando.
llogan
No pensé que fuera útil, pero aquí está: pastebin.com/hTMeUzmp Por cierto, @LordNeckbeard estaba leyendo su respuesta aquí y la última parte no está muy lejos de mi problema.
Scandale

Respuestas:

4
ffmpeg -i input -filter_complex \
"[0:a:0]volume=0.3:precision=fixed[a0]; \
 [0:a:1]volume=0.5:precision=fixed[a1]; \
 [0:a:2]volume=0.7:precision=fixed[a2]; \
 [a0][a1][a2]amerge=inputs=3,pan=stereo:FL<c0+c2+c4:FR<c1+c3+c5[a]" \
-map 0:v -map "[a]" -c:v libx264 -preset slow -crf 23 output.mp4

Pasos de filtrado:

  1. Ajustar manualmente volume. Acabo de copiar tus valores. La precisionopción determina qué formatos de muestra de entrada se permitirán, y fixedes para los formatos de muestra de entrada U8, S16 (como sus entradas) y S32. Alternativamente, antes de volumepoder usar aformatcomo se muestra en esta respuesta para usar la floatprecisión de volumen predeterminada .

  2. Combinar en una secuencia de 6 canales con amerge.

  3. Mezcle 6 canales en estéreo con pan. No he probado si el orden de los canales de entrada es correcto ( c0, c1, c2, etc.).

Notas:

  • Podría intentar omitir volumepara ver si panproporciona un resultado satisfactorio.
  • Puede intentar usarlo -ac 2como una opción de salida en lugar del panfiltro complicado .
lema
fuente
En este comando, nunca especificamos libfdk_aac para la salida de audio final, pero lo usamos como se esperaba. Por qué ? La entrada es pcm.
Scandale
Supongo que mp4 container force aac para la salida?
Scandale
@Scandale Si no se especifica un codificador de audio, y si no se utiliza el modo de copia de flujo , ffmpegutilizará el codificador predeterminado que depende de 1) cómo ffmpegse configuró y 2) el formato del contenedor de salida. libfdk_aaces un buen codificador AAC y MP4 no es compatible pcm_s16le.
llogan