El otro día me vi en la necesidad de reemplazar el audio de un video. El original tenía una narración en español y el objetivo era de que el video final tuviera el audio en inglés.
Tarde unos momentos en averiguar una forma para abordar el problema. Como anteriormente había hecho algunos experimentos con un editor de video fue lo primero que me vino a la mente.
Usando el editor de video Openshot.
Openshot ha cambiado mucho desde la última vez que lo utilice, pero no se si para bien o para mal. Se siente raro, como que tiene vida propia y no hace lo que se espera que tiene que hacer. Simplemente quitar de la pantalla una ventana con un mensaje muy insistente dio al traste con mi apreciación hacia el programa.
Como lo que quería hacer no era muy complicado decidí seguir adelante con Openshot. La idea en mi mente se antojaba muy sencilla.
Lo primero sería agregar el video original, ajustar su audio a mute (o sea ponerlo en silencio), agregar el nuevo audio y revisar su sincronización.
Al final, exportar todo el proyecto y el resultado sería un video con la nueva pista de audio.
Ahí hubiera terminado todo, de no ser que la exportación del video tardó demasiado tiempo. Y para colmo de males, a la mitad de la exportación, el tamaño del archivo generado era exagerado y superado ampliamente comparado con el tamaño del archivo original.
Así que era tiempo de cambiar de enfoque.
Usando la terminal con el comando ffmpeg.
Intenté varias cosas hasta que me encontré con este artículo: Replace the audio track in a video que utiliza la herramienta ffmpeg para completar la tarea.
FFmpeg es una navajita suiza con un montón de herramientas para archivos de video. Con esta simple línea de código en la terminal:
ffmpeg -i audio.mp3 -i video.mp4 -c copy final_video.mp4
Reemplaza el audio original por el contenido en el archivo audio.mp3 y no solo eso, lo hace en un tiempo récord sin aumentar notablemente el tamaño del archivo final.
Al final quedé muy contento con el resultado. Un tip, si tienen problemas para sincronizar el audio con el video les recomiendo Audacity uno de esos programas insignia del software libre presente en todas las plataformas importantes. Aunque manejarlo es tema para muchos artículos una sincronización (aumentando o disminuyendo tiempos) no es complicado.
Espero que esta información les sea útil ¡Hasta la próxima! 🙂
Imagen principal del micrófono gracias a Jonathan Velasquez.
Gracias por tu post
Realice esta prueba y no logre mi cometido
por favor agradezco su ayuda
seguidamente copio los resultados de la consola
ffmpeg -i /mnt/DATOS/T4T3/03\ James\ Blunt\ \ \ Bonfire\ Heart\ \[Official\ Video\].mp3 -i /mnt/DATOS/T4T3/02\ James\ Blunt\ -\ Bonfire\ Heart\ \(Karaoke\ Version\)-JsPFdlBTSx0\ \(copia\).webm -c /mnt/DATOS/T4T3/04\ James\ Blunt\ -\ Bonfire\ Heart\ \(Karaoke\ Version\)-JsPFdlBTSx0\ \(copia\).webm
ffmpeg version 3.3.9 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
configuration: --disable-decoder=amrnb --disable-decoder=libopenjpeg --disable-mips32r2 --disable-mips32r6 --disable-mips64r6 --disable-mipsdsp --disable-mipsdspr2 --disable-mipsfpu --disable-msa --disable-libopencv --disable-podpages --disable-stripping --enable-avfilter --enable-avresample --enable-gcrypt --enable-gnutls --enable-gpl --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libkvazaar --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libxvid --enable-libzvbi --enable-nonfree --enable-opengl --enable-openssl --enable-postproc --enable-pthreads --enable-shared --enable-version3 --incdir=/usr/include/x86_64-linux-gnu --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --toolchain=hardened --enable-frei0r --enable-chromaprint --enable-libx264 --enable-libiec61883 --enable-libdc1394 --enable-vaapi --disable-opencl --enable-libmfx --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libavresample 3. 5. 0 / 3. 5. 0
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
Trailing options were found on the commandline.
Input #0, mp3, from '/mnt/DATOS/T4T3/03 James Blunt Bonfire Heart [Official Video].mp3':
Metadata:
title : Bonfire Heart
album : Moon Landing
artist : James Blunt
genre : Rock;Alternative
encoder : Lavf54.61.104
totaldatarate : 549
starttime : 0
totalduration : 226
canseekontime : true
sourcedata : B4A7D64C2HH1377705521033005
pmsg :
purl :
bytelength : 15492069
Duration: 00:03:45.85, start: 0.025056, bitrate: 192 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 192 kb/s
Stream #0:1: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 300x300 [SAR 1:1 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
Metadata:
comment : Cover (front)
Input #1, matroska,webm, from '/mnt/DATOS/T4T3/02 James Blunt - Bonfire Heart (Karaoke Version)-JsPFdlBTSx0 (copia).webm':
Metadata:
encoder : Lavf56.4.101
Duration: 00:04:13.38, start: -0.007000, bitrate: 491 kb/s
Stream #1:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709/unknown/unknown), 1920x1080, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Stream #1:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
At least one output file must be specified
Hola José,
Parece que el problema es que el comando que tecleaste batalla para crear el archivo de salida.
At least one output file must be specified
Porque no simplificas un poco las rutas y los nombres de los archivos (sin espacios), sólo para estar seguros.
En lugar de un:
-c /mnt/DATOS/T4T3/04\ James\ Blunt\ -\ Bonfire\ Heart\ \(Karaoke\ Version\)-JsPFdlBTSx0\ \(copia\).webm
Prueba con un:
-c /mnt/DATOS/T4TT3/JamesBlunt.webm
Y si funciona, al final solo le tienes que cambiar el nombre al archivo.
Saludos.