Estaba grabando un archivo MP4 usando PlaysTV, y mi computadora tuvo una falla de energía a la mitad de la grabación. Estoy seguro de que el archivo contiene datos válidos, es solo que ningún reproductor multimedia lo reconocerá.
Para solucionarlo, probé Avidemux, probé numerosos programas enumerados en otras preguntas en stackexchange. Y hasta ahora nada ha funcionado.
La salida ffmpeg -i es la siguiente:
libavutil 55. 24.100 / 55. 24.100
libavcodec 57. 43.100 / 57. 43.100
libavformat 57. 37.100 / 57. 37.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.100 / 6. 46.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 000000000262d040] moov atom not found
2016_05_27_20_08_12-ses.mp4: Invalid data found when processing input
Salida de información multimedia:
General
Complete name : F:\vids\2016_05_27_20_08_12-ses.mp4
Format : MPEG-4
Format profile : Base Media / Version 2
Codec ID : mp42 (mp41/isom)
File size : 1.21 GiB
Probablemente existan servicios pagos que arreglarán este archivo para mí, sin embargo, dado que es un archivo (bastante) grande, cuestan demasiado.
¿Puede alguien ayudarme aquí?
Recientemente encontré este problema exacto y pude reparar el archivo usando Untrunc , un programa creado específicamente para resolver este problema, como lo sugirió sparrowt en SuperUser :
Para este método necesitas:
otro archivo de video que no está roto
una instalación de linux (utilicé Ubuntu 12.04) y capacidad básica para usar una línea de comando.
Esto es lo que hay que hacer:
Instale algunas bibliotecas de requisitos previos con este comando:
sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev
Descargue el código fuente de Untrunc del repositorio de github:
wget https://github.com/ponchio/untrunc/archive/master.zip
Descomprimir el código fuente:
unzip master.zip
Vaya al directorio donde se ha descomprimido:
cd untrunc-master
Compile el código fuente usando este comando (todo en una línea):
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil
(puede intentar omitir este paso y usar el ejecutable ya provisto, pero no funcionó para mí)
Entonces puedes arreglar el video. Necesita tanto el video roto como un video de trabajo de ejemplo.
Idealmente, el video debería ser de la misma cámara y tener la misma resolución (el mío lo era, pero podría funcionar sin él). Además, si es al menos tan largo como el roto (preferiblemente más o menos igual), esto puede ayudar.
Ejecute este comando en la carpeta donde descomprimió y compiló Untrunc, pero reemplace los bits /path/to/... con sus 2 archivos de video:
./untrunc /path/to/working-video.m4v /path/to/broken-video.m4v
Luego debería funcionar y, con suerte, producir un archivo reproducible llamado
broken-video_fixed.m4v
Eso es todo lo que has hecho!
VLC Media Player ahora debería poder reproducir el archivo. Sin embargo, puede estar informando la información de longitud incorrecta (Untrunc intenta adivinar/resolver esto, pero no siempre lo hace bien). Para solucionar esto, intente volver a codificar el video a través de otro programa.
track.cpp:60:32: fatal error: libavcodec/h264dec.h
Actualizado : esta herramienta ahora puede recuperar archivos de más fuentes.
Prueba con recovery_mp4_to_h264 . Es un programa de línea de comandos y requerirá un buen archivo de referencia.
Uso como se indica:
recover_mp4 in_good_similar.mp4 --analyze
recover_mp4 in_corrupted.mp4 {out_video.h264 | out_video.hevc | --novideo} [out_audio.aac | out_audio.wav | out_audio.mp3 | out_audio.raw | --noaudio] [options]
recover_mp4
, ya no ofrece esa descarga y, en cambio, solo repara archivos en línea a través de su sitio (por una tarifa). Todavía puede obtener una versión anterior de esa herramienta (legalmente; Restore.media incluso proporciona el enlace directo para la descarga ). Lamentablemente, es de código cerrado y solo está disponible para Windows (32/64 bits)...También puede, para ahorrarse problemas, verificar que los datos estén allí primero. El tamaño del archivo es de 1,21 GB, ¿suena correcto para el tiempo hasta que se quedó sin energía?
Menciono esto porque algunos programas escriben los datos primero en la memoria... a veces fragmentos de datos muy grandes, antes de enviarlos al disco.
Con un MP4, el video debería reproducirse, si tiene encabezados válidos, hasta el último paquete correcto que contenga los fotogramas clave/i correctos.
Lo que me viene a la cabeza es que es posible que los datos no estén allí, ya que se habían guardado en la memoria, pero no en el disco: haría un registro de prueba (factorizando el tiempo que "debería estar" y compararía el archivo tamaños). Antes de saltar a través de aros.
Friki mayor
aficionado