Jump to content
  • Восстановление "битого" файла MP4


    White Miku
     Share

    Вступление

    После крушения дрона я извлёк из него карточку microSD, на которую писалось видео вплоть до самого падения дрона на землю. Сама карточка и файловая система оказались целы, а вот файл DJI0002.MP4 открываться отказался. Съёмка видео велась в 2160p30 и за 6 минут съёмки дрон успел записать более 2.5 Гб видео, которое теперь не воспроизводилось ни в одном плеере и не бралось ни одной программой для конвертации. Стереть файл? Ещё успею! Сначала попробую таки восстановить видео.

    Суть проблемы

    Запись видео должна корректно завершаться. В инструкции к дрону было написано о запрете извлечения батареи до полного выключения дрона. И связано это было не с его ПО, а с завершением записи.

    Дело в том, что файл формата MP4 - это контейнер, т.е. что-то вроде архива. В нём может быть помещено несколько аудио-дорожек, несколько файлов субтитров и т.д. А на выходе получается один файл. Так вот, когда запись видеоряда завершается, в файл ещё дописывается некая "служебная" информация, без которой видеоплееры и конверторы воспринимать файл отказались.

    Поиск решения проблемы

    Конечно же я начал первым делом искать информацию в Google. Но от русскоязычной выдачи я почти сразу отказался, ибо вся первая страница была забита ссылками на сайты программ "восстановлю любой файл за умеренную сумму". Мой опыт общения с указанными программами подсказывал мне, что даже если что-то и будет восстановлено, то (специально) только частично, а для восстановления полного файла придётся вложить денежку, что меня не очень устраивало.

    Таким образом я переключился на англоязычный запрос и быстро наткнулся на вот эту статью. В ней (на английском языке) очень подробно описано как устроен файл MP4 и как его можно восстановить, но это было мне не особо интересно. Интереснее было другое - в статье была ссылка на GitHub автора, где был исходный код его программы для восстановления файлов MP4.

    Программу предлагалось скомпилировать самостоятельно. Кхм... Мой ПК работает под управлением Windows 10, я веб-разработчик и компиляторов на компьютере у меня особо не водится. Но (!), зато на моём сервере (на котором держится этот сайт) есть и gcc, и g++ и build-essentials, в общем - всё необходимое для сборки приложений из исходного кода (я периодически собираю MTProxy и pagespeed для nginx прямо на сервере).

    В общем, исходный код приложения был быстро клонирован на сервер, был запущен g++ и... Ошибка компиляции. Не хватало файла config.h. Убедившись, что его действительно нет в репозитории, я перешёл в раздел Issues, обнаружил там ошибку как у себя и нашёл ссылку на форк этого приложения, изменённого другим разработчиком.

    Во-первых форк приложения мог работать и под Windows, во-вторых он имел GUI, а в-третьих - в разделе Releases лежала уже собранная версия. Т.е. всё, что оставалось - скачать, распаковать и запустить.

    Восстановление видео

    В инструкции к приложению написано, что требуются 2 (два) файла: один - тот, что повреждён и необходимо восстановить, а второй - целый. Скорее всего, в качестве "целого" файла стоит взять файл от такой же камеры и с такими же параметрами съёмки. В моём случае проблем с "целыми" файлами не было. На дрон я снимал часто и всегда в режиме 2160p30, т.е. все файлы должны были иметь одинаковую структуру и схожие "служебные" данные.

    А дальше - всё просто. Запускаем untrunc-gui.exe, выбираем reference file - "целый" файл MP4 и truncated file - повреждённый файл, который нужно восстановить, нажимаем Repair и ждём. В случае успеха, восстановленный файл появится в папке рядом с повреждённым.

    Автор не даёт стопроцентной гарантии того, что файл будет восстановлен. Как мне кажется, это приложение вообще не сможет восстановить "битый" файл (извлечённый с повреждённого жёсткого диска), у которого отсутствуют куски данных по всему "телу" файла. Скорее всего оно может восстановить только те файлы, которые не были корректно дописаны (из-за отключения камеры, извлечения накопителя, сбоя при копировании). Но, как говорится... Попытка - не пытка. В моём случае сработало и возможно, что сработает и в вашем.

    Надеюсь, что статья окажется кому-то полезной. Спасибо за внимание.

    Ссылки на скачивание

    На случай, если автор удалит файлы из своего репозитория на GitHub, я загрузил актуальную (на момент написания статьи) версию приложения на этот сайт.

    untrunc_x32.zip - для 32-разрядных ПК (такими ещё кто-то пользуется?)

    untrunc_x64.zip - для 64-разрядных ПК

     Share


    User Feedback

    Recommended Comments

    There are no comments to display.



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...