recover_mp4

Попробуйте сервис автоматического восстановления mp4/mov файлов http://restore.media (пока бесплатно)

recover_mp4 - это утилита для восстановления нефинализированных .mp4, .m4v, .mov, .qt, .3gp файлов.
Нефинализированный файл может получиться если камера была повреждена во время записи или вынули аккумулятор и т.п. В этом случае заголовок файла просто забит нулями и мы располагаем только секцией mdat.

Поддерживаемые видео форматы: AVC/H.264, HEVC/H.265

Поддерживаемые аудио форматы: AAC, ADPCM (Intel), MP3, PCM (LE, BE, float), RAW

Речь идет о файлах, нормально читающихся с флэшки, но с испорченным заголовком. Если файл не виден или не копируется или случайно удалён, то воспользуйтесь программами типа R-Studio, GetDataBack, Restorer2000, EasyRecovery и пр. - это не наш случай. Самое первое что нужно сделать - резервную копию флэшки - имидж файл .img, например с помощью USB Image Tool. К сожалению после "восстановления" перечисленными выше программами удалённых файлов как правило теряется информация о фрагментации и "восстановленный" таким образом файл содержит множество фрагментов других файлов с флэшки - попросту мусор. Как правило такие файлы не воспроизводятся и многие пытаются восстанавливать их дальше уже моей программой. После моей программы файл воспроизводится, но что вы ожидали увидеть восстанавливая мусор? В результате будут короткие фрагменты разных файлов и множество артефактов. Нужно брать резервный имидж файл флэшки и пробовать другие программы для восстановления удалённых файлов. Однако мне не известны успешные случаи. Пожалуйста сообщите мне, если вдруг найдёте какую-нибудь новую программу, которая успешно решит эту задачу. Также см. ниже замечание для владельцев GoPro и Xiaomi Yi.

Протестированные камеры и энкодеры:

Camcorders / DSLRs:
Canon EOS 5D Mark II, 7D, 550D
Canon EOS 5D Mark III, 7D Mark II, 100D
Canon EOS 5D Mark IV
Canon SX, EOS 80D
Panasonic DMC-G7, DMC-GX80, DMC-G85, DMC-GH4, DC-GH5, HC-X1000, AW-HE40, etc.
Samsung NX1000 and other cameras based on DRIMeIII encoder
Samsung NX1/NX500 and other cameras based on DRIMeV HEVC/H.265 encoder
SONY A7S [Mark II], AX1E, NX5R, A6000, HDR-CX405, HDR-CX625, etc.

Smartphones:
iPhone
Samsung Galaxy and other based on Android
Nokia Lumia

Action cameras, surveillance cameras and drones:
GoPro HERO, GoPro HERO 2, GoPro HERO 3/3+, GoPro HERO 4, etc.
Action cameras and DVR based on Ambarella encoder
TomTom Bandit Action Camera
DVR based on Novatek (DV turnkey, Street Guardian, etc.)
DJI Phantom, Mavic Pro, Spark (both H.264 and H.265)
iCatch
CGO3

Software and hardware encoders:
Software encoders based on libavcodec (Lav/ffmpeg)
Software encoders based on Mainconcept (EDIUS)
Open Broadcaster Software
Wowza Live Streaming Software
AVerMedia Live Gamer Portable C875
BlackMagic encoders
vMix

Утилита работает и с другими камерами. Но если вдруг что-то пошло не так свяжитесь со мной.
При необходимости можно быстро доработать под конкретный случай.
И обратите внимание на кнопочку Donate (Пожертвовать) внизу этой страницы.

Что надо делать и что нельзя делать если на флэшке / фотике / камере запаролись файлы

1. Не используйте флэшки 64GB, даже если камера (GoPro 3, 4) их якобы поддерживает. Именно на флэшках 64GB часто портятся файлы без каких либо предпосылок. Проблема скорее всего в недоработанной прошивке камеры, но чтобы не рисковать лучше использовать флэшки не более 32GB.

2. Никогда не выдёргивать флэшку и не отключать камеру от USB предварительно не нажав "безопасное извлечение".

3. Перед важной съемкой желательно делать форматирование флэшки средствами камеры. Это также помогает максимально уменьшить фрагментацию файлов и упростить восстановление.

