Napraw złe pliki i strumienie za pomocą ffmpeg, aby VLC i inne odtwarzacze nie ulegały awarii

17

Wielokrotnie zdarzało mi się, że mogłem skończyć w uszkodzonych plikach wideo:

  • wideo pobrane z oficjalnych źródeł, ale z torrentem iz jakiegoś powodu nie wszystkie elementy są w .mkv, .ts lub .mp4
  • rekordy w formacie .ts, w którym w pewnym momencie brakuje danych
  • skopiował filmy ze starego dysku twardego z uszkodzonymi sektorami

Kiedy odtwarzam te filmy z VLC lub innymi odtwarzaczami, odtwarzają się one do pewnego momentu, a następnie natychmiast wychodzą. Czasami mogę spróbować pominąć złą część, ale mogłem spotkać inny zły sektor i ponownie od razu odejść.

Pytaniem jest:

Czy mogę rozwiązać te problemy (przypuszczam, że związane są ze strumieniem i klatkami kluczowymi) za pomocą ffmpeg i być może w sposób kopiowania -c, więc nie muszę wszystkiego kompresować?

To, co chcę osiągnąć, to film o pełnej długości, w którym brakujące części są pomijane, wolę usterkę niż awarię moich filmów.

użytkownik3450548
źródło

Odpowiedzi:

26

Jeśli części pliku znajdują się w fizycznie uszkodzonych sektorach lub z jakiegokolwiek powodu, system operacyjny nie może udostępnić całego pliku FFmpeg, to oczywiście FFmpeg nie może nic z tym zrobić. Powinieneś dostać narzędzie, które może zignorować te części i zapisać części do odzyskania w nowym pliku, takim jak ddrescue .

Teraz, jeśli protokół pliku nie jest przyczyną błędów, możesz spróbować

ffmpeg -err_detect ignore_err -i video.mkv -c copy video_fixed.mkv
Gyan
źródło
1
To działa, ale bez tego kończy się niepowodzeniem -c copy. Zaskakujące, że nie działa podczas przekodowywania.
intuicyjnie
Mimo to wciąż otrzymuję Invalid data found when processing input- i ffmpeg się poddaje.
Mikhail T.
Ładne rozwiązanie ... jeśli atom moov (w pliku MP4) nadal gdzieś jest obecny. Co jeśli nawet tam nie ma?
Gwyneth Llewelyn
Działa u mnie z zaskakującą dobrocią :)
shirish
5

W poszukiwaniu lepszej odpowiedzi możliwym sposobem może być:

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

Jestem jednak pewien, że istnieją dodatkowe opcje, dzięki którym wynik może być jeszcze lepszy.

użytkownik3450548
źródło
1
Działa dla mnie za każdym razem, gdy mam jakiś problem z metadanymi, znacznikami czasu lub informacjami o kontenerze. I jest bardzo szybki, zwykle szybszy niż 400-krotna prędkość odtwarzania.
user24601
Szczerze mówiąc to polecenie uratowało mi tyłek.
neverMind9,