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.