Làm thế nào tôi có thể sửa chữa một tập tin AVI bị hỏng?


24

Tôi có một tập tin .avi khoảng 110mb. Khi tôi thử chơi nó với VLC Media Player, nó có thông báo như "Tập tin này bị hỏng. Cố gắng sửa chữa?" và sau khi nó làm điều đó nó vẫn không thể chơi nó.

Có phần mềm nào khác ngoài đó có thể lấy bất kỳ video nào mà nó có thể ra khỏi nó không? Có lẽ một trong đó chuyên về loại điều đó? Tôi không hy vọng lắm vì tôi đoán rằng nếu có bất cứ điều gì có thể được phát ra từ nó thì VLC sẽ xoay sở để làm điều đó, nhưng tôi đã hình dung rằng tôi sẽ cho nó một phát bắn ...

Câu trả lời:


12

Tôi đã có một số may mắn trong quá khứ với rất nhiều AVI bị hỏng / không hoàn chỉnh khi sử dụng DivFix , nhưng không chắc nó có hoạt động tốt trên mọi thứ muộn hơn Windows XP không.

Phiên bản mới hơn là DivFix ++ :

DivXFix ++ được thiết kế để sửa chữa các luồng tệp AVI bị hỏng bằng cách xây dựng lại một phần chỉ mục của tệp. Điều này rất hữu ích khi cố gắng xem trước các bộ phim không có phần chỉ mục, như một số tệp hiện đang tải xuống từ các mạng ed2k hoặc bittorent. DivFix ++ hoàn toàn viết lại chương trình "DivFix" do lỗi và hiệu năng thấp.


2
Tuyệt vời. Tôi đã làm điều này cho một tệp video 799 MB và nó hoạt động như một cơ duyên. Trong thực tế, tập tin AVI này khi chơi với VLC đã gặp lỗi tương tự. Nó không bao giờ chơi trên Windows Media Player. Bây giờ nó cũng chơi hoàn toàn tốt trong Windows Media Player. Nick - Cảm ơn nhiều!
Kanini

@Kanini, rất vui vì DivFix đã giúp :)
Nick Josevski

14

Đây là một số chương trình có thể giúp:

  • VLC sẽ đề nghị bạn sửa chỉ mục của tệp AVI bị hỏng khi bạn mở tệp.
  • DivFix ++
  • AviFiXP (chỉ chạy trên Windows)

Có một hướng dẫn mở rộng về sửa chữa các tệp AVI bị hỏng ở đây: Sửa chữa các tệp AVI bị hỏng hoặc bị hỏng - AfterDawn: Hướng dẫn

Bạn cũng có thể thử xây dựng lại container bằng cách thực hiện một bản sao dòng bit với FFmpeg :

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

1
Với ffmpeg 0.6.2, sử dụng -vcodec copy -acodec copythay vì -c copy. Tôi đã sử dụng (cho windows) phiên bản này . Tôi đã có một loạt các tập tin để sửa chữa. DivFix ++ đã làm tôi thất vọng. ffmpeg là tuyệt vời. Cảm ơn.
sinelaw

ffmpeg đã sửa chỉ mục bị hỏng của các tệp avi video của tôi
Elias Estatistic

3

VirtualDub có thể làm những điều khá tuyệt vời với các tệp AVI bị hỏng. Chỉ cần mở tệp trong VirtualDub, để cho nó nấu và sau đó nếu nó mở thành công, hãy lưu lại dưới dạng tệp AVI mới. Thông thường, bạn thậm chí không cần thay đổi cài đặt nén.


À, VirtualDub là một đề xuất tốt nhưng nó không thể thực hiện squat với nó.
Paolo Bergantino

Man, xin lỗi khi nghe điều đó. Hy vọng bạn tìm thấy một cái gì đó hoạt động - lưu ý nhiều hơn một tập tin 100 meg bạn không thể sử dụng!
Electrons_Ahoy

2

Có một trò chơi được gọi là SuperDecoder .

đã có thể phát các tập tin và CD / DVD thực sự gây rối với nó. Bạn có thể cho nó một shot.


2

Tôi đã có một số AVI mà VLC thậm chí không cố gắng sửa chữa và DivFix ++ đã cho tôi tìm lỗi. Chuyển chúng qua ffmpeg không hoạt động, nhưng mencoderđã làm (rất nhanh):

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

(mencoder là một phần của mplayergói trên hầu hết các hệ thống, ví dụ như brew install mplayertrên Homebrew.)

Xem thêm: Làm cách nào tôi có thể kiểm tra tính toàn vẹn của tệp avi và tự động sửa nó trong Linux?


1

Tất cả các ý tưởng tốt về cách sửa chữa chỉ mục AVI bị hỏng (sở thích của tôi là ffmpeg), nhưng đóng góp ở đây một cách để tìm các tệp avi có chỉ mục bị hỏng để kiểm tra chúng và chủ động sửa chữa chúng. Sau khi không thành công khi cố gắng sử dụng mediainfo ffprobevà những người khác để phát hiện các tệp mà vlc sẽ phàn nàn, cuối cùng tôi đã quyết định sử dụng vlcvì đó là một trong những khiếu nại. Đây là một đoạn có thể hữu ích như là một phần của tập lệnh sửa chữa quét và tự động.

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

Lưu ý: các phương pháp dừng thay thế (vì vậy nó không phát toàn bộ video trước khi thoát) được bao gồm vì một số phiên bản của VLC có lỗi trong - stop-time và các hệ thống khác có thể không có timeout.


-1

Tôi đã có trải nghiệm tốt cho đến nay với Media Player Classic và The KMPlayer. Họ có thể phát các tệp đã được tải xuống một phần hoặc chia thành các phần (ví dụ như hjsplit).

Tôi nghĩ rằng họ có thể chơi của bạn.

Mặc dù, nó cũng phụ thuộc vào loại codec và vì vậy ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.