4. Если проблема УЖЕ возникла, нужно максимально быстро запретить любую запись на флэшку. Нужно выключить камеру, отключить от USB. Надо помнить что часто не выключенные камеры / фотики / смартфоны после отключения от USB тут же начинают индексировать флэшку и записывать свои файлы. Этого нельзя допускать.

5. Вынуть флэшку. Если это обычная SD флэшка, то поставить рычажок в положение LOCK.
Если это microSD, то ни в коем случае нельзя вставлять эту флэшку в смартфон, картридер и пр. Windows записывает на флэшку относительно мало, но и этого достаточно чтобы добить данные. Всякие смартфоны на Андроиде или Мак через кардридер тут же создают на флэшке огромное количество скрытых папок и файлов убивая надежду на восстановление данных. microSD нужно вставить в SD адаптер и на адаптере поставить рычажок в положение LOCK. Только после этого можно втыкать в кардридер.

6. Если файлы были случайно удалены, флэшка случайно отформатирована или её внезапно выдернули без "безопасного извлечения", в результате чего флэшка оказалась пустой или неформатированной, можно попытаться использовать программы типа R-Studio, Restorer2000, EasyRecovery, GetDataBack и др. (мне больше нравится Restorer2000Pro) Но шансов получить нормальные файлы очень мало. Как правило из-за фрагментации и потери цепочки фрагментов восстановленные файлы содержат 5% нормальных данных, а дальше просто мусор.

7. Если речь о фотках и полноразмерные фотки получить не получается, то часто можно вытащить превьюшку (thumbnail, уменьшенную фотку), например так:
exiftool -b -ThumbnailImage bad123.jpg > thumb123.jpg
Это лучше чем ничего. Иногда превьюшки бывают с довольно большим разрешением.

8. Если совсем ничего не помогает, можно сделать копию всей флэшки посекторно (например в программе Restorer2000Pro - Create Image или USB Image Tool) и потом вытаскивать видео/аудио потоки. Чем меньше фрагментация, тем больше шансов получить что-то полезное. Эта программа не анализирует image файлы. Свяжитесь со мной.


Если на последнем восстановленом файле отсутствует момент ДТП (последние 5-10 сек), то ещё не всё потеряно!
Просто видеорегистратор не успел обновить FAT из кэша.
Можно восстановить всё видео со всей флэшки вообще игнорируя файловую систему.
Останется только просмотреть всё и найти нужный момент.
Нужно сделать посекторную копию флэшки (имидж). Формат файла .img (ни в коем случае не .iso).
Это можно сделать такими программами как Restorer2000, WinHex и пр.
Если флэшка размером 16GB, то получится файл 16GB.
Файл можно порезать на куски для удобства запаковав его WinRar'ом без сжатия с разбиением например по 2GB. Далее заливайте всё это на какой-нибудь Google Drive, DropBox, Яндекс.Диск, MEGA и пр. (кому что больше нравится) и присылаяте ссылки.

ВАЖНО: Для владельцев камер GoPro и Xiaomi Yi!
Плохие новости.
GoPro пишет на флэшку одновременно 2 файла - с высоким разрешением (.mp4) и с низким разрешением (.lrv). Камера не распределяет место под файлы заранее, поэтому одновременная запись вызывает безумную фрагментацию на флэшке. Я не знаю способа как отключить запись .lrv файлов. Если бы GoPro не записывали SOS стрим в .lrv файлы, то был бы шанс отфильтровать только данные основного .mp4 файла. Разработчики GoPro живут в параллельной вселенной. Я пол года переписывался с ними и плюнул.
Я не знаю программ, которые могут корректно восстановить удалённый с флэшки файл (FAT32). Тоже само при случайном форматировании. Вы конечно можете попробовать программы типа R-Studio, GetDataBack, EasyRecovery, Restorer2000Pro и подобные. Но как правило "восстановленный" файл будет содержать кучу фрагментов других файлов (попросту мусор).
Пытаясь дальше восстановить такой файл моей программой вы получите артефакты каждые несколько секунд (это куски от .lrv файла с низким разрешением). Фрагменты аудио будут повторяться по 2 раза (из .mp4 и .lrv файла). На данный момент я не знаю хорошего способа решения этой проблемы (даже если вы пришлёте мне имидж файл всей флэшки). Надо пытаться искать более адекватную программу для восстановления удалённых файлов, которая сможет восстановить всю цепочку фрагментов файла. Правильно восстановленный файл должен просто воспроизводиться без проблем.

