Вопрос или проблема
Я снял видео на своем Android телефоне (Sony Xperia P, если это важно), и прежде чем я смог остановить запись, память телефона заполнилась, и он завис. Я перезагрузил телефон, видео осталось, но я не смог его воспроизвести на любом медиаплеере Android. Оно в формате mp4
.
Я попробовал открыть его на ПК и Mac с помощью различных видеоплееров, таких как VLC, Quick Time, Windows Media Player и т.д., но ни один из них не смог его воспроизвести. Я понимаю, что видео повреждено, но верю, что его можно восстановить, поскольку его размер составляет более гигабайта. Есть ли что-то, что я могу попробовать сделать для восстановления видеофайла? Это видео действительно важно.
Это старый вопрос, но я только что столкнулся с такой же ситуацией и решил опубликовать решение, которое сработало для меня.
Когда вы видите сообщение “moov atom not found”, это обычно означает, что устройство, создававшее видео, не смогло записать завершающие метаданные, содержащие информацию о таких вещах, как кодеки, используемые в видео, и так далее. Без этого “moov atom” большинство плееров отклонят видео.
Если у вас есть другое видео, созданное тем же устройством, вы можете использовать программу untrunc, чтобы сгенерировать новый moov atom, который в большинстве случаев сделает файл воспроизводимым.
Вам нужно будет скомпилировать программу untrunc
самостоятельно. Я собрал ее в контейнере Ubuntu 12.04 и для сборки мне потребовалось установить следующие предварительные компоненты:
sudo apt-get install libavformat-dev libavcodec-dev \
libavutil-dev libqt4-dev make g++ libz-dev
Если у вас установлен FFmpeg, с командной строки вы можете попробовать:
ffmpeg -i input.mp4 -c copy output.mp4
Если проблема только в контейнере, это исправит ее.
Если это не сработает, пожалуйста, опубликуйте полное сообщение терминала, так как это может дать подсказку, как исправить файл.
Мне удалось использовать программу mp4fixer, чтобы восстановить усеченный видеофайл с дрона, у которого возникала ошибка “moov atom not found”.
Эта программа требует Perl, а также рабочего видеофайла с того же устройства, с которого можно скопировать недостающие данные.
Она дала мне сырые данные H264, которые я смог конвертировать обратно в MP4 с помощью:
ffmpeg -i mp4fixer-out-video.h264 -c copy fixed.mp4
.
Ответ или решение
Вопрос о восстановлении поврежденного видеофайла в формате MP4 является насущной проблемой для многих пользователей, особенно когда дело касается важных записей. В данном случае проблема возникла из-за того, что запись видео на смартфоне была прервана из-за заполнения памяти, что привело к повреждению файла. Рассмотрим различные подходы к восстановлению такого файла.
Теория
Файлы в формате MP4 используют структуру контейнера, который включает в себя различные "атомы" или метаданные, необходимые для правильного воспроизведения видео. Один из критически важных атомов — это "moov atom", который содержит информацию о кодеках, временных метках и других параметрах, необходимых для декодирования и воспроизведения видео. Когда запись прерывается неожиданно, как в вашем случае, этот атом может быть не записан корректно или вовсе отсутствовать, из-за чего стандартные медиаплееры отказываются воспроизводить файл.
Пример
Рассмотрим основные шаги и инструменты, которые могут быть использованы для восстановления поврежденного файла:
-
Использование FFmpeg: FFmpeg — это мощный командный инструмент для обработки видео и аудиофайлов. Он может попытаться исправить поврежденный контейнер MP4 следующим образом:
ffmpeg -i input.mp4 -c copy output.mp4
Если проблема заключается только в контейнере, эта команда скопирует все данные в новый файл и возможно исправит проблему.
-
Программа Untrunc: Untrunc — это специальный инструмент для восстановления MP4 файлов, у которых отсутствуют или повреждены метаданные. Для работы потребуется другой рабочий файл, записанный на том же устройстве, чтобы программа могла восстановить недостающие сведения:
- Компиляция требуется на самих системах, например, на Ubuntu 12.04 Docker с предварительно установленными библиотеками: libavformat и другими.
-
Использование mp4fixer: Это еще один инструмент, который может восстановить поврежденные видео, особенно если присутствует ошибка "moov atom not found". Он требует установленной среды Perl и наличия другого исправного видеофайла для копирования необходимых данных.
-
После работы mp4fixer, можно использовать FFmpeg для преобразования извлеченных данных назад в MP4:
ffmpeg -i mp4fixer-out-video.h264 -c copy fixed.mp4
-
Применение
Принимая во внимание теоретические и практические аспекты восстановления видеофайлов, ниже приведен пошаговый алгоритм действий, который может помочь восстановить ваш поврежденный MP4-файл:
-
Первичная диагностика:
- Скопируйте файл на компьютер, если это еще не сделано.
- Используйте FFmpeg для попытки восстановления контейнера.
ffmpeg -i your_corrupted_file.mp4 -c copy restored_file.mp4
-
Использование Untrunc:
- Скачайте и скомпилируйте Untrunc. Не забудьте установить предварительные зависимости, если работаете на Ubuntu.
- Выполните восстановление, указав программу на поврежденный и исправный файлы:
untrunc good.mp4 your_corrupted_file.mp4
-
Работа с mp4fixer:
- Убедитесь, что Perl установлен, и загрузите mp4fixer.
- Следуйте инструкциям программы для восстановления информации, затем выполните преобразование с помощью FFmpeg.
-
Проверка восстановленного файла:
- Попробуйте открыть восстановленный файл в нескольких медиаплеерах, чтобы удостовериться в успешности восстановления.
-
Антикризисные действия (на будущее):
- Регулярный резервный копий особо важных видеофайлов.
- Убедитесь, что на устройстве достаточно свободного места при записи важных видео.
- Используйте приложения с функцией авто-сохранения для предотвращения подобных инцидентов.
Следуя этим рекомендациям, у вас есть хороший шанс восстановить важные видеоматериалы и избежать подобной ситуации в будущем. Если файл по-прежнему не восстанавливается, возможно, стоит обратиться к профессиональному сервису восстановления данных, особенно если запись особо важна.