¿Cómo desvanecer el audio Y el video mp4 con FFmpeg?

¿Cómo desvanecer el audio Y el video en un archivo * .mp4? Si pruebo el código de esta respuesta :

ffmpeg -i "c:/input.mp4" -filter:v 'fade=in:0:30,fade=out:227:30' -c:v libx264 -crf 22 -preset veryfast -c:a copy "c:/testsong.mp4"

Yo obtengo:

[AVFilterGraph @ 000001e0f41affc0] No such filter:  fade=in:0:30,fade=out:227:30'
Error opening filters!

Salida completa:

125 kb/s (predeterminado) Metadatos: tiempo_creación: 2016-08-24T16:42:38.000000Z nombre_controlador: archivo multimedia ISO producido por xyz... Asignación de flujo: flujo #0:0 -> #0:0 (h264 (nativo ) -> h264 (libx264)) Transmisión #0:1 -> #0:1 (copiar) Presione [q] para detener, [?] para obtener ayuda [AVFilterGraph @ 0000000002d64580] No hay tal filtro: 'fade=in:0: 30,fade=out:227:30' ¡Error al reiniciar los filtros! No se pudo inyectar el marco en la red de filtro: Argumento no válido ¡Error al reiniciar los filtros! No se pudo inyectar el marco en la red de filtro: Argumento no válido ¡Error al reiniciar los filtros! No se pudo inyectar el marco en la red de filtro: Argumento no válido

¿Qué pasa aquí? ¡Gracias por adelantado!

¡Bienvenidos! Comparta la salida completa de la consola, no solo el error.
Actualice su versión de ffmpeg a una más reciente.

Respuestas (2)

Desvanecer video y audio

En primer lugar, el comando que proporcionó no logrará el efecto deseado: el fadefiltro solo se aplica a una transmisión de video , además de que lo aplica específicamente a su transmisión de video de entrada con -filter:v.

Para desvanecer tanto el audio como el video, necesitará ambos afadey fadefiltros .

P.ej

ffmpeg -i input.mp4 -filter:v "fade=in:0:30, fade=out:1770:30" -filter:a "afade=in:0:44100, afade=out:2601900:44100" -c:v libx264 -c:a aac output.mp4

Este comando hace que aparezcan y desaparezcan los primeros y últimos 30 cuadros de video y 44100 muestras de audio, en un video de 1800 cuadros de longitud y 2646000 muestras de longitud (que, si su velocidad de fotogramas es de 30 fps y la frecuencia de muestreo de 44100 Hz, será la primera y la última). segundo de su clip de 60 segundos de duración).

Trabajar con cuadros y muestras puede ser muy poco práctico, por lo que para trabajar con el inicio y la duración en segundos, use los parámetros st(inicio) yd (duración) , así:

ffmpeg -i input.mp4 -filter:v "fade=in:st=0:d=1, fade=out:st=59:d=1" -filter:a "afade=in:st=0:d=1, afade=out:st=59:d=1" -c:v libx264 -c:a aac output.mp4

(aparece y desaparece el primer y el último segundo de un clip de los años 60)

Consulte la documentación de los filtros de atenuación y desvanecimiento para obtener más detalles sobre los parámetros.

Alternativamente, también puede usar un gráfico de filtro complejo como lo sugiere Manul Hüttinger, que puede ser útil si necesita aplicar más filtros a su clip:

ffmpeg -i input.mp4 -filter_complex \
  "fade=in:st=0:d=1, fade=out:st=59:d=1; \
   afade=in:st=0:d=1, afade=out:st=59:d=1" \
 -c:v libx264 -c:a aac output.mp4

En cuanto a su error en particular

No estoy seguro de dónde viene tu error, pero deberías intentar lo siguiente:

  • Primero, actualice su ffmpeg : su libavfilter está en la versión 6.99.100, la última es al menos 7.6.100
  • Supongo que estás en Windows, dada la ruta del archivo y el número de compilación. Tenga en cuenta que no puede usar comillas simples ( ') en Windows, debe usar comillas dobles ( ") . Mirando la salida de la consola, este podría ser el origen de su error:

[AVFilterGraph @ 0000000002d64580] No such filter: fade=in:0:30,fade=out:227:30'

  • Luego, si sigue fallando, intente con una entrada diferente (el mensaje de error podría indicar un error de codificación/descodificación:

Failed to inject frame into filter network: Invalid argument Error while processing the decoded data for stream #0:0 Conversion failed

intentar-filter_complex "fade=t=in:st=0:d=30,fade=t=out:st=227:d=30"

¿Puede explicar cómo funcionará esto en comparación con lo que ya probó el OP? Eso hará que esto sea útil para otros que intentan resolver problemas similares.