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.
Odpowiedzi:
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ć
źródło
-c copy
. Zaskakujące, że nie działa podczas przekodowywania.Invalid data found when processing input
- i ffmpeg się poddaje.W poszukiwaniu lepszej odpowiedzi możliwym sposobem może być:
Jestem jednak pewien, że istnieją dodatkowe opcje, dzięki którym wynik może być jeszcze lepszy.
źródło