Correggi file e flussi danneggiati con ffmpeg in modo che VLC e altri giocatori non si arrestino


17

Mi è successo molte volte che sono riuscito a finire in file video corrotti:

  • video scaricato da fonti ufficiali ma con torrent e per qualche ragione non tutti i brani sono presenti in .mkv, .ts o .mp4
  • registra in formato .ts dove ad un certo punto mancano i dati
  • video copiati da un vecchio disco rigido con settori danneggiati

Quando riproduco questi video con VLC o altri giocatori, questi vengono riprodotti fino a un certo punto e poi escono immediatamente. A volte posso provare a saltare la parte cattiva, ma potrei incontrare un altro settore difettoso e riavviare.

La domanda è:

Posso risolvere questi problemi (suppongo che stream e keyframe siano correlati) con ffmpeg e magari in una copia -c quindi non devo ricomprimere tutto?

Quello che voglio ottenere è un video integrale in cui vengono saltate le parti mancanti, preferisco un problema tecnico piuttosto che il crash dei miei video.


Risposte:


26

Se parti del file risiedono in settori fisicamente danneggiati o per qualsiasi motivo, il sistema operativo non può servire l'intero file a FFmpeg, quindi FFmpeg non può farci nulla. Dovresti ottenere un'utilità che può ignorare quelle parti e scrivere le parti salvabili in un nuovo file, come ddrescue .

Ora, se il protocollo del file non è la causa degli errori, puoi provare

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

1
Funziona, ma fallisce senza -c copy. Sorprendente che non funzioni durante la ricodifica.
intuito

Anche con quello, sto ancora ottenendo Invalid data found when processing input- e ffmpeg si arrende.
Mikhail T.

Bella soluzione ... se l'atomo moov (su un file MP4) è ancora presente da qualche parte. E se non fosse nemmeno lì?
Gwyneth Llewelyn,

Funziona alla mia fine con sorprendente bontà :)
shirish

5

Alla ricerca di una risposta migliore un possibile modo potrebbe essere:

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

Tuttavia sono abbastanza sicuro che ci sono alcune opzioni extra che possono rendere il risultato ancora migliore ..


1
Funziona per me ogni volta che ho qualche tipo di problema con i metadati, i timestamp o le informazioni sul contenitore. Ed è molto veloce, di solito più veloce della velocità di gioco 400x.
user24601

Questo comando mi ha salvato il culo, per essere sincero.
neverMind9
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.