Arregle archivos y transmisiones defectuosos con ffmpeg para que VLC y otros jugadores no se bloqueen


17

Me sucedió muchas veces que podría terminar en archivos de video corruptos:

  • video descargado de fuentes oficiales pero con torrent y por alguna razón no todas las piezas están en .mkv, .ts o .mp4
  • registros en formato .ts donde en cierto punto faltan los datos
  • videos copiados de un disco duro viejo con sectores dañados

Cuando reproduzco estos videos con VLC u otros jugadores, se reproducen hasta cierto punto y luego salen instantáneamente. A veces puedo intentar omitir la parte mala, pero podría encontrarme con otro sector malo y volver a tener una interrupción instantánea.

La pregunta es:

¿Puedo solucionar estos problemas (supongo que están relacionados con secuencias y fotogramas clave) con ffmpeg y tal vez en una copia -c, así que no tengo que volver a comprimir todo?

Lo que quiero lograr es un video completo donde se omitan las partes faltantes, prefiero un error en lugar de que mis videos se bloqueen.


Respuestas:


26

Si partes del archivo residen en sectores físicamente defectuosos, o por alguna razón, el sistema operativo no puede enviar el archivo completo a FFmpeg, entonces, naturalmente, FFmpeg no puede hacer nada al respecto. Debería obtener una utilidad que pueda ignorar esas partes y escribir las partes recuperables en un nuevo archivo, como ddrescue .

Ahora, si el protocolo del archivo no es la causa de los errores, puede intentar

ffmpeg -err_detect ignore_err -i video.mkv -c copy video_fixed.mkv

1
Esto funciona, pero falla sin él -c copy. Sorprendente que no funciona durante la recodificación.
— intuido

Incluso con eso, todavía estoy recibiendo Invalid data found when processing input, y ffmpeg se rinde.
— Mikhail T.

Buena solución ... si el átomo de moov (en un archivo MP4) todavía está presente en alguna parte. ¿Qué pasa si ni siquiera está allí?
— Gwyneth Llewelyn

Funciona a mi fin con sorprendente bondad :)
— Shirish

5

En la búsqueda de una mejor respuesta, una posible forma podría ser:

ffmpeg -i video.mkv -c copy video_fixed.mkv

Sin embargo, estoy bastante seguro de que hay algunas opciones adicionales que pueden hacer que el resultado sea aún mejor ...


1
Funciona para mí cada vez que tengo algún tipo de problema con los metadatos, las marcas de tiempo o la información del contenedor. Y es muy rápido, generalmente más rápido que la velocidad de reproducción de 400x.
— user24601

Este comando salvó mi trasero, para ser sincero.
— neverMind9
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.