Как я могу восстановить поврежденный файл AVI?


24

У меня есть файл .avi, который составляет около 110 МБ. Когда я пытаюсь воспроизвести его с помощью VLC Media Player, он говорит что-то вроде: «Этот файл поврежден. Попытка восстановить?» и после того, как он делает свое дело, он все еще не может играть.

Есть ли какое-либо другое программное обеспечение, которое может извлечь из него любое видео? Может быть, тот, который специализируется на таких вещах? Я не очень надеюсь, потому что я решил, что если из этого что-нибудь удастся воспроизвести, VLC мог бы это сделать, но я решил, что все равно попробую ...

Ответы:


12

В прошлом мне повезло с большим количеством сломанных / неполных AVI, использующих DivFix , но я не уверен, что он работает хорошо на чем-то более позднем, чем Windows XP.

Более новая версия - DivFix ++ :

DivXFix ++ предназначен для восстановления поврежденных потоков файлов AVI путем перестройки индексной части файла. Это очень полезно при предварительном просмотре фильмов, которые не имеют индексной части, как, например, некоторые файлы в настоящее время загружаются из ed2k или сетей bittorent. DivFix ++ - это полное переписывание программы "DivFix" из-за ее ошибок и низкой производительности.


2
Потрясающе. Я сделал это для видео файла 799 МБ, и это сработало как шарм. Фактически, этот файл AVI при воспроизведении с VLC приводил к той же ошибке. Он никогда не воспроизводился на проигрывателе Windows Media. Теперь он прекрасно воспроизводится и в Windows Media Player. Ник - Большое спасибо!
Канини

@Kanini, рад, что DivFix помог :)
Ник Йозевски

14

Вот некоторые программы, которые могут помочь:

  • VLC должен предложить вам исправить поврежденный индекс файла AVI при открытии файла.
  • DivFix ++
  • AviFiXP (работает только на Windows)

Существует обширное руководство по восстановлению поврежденных файлов AVI: Восстановление поврежденных или поврежденных файлов AVI - AfterDawn: Руководства

Вы также можете попробовать перестроить контейнер, выполнив битовую копию с помощью FFmpeg :

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

1
С ffmpeg 0.6.2 используйте -vcodec copy -acodec copyвместо -c copy. Я использовал (для Windows) эту версию . У меня была куча файлов, чтобы исправить. DivFix ++ обрушился на меня. ffmpeg был великолепен. Спасибо.
Синелав

ffmpeg исправил испорченный индекс моих видеофайлов AVI
Elias Estatistics,

3

VirtualDub может делать довольно удивительные вещи с испорченными файлами AVI. Просто откройте файл в VirtualDub, дайте ему готовить, а затем, если он был успешно открыт, повторно сохраните его как новый файл AVI. Обычно вам даже не нужно менять настройки сжатия.


Ах, VirtualDub - хорошая рекомендация, но он не мог с ней приседать.
Паоло Бергантино,

Человек, жаль это слышать. Надеюсь, вы найдете что-то, что работает - отметив больше разочарований, чем файл размером 100 мегабайт, который вы не можете использовать!
Electrons_Ahoy

2

Есть игра под названием SuperDecoder .

смог воспроизвести действительно испорченные файлы и CD / DVD с ним. Вы можете дать ему шанс.


2

У меня были некоторые AVI, которые VLC даже не пытался исправить, и DivFix ++ дал мне ошибки поиска. Прохождение их через ffmpeg не сработало, но сработало mencoder(это очень быстро):

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

(mencoder является частью mplayerпакета на большинстве систем, например, brew install mplayerна Homebrew.)

См. Также: Как проверить целостность файла avi и автоматически восстановить его в Linux?


1

Все хорошие идеи о том, как восстановить испорченный индекс AVI (я предпочитаю ffmpeg), но здесь есть способ найти avi-файлы, которые имеют испорченный индекс, чтобы проверить их и их упреждающее восстановление. После безуспешной попытки использовать mediainfo ffprobeи другие файлы для обнаружения файлов, на которые vlc будет жаловаться, я, наконец, решил использовать, vlcтак как именно он жаловался. Вот фрагмент кода, который может быть полезен как часть сценария сканирования и автоматического восстановления.

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

Примечание: включены альтернативные методы остановки (поэтому он не воспроизводит все видео перед выходом), потому что в некоторых версиях VLC есть ошибка в --stop-time, а в других системах она может отсутствовать timeout.


-1

До сих пор у меня был хороший опыт работы с Media Player Classic и The KMPlayer. Они могут воспроизводить файлы, которые были частично загружены или разбиты на части (например, hjsplit).

Я думаю, что они могут играть в твои.

Хотя, это также зависит от типа кодека и так далее ...

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.