Durante estos días he estado bajando películas full hd para verlas en el lcd que hay en mi casa. No tengo problemas de leer los subtitulos pero mi papá a su edad ya no le gusta por lo tanto su ideal es verlas en español. Aquí el problema por que es complicado encontrar películas en 1080p con idioma español latino que no pesen 40gb (que vendría siendo un full blu-ray o algo asi) entonces me tuve que idear una solución.

Que necesitamos:

  • Una película en hd (en mi caso un .mkv de 1080p con un tamaño aproximado de 8gb)
  • Una película dvdrip o similar con idioma español latino (700mb aproximadamente).
  • Tener instalado lo siguiente en linux:


sudo apt-get install mkvtoolnix ffmpeg libavcodec-unstripped-52

Con lo anterior ya podemos comenzar.

En primer lugar voy a extraer el audio en inglés de la película para poder saber si el tamaño del audio en latino que insertaré coinciden y si no es así hacerlos coincidir para evitar ese desface molesto que podría quedar. Para saber que track extraer realizamos el siguiente comando:

mkvmerge -i 2012.2009.BluRay.1080p.x264.mkv
File '2012.2009.BluRay.1080p.x264.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_DTS)
Track ID 3: subtitles (S_TEXT/UTF8)
Track ID 4: subtitles (S_TEXT/UTF8)
Track ID 5: subtitles (S_TEXT/UTF8)
Track ID 6: subtitles (S_TEXT/UTF8)
Track ID 7: subtitles (S_TEXT/UTF8)
Track ID 8: subtitles (S_TEXT/UTF8)
Track ID 9: subtitles (S_TEXT/UTF8)
Track ID 10: subtitles (S_TEXT/UTF8)
Track ID 11: subtitles (S_TEXT/UTF8)
Track ID 12: subtitles (S_TEXT/UTF8)
Track ID 13: subtitles (S_TEXT/UTF8)

Podemos observar que el audio está en el track 2 entonces procedemos a extraerlo:

mkvextract tracks Alice.in.Wonderland.1080p.Bluray.x264-CBGB.mkv 2:Audio.dts
Extracting track 2 with the CodecID 'A_DTS' to the file 'Audio.dts'. Container format: Digital Theater System (DTS)
Progress: 100%

Con el paso anterior guardamos el archivo de audio en “Audio.dts”, sin embargo el único fin que tendrá este archivo es revisar si coincide con el audio que posteriormente vamos a extraer del video en español latino por lo tanto para ahorrar espacio en mi pequeño disco duro lo transformaré a un mp3 de 128kb/s

ffmpeg -i Audio.dts -acodec libmp3lame -ab 128k -ac 2 audio.mp3
rm Audio.dts

Ya con el audio extraído y transformado nos queda extraer el audio en español latino. Para esto usaré un dvdrip de la película. Lo primero es comprobar la calidad del audio del avi para extraerlo a una similar o la misma:

ffmpeg -i Alice\ in\ Wonderland\[2010\]DvdRip.XviD\[Lat\]-YeZo74.avi
Input #0, avi, from 'Alice in Wonderland[2010]DvdRip.XviD[Lat]-YeZo74.avi':
Duration: 01:48:34.87, start: 0.000000, bitrate: 901 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 624x346 [PAR 1:1 DAR 312:173], 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 112 kb/s

Nos damos cuenta que el archivo cuenta con una calidad de 112kb/s por lo tanto lo voy a extraer a 128kb/s

ffmpeg -i Alice\ in\ Wonderland\[2010\]DvdRip.XviD\[Lat\]-YeZo74.avi -acodec libmp3lame -ab 128k -ac 2 audio_latino.mp3

Ahora con ambos audios extraidos vamos a comprobar su largo de una forma muy simple y trivial, mplayer.


mplayer audio.mp3
MPlayer SVN-r29237-4.4.1 (C) 2000-2009 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing audio.mp3.
Audio only file format detected.
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
[pulse] working around probably broken pause functionality,
see http://www.pulseaudio.org/ticket/440
AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video

A: 10.1 (10.1) of 6514.0 ( 1:48:34.0) 0.1%

Y el audio latino:

mplayer audio_latino.mp3
MPlayer SVN-r29237-4.4.1 (C) 2000-2009 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing audio_latino.mp3.
Audio only file format detected.
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
[pulse] working around probably broken pause functionality,
see http://www.pulseaudio.org/ticket/440
AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video

A: 25.9 (25.8) of 6514.0 ( 1:48:34.0) 0.1%

Si comparamos las últimas líneas nos daremos cuenta afortunadamente que son del mismo largo y falta solo agregarle el track en latino a la película* para luego guardarlo en un nuevo archivo llamado “AliciaEngSpa.mkv”:


mkvmerge -o AliciaEngSpa.mkv Alice.in.Wonderland.1080p.Bluray.x264-CBGB.mkv audio_latino.mp3
mkvmerge v2.9.8 ('C'est le bon') built on Aug 19 2009 16:59:31
'Alice.in.Wonderland.1080p.Bluray.x264-CBGB.mkv': Using the Matroska demultiplexer.
'audio_latino.mp3': Using the MP2/MP3 demultiplexer.
Warning: 'audio_latino.mp3': Skipping 32 bytes at the beginning (no valid MP3 header found).
'Alice.in.Wonderland.1080p.Bluray.x264-CBGB.mkv' track 1: Using the MPEG-4 part 10 (AVC) video output module.
'Alice.in.Wonderland.1080p.Bluray.x264-CBGB.mkv' track 2: Using the DTS output module.
'Alice.in.Wonderland.1080p.Bluray.x264-CBGB.mkv' track 3: Using the text subtitle output module.
'audio_latino.mp3' track 0: Using the MPEG audio output module.
The file 'AliciaEngSpa.mkv' has been opened for writing.
Progress: 100%
The cue entries (the index) are being written...
Muxing took 923 seconds.

Y finalmente revisamos si quedó todo bien agregado:

mkvmerge -i AliciaEngSpa.mkv
File 'AliciaEngSpa.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_DTS)
Track ID 3: subtitles (S_TEXT/UTF8)
Track ID 4: audio (A_MPEG/L3)
Chapters: 16 entries

Si queremos optimizar nuestro ripeo dejando el audio en español por defecto basta codificar el video nuevamente con estos parámetros:

mkvmerge -o AliciaEngSpaDefault.mkv --default-track 4:yes AliciaEngSpa.mkv

Con esto finalizamos y tenemos nuestro nuevo video con el audio en español incluido.

*Se pueden crear con más opciones y de forma más sofisticada, esta es la más simple y agrega todo por defecto.

Edito:

Si nos bajamos una película con audio ac3 en 5.1 canales podemos extraerlo tal cual y abrir el audio en inglés además del que vamos a extraer en ac3 con audacity y sincronizarlos si es necesario.

ffmpeg -i peliculaAudioAC351.avi -acodec copy audio.ac3

Anuncios