ffmpeg combina los filtros -af y -filter_complex (use la pista izquierda para crear una pista mono *y* normalizar el audio)

ffmpeg combina los filtros -af y -filter_complex (use la pista izquierda para crear una pista mono *y* normalizar el audio)

Tengo capturas de video sin pérdidas de cintas de video que voy a convertir a FFV1 y FLAC. Para unas pocas cintas seleccionadas, en el proceso, también necesito convertir el audio a mono (solo existe la pista izquierda ya que la grabación original es mono, pero el dispositivo de captura siempre graba en estéreo)yNecesito normalizar el audio de una manera que simplemente ajuste el volumen de manera uniforme (nada como compresión o cualquier otra cosa que distorsione el sonido más allá de lo absolutamente necesario) ya que la videocámara es bastante silenciosa y no había forma de ajustar los niveles de audio de los dispositivos de captura. .

Hasta ahora he determinado que necesito estos dos filtros:

Elimine el canal derecho para crear una grabación mono solo con la pista izquierda:

-filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL[left]" -map "[left]"

Normalizar audio:

-af loudnorm=I=-16:LRA=11:TP=-1.5

Sin embargo, no puedo determinar cómo combinar estos dos filtros. He intentado:

ffmpeg -i "input.avi" -filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL[left]" -map "[left]", loudnorm=I=-16:LRA=11:TP=-1.5" -c:v ffv1 -level 3 -slicecrc 1 -c:a flac -compression_level 12 "output.mkv"

cuyos rendimientos:

loudnorm=I=-16:LRA=11:TP=-1.5 -c:v ffv1 -level 3 -slicecrc 1 -c:a flac -compression_level 12 output.mkv: Invalid argument

¿Cómo combino estos dos filtros?

Respuesta1

Al encadenar filtros simples (entrada y salida única), simplemente podemos usar una coma ( ,) entre los filtros encadenados.

La sintaxis de coma significa que la salida del primer filtro es la entrada del siguiente filtro:"[0:a]channelsplit=channel_layout=stereo:channels=FL,loudnorm=I=-16:LRA=11:TP=-1.5[left]"

También tenemos que mapear el video usando -map 0:v.


Línea de comando completa:

ffmpeg -i input.avi -filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL,loudnorm=I=-16:LRA=11:TP=-1.5[left]" -map "[left]" -map 0:v -c:v ffv1 -coder 1 -context 1 -g 1 -slices 24 -slicecrc 1 -c:a flac -compression_level 12 output.mkv

Nota: Mi respuesta se refiere a la corrección de la sintaxis y no a la corrección de los filtros y parámetros de audio (mi conocimiento de audio es bastante limitado).

información relacionada