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

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

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

7 ответов

Решение

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

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

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

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

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

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

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

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

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

Все хорошие идеи о том, как восстановить сломанный индекс AVI (я предпочитаю ffmpeg), но здесь предлагается способ найти avi-файлы с поврежденным индексом, чтобы протестировать их и предварительно исправить. После неудачной попытки использования mediainfoffprobe и другие, чтобы обнаружить файлы, на которые 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,

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

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

(Mencoder является частью mplayer пакет на большинстве систем, например brew install mplayer на доморощенный.)

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

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

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

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

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

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

Другие вопросы по тегам