Вопрос или проблема
У меня есть файл .avi размером около 110 МБ. Когда я пытаюсь воспроизвести его с помощью VLC Media Player, он говорит что-то вроде «Этот файл поврежден. Попробовать восстановить?» и после того, как он это делает, по-прежнему не может его воспроизвести.
Есть ли другое программное обеспечение, которое может извлечь из него какое-либо видео? Может быть, одно, которое специализируется на этом? Я не слишком надеюсь, потому что думал, если это можно было бы воспроизвести, VLC бы уже это сделал, но я все равно решил попробовать…
В прошлом мне немного повезло с многими сломанными/незавершёнными 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, которые VLC даже не пытался восстановить, и DivFix++ выдавал мне ошибки поиска. Пропускать их через ffmpeg не сработало, но mencoder
сработал (это очень быстро):
mencoder -idx input.avi -ovc copy -oac copy -o output.avi
(mencoder является частью пакета mplayer
на большинстве систем, например, brew install mplayer
на Homebrew.)
См. также: Как я могу проверить целостность AVI файла и автоматически исправить его в Linux?
Все хорошие идеи по восстановлению повреждённого индекса 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 )
# альтернативные способы остановки после двух секунд
#<(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
.
Есть программа под названием SuperDecoder.
С её помощью мне удалось воспроизвести действительно испорченные файлы и CD/DVD. Вы можете попробовать её.
У меня был хороший опыт с Media Player Classic и The KMPlayer. Они могут воспроизводить файлы, которые были частично загружены или разбиты на части (например, с помощью hjsplit).
Я думаю, что они могут воспроизвести ваш файл.
Хотя, это также зависит от типа кодека и так далее…
Ответ или решение
Как восстановить поврежденный AVI файл: Полное руководство
Поврежденные AVI файлы могут стать настоящей головной болью. Если вы сталкиваетесь с сообщением о поврежденном файле при попытке воспроизведения в VLC Media Player, и сразу не удается его исправить, не отчаивайтесь. Здесь представлено несколько эффективных стратегий для восстановления вашего AVI файла.
1. Использование VLC Media Player
VLC имеет встроенные инструменты для исправления поврежденных файлов. При попытке открытия поврежденного AVI файла, выберите опцию "Попробовать исправить". Этот метод может восстановить индекс файла, что позволит VLC воспроизвести его. Однако если это не сработало, перейдите к другим инструментам.
2. DivFix++
DivFix++ – это новое поколение программы DivFix, специально спроектированное для ремонта AVI. Основное его преимущество заключается в способности восстанавливать индекс и завершать поврежденные файлы. Скачайте и запустите DivFix++, загрузите ваш файл, и программа выполнит восстановление.
3. VirtualDub
VirtualDub – это мощный инструмент для обработки видеофайлов. Откройте поврежденный AVI в VirtualDub и, если файл откроется, выполните его пересохранение как новый AVI файл. Обычно нет необходимости изменять настройки сжатия.
4. FFmpeg
FFmpeg – мощный инструмент для работы с видео. Используйте следующий код для выполнения копии потока:
ffmpeg -i input.avi -c copy output.avi
Этот процесс может успешно восстановить данные из поврежденного файла.
5. MEncoder
Если FFmpeg не сработает, попробуйте MEncoder:
mencoder -idx input.avi -ovc copy -oac copy -o output.avi
MEncoder отличается высокой скоростью и может исправить ошибки, которые не удалось обработать другими программами.
6. AviFiXP
AviFiXP – это еще один инструмент, который можно использовать для анализа и восстановления AVI файлов. Он работает только на Windows, но может помочь в восстановлении поврежденных файлов.
7. Различные медиаплееры
В некоторых случаях альтернативные медиаплееры могут обойти проблему. Попробуйте использовать Media Player Classic или KMPlayer, так как они могут воспроизводить файлы, которые VLC не может обработать.
8. SuperDecoder
SuperDecoder может быть полезным инструментом для воспроизведения severely damaged файлов, которые не открываются в других плеерах.
9. Автоматизация процессов
Если у вас есть множество AVI файлов, можно автоматизировать процесс проверки и восстановления с помощью утилит командной строки, таких как приведенные ниже:
if grep -q "avi demux error" <(cvlc --vout null --aout null --stop-time 2 "${VIDFILE}" vlc://quit 2>&1 )
then
echo "avi demux error: ${VIDFILE}"
fi
Этот скрипт поможет идентифицировать файлы с ошибками AVI сразу.
Заключение
Подведение итогов: восстановление поврежденного AVI файла возможно, и существует множество инструментов, которые готовы помочь в этом процессе. Начинайте с простых решений, таких как VLC и DivFix++, прежде чем переходить к более сложным вариантам, как ffmpeg и mencoder. Помните, что в важнейшие моменты создание резервных копий файлов поможет избежать подобных ситуаций в будущем.
Если ни один из методов не помог, возможно, файл поврежден слишком сильно, и дальнейшее восстановление может оказаться невозможным.