Cómo recuperar un archivo de vídeo en Linux

Cómo recuperar un archivo de vídeo en Linux
downhill-min

¡Buenas a todos! Hoy os traigo un tutorial en el que trataré de explicar cómo recuperar la información de un archivo de vídeo que creíamos haber perdido para siempre. Primero os contaré la historia que me llevó a investigar ayer sobre este tema, para poneros en situación. Salí de buena mañana a hacer una ruta en bici con otros 3 amigos. Todo dentro de la normalidad hasta que llegamos a un lugar en el que solo existía una opción para poder bajar a la zona por donde continuaba el camino. La inclinación era tan grande que dos de mis compañeros decidieron bajar caminando, sin ir montados en la bici. Mi otro amigo y yo teníamos ganas de recibir un chute de adrenalina de los fuertes, así que nos dispusimos a bajar subidos a la bici tratando de no estrellarnos, mientras nos grababan con un móvil Sony desde abajo.

Mountain Bike

El resultado: un vídeo de los épicos que todos queríamos ver en ese mismo momento. Desafortunadamente, el móvil de mi amigo no fue capaz de guardarlo de forma correcta y era imposible reproducirlo. Seguimos ruta con la esperanza de poder verlo desde el ordenador al llegar a casa, pero el archivo estaba estropeado y no había forma de visualizar el vídeo. Buscando un poco por GitHub encontré un programa creado precisamente para recuperar vídeos con errores. Más adelante os enlazo al repositorio en el que podréis ver el código, que está liberado completamente. ¡Un fuerte aplauso para @Ponchio, su creador! Una vez contada la historia, vamos a lo interesante: cómo conseguir recuperar el vídeo paso a paso.

  • Paso 1: Comprobamos que existe información en el archivo

Parece lógico, pero por si acaso, lo incluyo como primer paso. Como veis, en mi caso el archivo ocupa 271,1MB (lo que significa que la información está ahí, pero no podemos verla porque se ha guardado de forma incorrecta).

A continuación, instalamos Untrunc. Os indico cómo hacerlo en los próximos pasos, es muy sencillo. Las instrucciones detalladas se encuentran en el Readme del repositorio de Ponchio. Leedlas si usáis otro SO que no sea Ubuntu.

  • Paso 2: Instalamos una serie de librerías Libav con el comando:

sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev Si usas otro SO que no sea Ubuntu (o una versión antigua de este), quizás debas instalar manualmente Libav.

  • Paso 3: Descargamos el código fuente de Untrunc, desde Github:

wget https://github.com/ponchio/untrunc/archive/master.zip

  • Paso 4: Descomprimimos el código fuente

unzip master.zip

  • Paso 5: Nos movemos al directorio donde se encuentra el código fuente descomprimido

cd untrunc-master

  • Paso 6: Compilamos el código fuente con un único comando

g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil

  • Paso 7: Ejecutamos el programa

Para asegurar el éxito en la recuperación del archivo, es necesario contar con un vídeo grabado con el mismo dispositivo que sí se haya guardado bien. Podéis grabar otro vídeo nuevo, al que en mi caso he llamado "good.mp4". ¿Por qué necesitamos un vídeo de las mismas características? Está claro: porque ayudaremos al programa a detectar los errores presentes en el archivo corrupto y a repararlos comparando la información con el que sí se ha guardado bien. Como una imagen vale más que mil palabras, aquí tenéis una comparativa entre los dos vídeos (he utilizado GHex como editor hexadecimal para ver los datos "puros").

comparativa

Como veis, la información de la cabecera no se encuentra presente en el archivo "broken.mp4", pero sí que está en el archivo "good.mp4". Haciendo scroll en el archivo estropeado sí que aparece toda la información que estamos intentando rescatar, así que por suerte parece que Untrunc podría llegar a arreglar nuestro problema.

scroll

Para ejecutar el programa debemos estar siempre ubicados dentro de la carpeta untrunc-master. Podéis comprobar que estáis trabajando en ese directorio con Print Working Directory, comando pwd Una vez comprobado que estamos trabajando en la carpeta en la que se encuentra Untrunc, simplemente ejecutamos el programa pasando como argumentos las ubicaciones del vídeo que se ha grabado correctamente y del que se guardó con errores, respectivamente. ./untrunc /home/tu_usuario/video_good.formato /home/tu_usuario/video_broken.formato #En mi caso, como ejemplo: ./untrunc /home/javierlight/good.mp4 /home/javierlight/broken.mp4 El resultado de la ejecución de Untrunc, si todo funciona bien, será la creación de un nuevo vídeo con sufijo "fixed" que aparecerá en tu carpeta. En teoría, ese será el vídeo restaurado. Con suerte no tendréis que utilizarlo nunca, pero si se da la circunstancia, aquí queda. Espero que sea de utilidad, ¡saludos a toda la comunidad! :)