21

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

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

7 ответов7

12

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

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

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

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

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

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

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

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

3

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

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?

2

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

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

0

Все хорошие идеи о том, как восстановить испорченный индекс 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).

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .