recover_mp4

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

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

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

Поддерживаемые аудио форматы: AAC, ADPCM (Intel), MP3, PCM (LE, BE, 24-bit, float), AMR, AMR WB, 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, Filmic Pro software
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, GoPro HERO 5, GoPro HERO 6 (both H.264 and H.265).
Action cameras and DVR based on Ambarella encoder
Garmin VIRB Ultra 30
TomTom Bandit Action Camera
Xiaomi YI
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 4+, Xiaomi Yi и дронов DJI!
Плохие новости.
Эти камеры пишут на флэшку одновременно 2 файла - с высоким разрешением (.mp4) и с низким разрешением (.lrv в случае GoPro). Камера не распределяет место под файлы заранее, поэтому одновременная запись вызывает безумную фрагментацию на флэшке. Я не знаю способа как отключить запись .lrv файлов. Если бы GoPro не записывали SOS стрим в .lrv файлы, то был бы шанс отфильтровать только данные основного .mp4 файла. Разработчики GoPro живут в параллельной вселенной. Я пол года переписывался с ними и плюнул.
Я не знаю программ, которые могут корректно восстановить удалённый с флэшки файл (FAT32, exFAT). Тоже само при случайном форматировании. Вы конечно можете попробовать программы типа R-Studio, GetDataBack, EasyRecovery, Restorer2000Pro и подобные. Но как правило "восстановленный" файл будет содержать кучу фрагментов других файлов (попросту мусор).
Пытаясь дальше восстановить такой файл моей программой вы получите артефакты каждые несколько секунд (это куски от .lrv файла с низким разрешением). Фрагменты аудио будут повторяться по 2 раза (из .mp4 и .lrv файла). В идеале надо пытаться искать более адекватную программу для восстановления удалённых файлов, которая сможет восстановить всю цепочку фрагментов файла. Правильно восстановленный файл должен просто воспроизводиться без проблем.
Хорошие новости.
Я работаю над алгоритмом разделения основного и дополнительного потоков, причём без учёта размера кластера. Проблема для GoPro и Xiaomi Yi практически решена. Сейчас доводится до ума алгорит для дронов DJI. В ближайшее время всё это будет доступно на сайте https://restore.media.

Прежде чем написать мне, прочитайте 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 in_good_similar.mp4 --analyze
recover_mp4 in_raw.mp4 out_corrupted.mp4 --clean_amba [<hex> [<dec>]]
recover_mp4 in_raw.mp4 out_corrupted.mp4 --clean_xiaoyi [<hex> [<dec>]]
recover_mp4 in_raw.mp4 out_corrupted.mp4 --clean_dji [<hex> [<dec>]]
recover_mp4 in_corrupted.mp4 {out_video.h264 | out_video.hevc | out_video.mov | --none}
{out_audio.aac | out_audio.wav | out_audio.mp3 | out_audio.raw | --none} [options]
recover_mp4 in_raw.mxf out.raw --mxf <hex>

Опции:
--verbose
--start read from position (ignore mdat atom)
--end <hex> end position (ignore mdat atom). Specify 0 for EOF
--align <hex> default 1. Use --drim5 --align 10 for Samsung Gear 360.
--nohdr try to extract SPS and PPS from the stream
--forcehdr for GoPro 4+
--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
--noavcidrmin
--noavcxmin
--nocheck Simple checking
--noidr Do not wait first IDR
--nodecaac Do not decode AAC
--aaclong
--aacmin <hex>
--pcmmin <hex>
--pcmfix <hex>

--audio assume audio only, don't check any video templates

--prores Apple ProRes video

--custom experimental
--adobe experimental
--sony2 experimental
--novatek2 experimental
--wowza2 experimental

--gopro6.avc use GoPro6 AVC templates
--gopro6.hvc use GoPro6 HEVC templates
--gopro5 use GoPro5 templates
--gopro4 use GoPro4 templates
--gopro_session use GoPro Session templates
--ambarella use Ambarella templates
--garmin use Garmin VIRB Ultra 30 templates
--xiaoyi use Xiaomi YI action camera templates
--yicarcam use Xiaomi YI CarCam templates
--novatek use car DVR templates based on Novatek (DV turnkey, Street Guardian, etc.)
--pitta use car DVR templates based on PittaSoft
--lav use Lav/ffmpeg templates
--vlc use VLC templates
--jvc use JVC GY-HM200 templates
--mainconcept use Mainconcept templates
--qt use QuickTime templates (default for MOV files)
--panasonic use Panasonic DMC-G7, DMC-GX80, DMC-G85, DMC-GH4, DC-GH5, AW-HE40 templates
--panasonic_hc use Panasonic HC-X1000 templates
--panasonic_ag use Panasonic AG-DVX200 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)
--gear360 use Samsung gear360
--galaxy use Samsung Galaxy templates
--android81 use Android 8.1 templates
--iphone4 use iPhone4 templates
--filmic61 use iPhone Filmic 6.1.2 templates
--filmic63 use iPhone Filmic 6.3.x templates
--filmic65 use iPhone Filmic 6.5.x templates
--lumia use Lumia templates
--eos use Canon EOS 5D Mark II, 60D, 7D, 550D templates
--eos3 use Canon EOS 5D Mark III, 5DS, 7D Mark II (PCM), 100D templates
--eos4 use Canon EOS 5D Mark IV templates (default align 8)
--canon use Canon SX, Legria, Vixia, EOS 80D, 7D Mark II (AAC) templates
--nikon use Nikon D750, D3300 templates
--zcam use Z Cam
--wowza use Wowza templates
--vmix use vMix templates
--obs use Open Broadcaster Software
--blackmagic use BlackMagic templates
--avermedia use AVerMedia Live Gamer Portable C875 templates
--tomtom use TomTom Bandit Action Camera templates
--aim use Aim SmartyCam HD templates
--corvette use Corvette Performance Data Recorder 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, etc. (default for MP4 files)

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 Скачать 1.92 18.06.2017
recover_mp4 (AAC validation, ProRes, MXF) Используется на https://restore.media 3.00 03.09.2018

v3.x нет в свободном доступе, она используется на сайте https://restore.media.
v3.x поддерживает ещё больше камер, включая iPhone Filmic Pro, Samsung Gear 360, GoPro Session, GoPro 6, LAMAX X8.1 Sirius, AIM SmartyCam HD, PittaSoft BlackVue DVR, Canon Legria, Vixia, и самое главное - валидацию AAC потока для правильного деления на фреймы.
Больше нет проблемы с артефактами в AAC аудио и с рассинхронизацией видео/аудио.
Улучшена поддержка GoPro 4, 5 и 6 за счёт использования потока метаданных GoPro SOS.
Не требуется хороший файл с теми же настройками для восстановления файлов GoPro 4+, SONY и некоторых DJI.
v3.x поддерживает MXF, Apple ProRes и может сохранять результат непосредственно в mp4/mov файлы.
v3.x также имеет опции для фильтрации кластеров с файлами для предпросмотра (для восстановления файлов GoPro, Xiaomi YI, DJI после удаления).
Вы можете связаться со мной напрямую и прислать ваши файлы для восстановления.


[Назад]