audio - poner - unir archivos mp4
¿Cómo agregar un nuevo audio(sin mezclar) en un video usando ffmpeg? (6)
Usé un comando como:
ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio
en la última versión para agregar nueva pista de audio a video (no mezclar).
Pero actualicé el ffmpeg a la versión más nueva ( ffmpeg versión git-2012-06-16-809d71d ) y ahora en esta versión el parámetro -newaudio
no funciona.
Dime por favor cómo puedo agregar audio nuevo a mi video (no mezclar) usando ffmpeg
.
Agregar audio a video: copia de secuencia
ffmpeg -i video.avi -i audio.mp3 -codec copy -shortest output.avi
- Omitir la opción
-map
utilizará la selección de transmisión predeterminada. Esto funcionará si su entrada de video no tiene audio. - Este ejemplo usa
-codec copy
to stream copy (sin recodificación; la calidad se conserva y es rápida). - La opción más
-shortest
hará queoutput.avi
la misma duración que la entrada más corta.
Agregar audio a video: volver a codificar
Si a su salida no le gustan los formatos originales, o si desea cambiar los formatos, puede especificar los codificadores:
ffmpeg -i video.avi -i audio.mp3 -c:v libx264 -c:a libvorbis -shortest output.mkv
Para elegir manualmente flujos específicos
En ocasiones, la selección de transmisión predeterminada no le dará el resultado que desea. En este ejemplo, video.mp4
tiene video y audio, y audio.m4a
solo tiene audio. Use -map
para elegir video de video.mp4
y audio de audio.m4a
:
ffmpeg -i video.mp4 -i audio.m4a -map 0:v -map 1:a -c copy -shortest output.mp4
-
-map 0:v
- De la entrada0
(la primera entrada, que esvideo.mp4
) elije lasv
ideo secuencia (s). -
-map 1:a
- De la entrada1
(la segunda entrada, que esaudio.m4a
) elije la (s) transmisión (es) deaudio.m4a
.
Mezclando / combinando dos entradas de audio en una
Toma video de video.webm
, y usa el filtro de amerge para combinar el audio de video.webm
y audio.oga
:
ffmpeg -i video.webm -i audio.oga -filter_complex /
"[0:a][1:a]amerge=inputs=2[a]" /
-map 0:v -map "[a]" -c:v copy -c:a libvorbis -ac 2 -shortest out.webm
Genera audio silencioso
Puede usar el filtro anullsrc para hacer una transmisión de audio silenciosa. El filtro le permite elegir el diseño de canal deseado (mono, estéreo, 5.1, etc.) y la frecuencia de muestreo.
ffmpeg -i video.mp4 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 /
-c:v copy -shortest output.mp4
Ver también
- Combina dos transmisiones de audio en una
- FFmpeg Wiki: Manipulación del canal de audio
- FFmpeg mux video y audio de otro video
Código para agregar audio a video usando ffmpeg.
Si la duración del audio es mayor que la duración del video, reducirá el audio a la duración del video. Si quieres audio completo en video, quita -distinto del cmd.
String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy", ,outputFile.getPath()};
private void execFFmpegBinaryShortest(final String[] command) {
final File outputFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/videoaudiomerger/"+"Vid"+"output"+i1+".mp4");
String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy","-shortest",outputFile.getPath()};
try {
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
@Override
public void onFailure(String s) {
System.out.println("on failure----"+s);
}
@Override
public void onSuccess(String s) {
System.out.println("on success-----"+s);
}
@Override
public void onProgress(String s) {
//Log.d(TAG, "Started command : ffmpeg "+command);
System.out.println("Started---"+s);
}
@Override
public void onStart() {
//Log.d(TAG, "Started command : ffmpeg " + command);
System.out.println("Start----");
}
@Override
public void onFinish() {
System.out.println("Finish-----");
}
});
} catch (FFmpegCommandAlreadyRunningException e) {
// do nothing for now
System.out.println("exceptio :::"+e.getMessage());
}
}
Ninguna de estas soluciones funcionó para mí. Se sobrescribió mi audio original o recibí un error como "error al mapear la memoria" con el ejemplo más complejo de ''amerge''. Parece que necesitaba -filter_complex amix.
ffmpeg -i videowithaudioyouwanttokeep.mp4 -i audiotooverlay.mp3 -vcodec copy -filter_complex amix -map 0:v -map 0:a -map 1:a -shortest -b:a 144k out.mkv
Si el video de entrada tiene varias pistas de audio y necesita agregar una más, utilice el siguiente comando:
ffmpeg -i input_video_with_audio.avi -i new_audio.ac3 -map 0 -map 1 -codec copy output_video.avi
-map 0
significa copiar (incluir) todas las transmisiones desde el primer archivo de entrada ( input_video_with_audio.avi
) y -map 1
significa incluir todas las transmisiones (en este caso una) desde el segundo archivo de entrada ( new_audio.ac3
).
Si está utilizando una versión anterior de FFMPEG y no puede actualizar, puede hacer lo siguiente:
ffmpeg -i PATH/VIDEO_FILE_NAME.mp4 -i PATH/AUDIO_FILE_NAME.mp3 -vcodec copy -shortest DESTINATION_PATH/NEW_VIDEO_FILE_NAME.mp4
Tenga en cuenta que utilicé -vcodec
música mp3 a wav
ffmpeg -i music.mp3 music.wav
truncar para ajustar el video
ffmpeg -i music.wav -ss 0 -t 37 musicshort.wav
mezclar música y video
ffmpeg -i musicshort.wav -i movie.avi final_video.avi