Как я могу восстановить сломанный файл 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-файлы с поврежденным индексом, чтобы протестировать их и предварительно исправить. После неудачной попытки использования 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
,
У меня были некоторые 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).
Я думаю, что они могут играть в твои.
Хотя, это также зависит от типа кодека и так далее...