Respuestas:
Use la -map
opción para elegir sus transmisiones. La selección de flujo predeterminada solo elegirá uno de cada tipo de flujo, por lo que es por eso -map
que debe usarse.
ffmpeg -i video.mkv -i audio.mp3 -map 0:v -map 0:a:0 -map 1:a \
-metadata:s:a:0 language=eng -metadata:s:a:1 language=sme -codec copy \
-shortest output.mkv
0:v
- El se 0
refiere a la primera entrada que es video.mkv
. El v
medio "selecciona el tipo de transmisión de video".
0:a:0
- El se 0
refiere a la primera entrada que es video.mkv
. El a
medio "selecciona el tipo de transmisión de audio". El último se 0
refiere al primer flujo de audio de esta entrada. Si solo 0:a
se usa, todas las transmisiones de video se asignarán.
1:a
- El se 1
refiere a la segunda entrada que es audio.mp3
. El a
medio "selecciona el tipo de transmisión de audio".
-codec copy
se Stream Copy (re-MUX) en lugar de codificar. Si necesita un códec de audio específico, debe especificar -c:v copy
(para mantener el video) y luego, por ejemplo, -c:a libmp3lame
volver a codificar la transmisión de audio a MP3.
-shortest
finalizará la salida cuando finalice la entrada más corta.
ffmpeg -i vid.mkv -i aud.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \
-shortest out.mp4
amerge
filtro se usa aquí, por lo que el audio no se puede copiar en este ejemplo.-codec copy
, pero lo arreglé (versión diferente de ffmpeg), el otro problema que tuve fue con el -map
, se quejó de la cantidad incorrecta de transmisiones.
-map 0:v -map 1:a
. Supongo que esto significa tomar el video del primer archivo (video.mkv) y luego tomar el audio del segundo archivo (audio.mp4) para crear output.mkv ... No estoy seguro de para qué -map 0:a:0
sirve. Lo excluí y obtengo los resultados que quería.