Como reemplazar el audio de un video con software libre

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.

Openshot - Propiedades
Para silenciar el video hay que poner la propiedad en cero. Bien intuitivo el asunto.

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.

2 comentarios en “Como reemplazar el audio de un video con software libre”

  1. 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

    Responder
    • 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.

      Responder

¡Me encantaría saber que opinas!

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.