Прежде чем написать мне, прочитайте FAQ ниже!

FAQ (частые вопросы - ответы)

Q: При запуске программы на мгновение выскочило какое-то черное окошко и всё скрылось.
A: Попросите Вам помочь какого-нибудь студента, который знает что такое командная строка и как ею пользоваться.

Q: Программа пишет что не может открыть файл.
A: Учимся пользоваться командной строкой. Есть понятие working directory (текущая/рабочая директория/папка). Допустим вы скопировали программу и все нужные файлы в папку c:\recover, тогда после открытия командной строки сначала наберите команду cd c:\recover После этого можно запускать программу и указывать файлы без полного пути, предполагается что файлы находятся в текущей директории. Если имена файлов содержат пробелы, то их надо брать в кавычки, например "my video.mp4".

Q: Программа пишет что не найдена секция "avcC".
A: Эта программа работает только с MP4/MOV/3GP файлами с кодеком AVC / H.264 (MPEG-4 part 10) и HEVC / H.265. Многие телефоны записывают MP4 файлы с кодеком "mp42" (MPEG-4 part 2 ASP). Эта программа НЕ РАБОТАЕТ с такими файлами.

Q: Программа пишет что не найдена секция "mdat" или полученные h264 / aac файлы очень маленькие.
A: Нужно чётко понимать как были испорчены файлы и что вы пытаетесь восстановить! Если запись по каким-то причинам была прервана (выдернули флэшку, села батарейка) и файл НОРМАЛЬНО копируется с флэшки, но не воспроизвоидся, потому что в нём нет заголовка - это наш случай. Если файл нормально воспроизводился, но был УДАЛЁН, а потом ВОССТАНОВЛЕН программой типа EasyRecovery, R-Studio и пр., то скорее всего внутри файла просто мусор и эта программа вам уже НЕ ПОМОЖЕТ. Можно попытаться восстановить файлы с флэшки другой программой, например GetDataBack. Помните, что после удаления файлов, флэшку нужно сразу же ВЫНИМАТЬ и больше ничего на неё не записывать. Просто оставив флэшку в камере или телефоне, вы почти гарантированно теряете шансы на восстановление, потому что тот же телефон постоянно что-то меняет/записывает на флэшке. Перед ответственной записью желательно форматировать флэшку дабы исключить любую фрагментацию файлов. В этом случае всегда есть шанс восстановить файлы в RAW режиме даже после повторного форматирования флэшки.

Как этим пользоваться:
recover_mp4.exe in_good_similar.mp4 --analyze
recover_mp4.exe in_corrupted.mp4 {out_video.h264 | out_video.hevc | --novideo} [out_audio.aac | out_audio.wav | out_audio.mp3 | out_audio.raw | --noaudio] [options]

Опции:
--start <hex> read from position (ignore mdat atom)
--end <hex> end position (ignore mdat atom). Specify 0 for EOF
--avcidrmax <hex> ignore AVC NAL units (IDR) with the size above than <hex> bytes
--avcxmax <hex> ignore AVC NAL units (non IDR) with the size above than <hex> bytes
--aaclong
--aacmin <hex>
--pcmmin <hex>
--pcmfix <hex>
--verbose

