Jak mogę naprawić uszkodzony plik AVI?


24

Mam plik .avi o wielkości około 110 MB. Kiedy próbuję odtworzyć go za pomocą VLC Media Player, pojawia się komunikat „Ten plik jest uszkodzony. Czy próbujesz naprawić?” a po wykonaniu tej czynności nadal nie można go odtworzyć.

Czy istnieje jakieś inne oprogramowanie, które może uzyskać z niego dowolne wideo? Może taki, który specjalizuje się w tego rodzaju sprawach? Nie mam wielkiej nadziei, ponieważ pomyślałem, że można by z tego zagrać w VLC, ale pomyślałem, że i tak dam temu szansę ...

Odpowiedzi:


12

W przeszłości miałem trochę szczęścia z wieloma uszkodzonymi / niekompletnymi AVI używającymi DivFix , ale nie jestem pewien, czy działa dobrze na czymkolwiek późniejszym niż Windows XP.

Nowszą wersją jest DivFix ++ :

DivXFix ++ ma na celu naprawę uszkodzonych strumieni plików AVI poprzez przebudowanie indeksu części pliku. Jest to bardzo przydatne podczas próby podglądu filmów, które nie mają części indeksu, ponieważ niektóre pliki są obecnie pobierane z sieci ed2k lub bittorent. DivFix ++ to kompletne przepisanie programu „DivFix” ze względu na błędy i niską wydajność.


2
Niesamowite. Zrobiłem to dla pliku wideo o wielkości 799 MB i działało to jak urok. W rzeczywistości ten plik AVI podczas odtwarzania za pomocą VLC napotkał ten sam błąd. Nigdy nie grał w Windows Media Player. Teraz doskonale gra również w Windows Media Player. Nick - Wielkie dzięki!
Kanini

@Kanini, cieszę się, że DivFix pomógł :)
Nick Josevski

14

Oto kilka programów, które mogą pomóc:

  • VLC powinien zaoferować Ci naprawienie uszkodzonego indeksu pliku AVI podczas jego otwierania.
  • DivFix ++
  • AviFiXP (działa tylko w systemie Windows)

Tutaj jest obszerny samouczek dotyczący naprawy uszkodzonych plików AVI: Napraw uszkodzone lub uszkodzone pliki AVI - AfterDawn: Przewodniki

Możesz także spróbować odbudować kontener, wykonując kopię strumienia bitów za pomocą FFmpeg :

ffmpeg -i input.avi -c copy output.avi

1
W wersji ffmpeg 0.6.2 użyj -vcodec copy -acodec copyzamiast -c copy. Użyłem (dla Windows) tej wersji . Musiałem naprawić kilka plików. DivFix ++ zawiesił się na mnie. ffmpeg było świetne. Dzięki.
sinelaw

ffmpeg naprawił uszkodzony indeks moich plików avi wideo
Elias Estatistics

3

VirtualDub potrafi robić niesamowite rzeczy z uszkodzonymi plikami AVI. Po prostu otwórz plik w VirtualDub, pozwól mu ugotować, a następnie, jeśli zostanie pomyślnie otwarty, zapisz go ponownie jako nowy plik AVI. Zwykle nawet nie trzeba zmieniać ustawień kompresji.


Ach, VirtualDub jest dobrą rekomendacją, ale nie był w stanie zrobić z tym przysiadu.
Paolo Bergantino

Przykro mi to słyszeć. Mam nadzieję, że znajdziesz coś, co działa - zauważając, że jest to bardziej frustrujące niż plik 100 megabajtów, którego nie możesz użyć!
Electrons_Ahoy

2

Jest odtwarzany o nazwie SuperDecoder .

mogłem z nim odtwarzać naprawdę pomieszane pliki i płyty CD / DVD. Możesz spróbować.


2

Miałem kilka AVI, których VLC nawet nie próbowało naprawić, a DivFix ++ dał mi błędy wyszukiwania. Przekazywanie ich przez ffmpeg nie działało, ale działało mencoder(jest bardzo szybkie):

mencoder -idx input.avi -ovc copy -oac copy -o output.avi

(mencoder jest częścią mplayerpakietu w większości systemów, np. brew install mplayerw Homebrew.)

Zobacz także: Jak mogę sprawdzić integralność pliku avi i naprawić go automatycznie w systemie Linux?


1

Wszystkie dobre pomysły na naprawę uszkodzonego indeksu AVI (preferuję ffmpeg), ale przyczyniają się tutaj do znalezienia plików avi, które mają uszkodzony indeks, aby je przetestować i proaktywnie naprawić. Po nieudanej próbie użycia mediainfo ffprobei innych do wykrycia plików, na które VLC narzekałby, w końcu zdecydowałem się użyć, vlcponieważ to ten, który narzeka. Oto fragment, który może być przydatny jako część skanu i skryptu automatycznej naprawy.

if grep -q "avi demux error" \
    <(cvlc --vout null --aout null --stop-time 2 "${VIDFILE}" vlc://quit 2>&1 )
    # alternate ways to stop after two seconds
    #<(timeout 2 cvlc --vout null --aout null "${VIDFILE}" 2>&1)
    #<(cvlc --vout null --aout null "${VIDFILE}"  2>&1 & sleep 2; kill $!)
then
    echo "avi demux error: ${VIDFILE}"
    exit 1
fi

Uwaga: uwzględniono alternatywne metody zatrzymywania (aby nie odtwarzało całego wideo przed wyjściem), ponieważ niektóre wersje VLC mają błąd w --stop-time, a inne systemy mogą go nie mieć timeout.


-1

Do tej pory miałem dobre doświadczenia z Media Player Classic i The KMPlayer. Mogą odtwarzać pliki, które zostały częściowo pobrane lub podzielone na części (na przykład przez hjsplit).

Myślę, że mogą grać w twoje.

Chociaż zależy to również od rodzaju kodeka, a więc ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.