Fondo
Necesito convertir archivos AVI a H264 (MP4). Lo estoy haciendo exitosamente con lo siguiente:
-i mymovie.avi -c:v libx264 -crf 19 -preset slow -c:a libfaac -pix_fmt yuv420p -f mp4 -b:a 192k -y -an output.mp4
Estoy llamando al comando a través de aplicaciones C# .Net Winforms, aunque sospecho que esto tendrá poco impacto en la respuesta.
La pregunta
¿Cómo agrego una pista de audio? Necesito agregar uno, ya que necesito poder subir los videos a Instagram, que parece rechazar archivos sin pista de audio (para mi molestia). En realidad no necesito una pista de audio que sea muy larga. Mis pensamientos fueron un par de segundos de "silencio" en formato MP3.
Creo que necesitaré audio AAC como salida.
Para que conste, también me doy cuenta de que el -an
comando no proporcionará audio y lo he eliminado en mis intentos posteriores.
Intentos hasta ahora
He deducido que necesitaré usar el -shortest
comando ya que el audio será más corto que el video. En realidad, agregaré un MP3 en blanco (o similar) para que, mientras codifico, obtenga una secuencia de audio incrustada en el video.
También intenté usar el -map
comando pero sin éxito.
Respuesta1
Ok, aquí está el comando que tengo funcionando. Descubrí que no tenía libfaac
ffmpeg en mi compilación, así que cambié. Tampoco necesitaba las -map
opciones ya que FFMPEG puede manejar bien 2 entradas sin configuración adicional.
-i test.avi -i music.mp3 -c:v libx264 -crf 19 -preset slow -c:a libvo_aacenc -pix_fmt yuv420p -f mp4 -b:a 192k -y -shortest output.mp4
Las diferencias entre mi original y lo que funciona son:
- libvo_aacenc reemplaza
libfaac
-shortest
Se agrega para lidiar con audio más corto que el video.-i
Se utiliza para proporcionar la entrada de audio.
Actualizar
El comando después de una gran aportación en los comentarios ahora es
-i test.avi -i music.mp3 -c:v libx264 -crf 19 -preset slow -c:a aac -strict experimental -pix_fmt yuv420p -f mp4 -b:a 192k -y -shortest output.mp4
Respuesta2
Puede generar una secuencia de audio silenciosa con elaevalsrc
fuente de audio:
ffmpeg -y -i test.avi -f lavfi -i aevalsrc=0 -c:v libx264 -crf 19 -preset slow \
-pix_fmt yuv420p -shortest output.mp4
Esto es más fácil que utilizar un archivo de audio en blanco como entrada.