--gopro4 use Ambarella templates and detect GoPro4 specific data (default for MP4 files)
--ambarella use Ambarella templates (ignore GoPro4 specific data).
--lav use Lav/ffmpeg templates
--mainconcept use Mainconcept templates
--novatek use car DVR templates based on Novatek (DV turnkey, Street Guardian, etc.)
--qt use QuickTime templates (default for MOV files)
--iphone4 use iPhone 4 templates
--eos use Canon EOS 5D Mark II, 7D, 550D templates
--eos3 use Canon EOS 5D Mark III, 7D Mark II, 100D templates
--eos4 use Canon EOS 5D Mark IV templates
--canon use Canon SX, EOS 80D templates
--vmix use vMix templates
--wowza use Wowza templates
--blackmagic use BlackMagic templates
--avermedia use AVerMedia Live Gamer Portable C875 templates
--lumia use Lumia templates
--panasonic use Panasonic DMC-G7, DMC-GX80, DMC-G85, DMC-GH4, DC-GH5, HC-X1000 templates
--sony use SONY A7S [Mark II], AX1E, NX5R, A6000, HDR-CX405, HDR-CX625 templates
--drim use DRIMeIII templates (Samsung NX1000 camcorder)
--drim5 use DRIMeV HEVC/H.265 templates (Samsung NX1/NX500 camcorder)
--tomtom use TomTom Bandit Action Camera templates
--icat use iCatch templates
--cgo3 use cgo3 templates
--dji.avc use DJI.AVC Phantom (H.264) templates
--dji.hvc use DJI.HVC Phantom (H.265) templates
--hevc use generic HEVC/H.265 templates
--ext use generic templates for any other camcorder or smartphone, Open Broadcaster Software, etc.

1. Берем ХОРОШИЙ один из предыдущих MP4 файлов, записанных той же камерой с тем же разрешением, например GOPR0346.MP4
Файл должен воспроизводится в проигрывателе.

Запускаем из командной строки:
>recover_mp4.exe GOPR0346.MP4 --analyze

При этом программа создает крохотные файлы video.hdr и audio.hdr и распечатает дальнейшие инструкции (параметры запуска).

2. Допустим ваш поврежденный файл GOPR0347.MP4

Запускаем из командной строки:

>recover_mp4.exe GOPR0347.MP4 recovered.h264 recovered.aac

Возможно тут нужно будет добавить дополнительные параметры (см. распечатанную инструкцию из шага 1).

Некоторые видеорегистраторы пишут MOV файлы со звуком в формате PCM или ADPCM.
В таком случае нужно указать 3-м параметром имя файла с расширением .wav

>recover_mp4_to_h264.exe bad.mov recovered.h264 recovered.wav

3. Для склеивания recovered.h264 и recovered.aac в конечный MP4/MOV файл лучше всего использовать ffmpeg (скачать можно тут http://ffmpeg.org/download.html)
На шаге 1 программа распечатывает параметры для запуска ffmpeg.

Если звук AAC, вместо ffmpeg можно попробовать программу Yamb (скачать например тут http://yamb.unite-video.com/download.html)
Запускаем Yamb, кликаем Create (Создать), добавляем поток recovered.h264 и recovered.aac, нажимаем Далее и создаем новый исправный файл, например recovered.mp4

Пример использования ffmpeg:

>ffmpeg.exe -r 30 -i recovered.h264 -i recovered.aac -bsf:a aac_adtstoasc -c:v copy --c:a copy recovered.mp4

Для звука PCM:

>ffmpeg.exe -r 30 -i recovered.h264 -i recovered.wav -c:v copy -c:a copy recovered.mov

Для звука ADPCM:

>ffmpeg.exe -r 30 -i recovered.h264 -i recovered.wav -c:v copy -c:a adpcm_ima_wav recovered.mov

В этих примерах 30 - это частота кадров. Укажите свою.
Если частота слегка плавает, придется подобрать среднее значение чтобы видео и звук совпадали.
Вместо 29.97 лучше указать 30000/1001

Поблагодарить:

Скачать:
Описание Ссылка #1 Ссылка #2 Версия Дата
recover_mp4 recover_mp4.zip (190KB) recover_mp4.zip (190KB) 1.92 18.06.2017
recover_mp4 (AAC validation) http://restore.media 2.35 21.11.2017

v2.x нет в свободном доступе, она используется на сайте http://restore.media.
v2.x поддерживает ещё больше камер, включая iPhone Filmic Pro, Samsung Gear 360, GoPro Session, GoPro 6, LAMAX X8.1 Sirius, AIM SmartyCam HD, Canon Legria, Vixia, и самое главное - валидацию AAC потока для правильного деления на фреймы.
Больше нет проблемы с артефактами в AAC аудио и с рассинхронизацией видео/аудио.
Улучшена поддержка GoPro 4, 5 и 6 за счёт использования потока метаданных GoPro SOS, не требуется хороший файл с теми же настройками.
Вы можете связаться со мной напрямую и прислать ваши файлы для восстановления.


[Назад]