Я записывал файл MP4 с помощью PlaysTV, и на середине записи у моего компьютера произошел сбой питания. Я уверен, что файл содержит достоверные данные, просто ни один медиаплеер его не распознает.
Чтобы исправить это, я попробовал Avidemux, я пробовал множество программ, перечисленных в других вопросах на stackexchange. И пока ничего не получилось.
Вывод ffmpeg -i выглядит следующим образом:
libavutil 55. 24.100 / 55. 24.100
libavcodec 57. 43.100 / 57. 43.100
libavformat 57. 37.100 / 57. 37.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.100 / 6. 46.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 000000000262d040] moov atom not found
2016_05_27_20_08_12-ses.mp4: Invalid data found when processing input
Вывод медиаинформации:
General
Complete name : F:\vids\2016_05_27_20_08_12-ses.mp4
Format : MPEG-4
Format profile : Base Media / Version 2
Codec ID : mp42 (mp41/isom)
File size : 1.21 GiB
Вероятно, есть платные сервисы, которые исправят этот файл для меня, однако, поскольку это (довольно) большой файл, они стоят слишком дорого.
Может ли кто-нибудь помочь мне здесь?
Недавно я столкнулся именно с этой проблемой, и мне удалось восстановить файл с помощью Untrunc , программы, созданной специально для решения этой проблемы, как было предложено sparrowt в SuperUser :
Для этого метода вам нужно:
другой видеофайл, который не поврежден
установка Linux (я использовал Ubuntu 12.04) и базовые возможности использования командной строки.
Вот что нужно сделать:
Установите некоторые необходимые библиотеки с помощью этой команды:
sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev
Загрузите исходный код Untrunc из репозитория github:
wget https://github.com/ponchio/untrunc/archive/master.zip
Разархивируйте исходный код:
unzip master.zip
Перейдите в каталог, в который он был разархивирован:
cd untrunc-master
Скомпилируйте исходный код с помощью этой команды (все в одну строку):
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil
(вы можете попробовать пропустить этот шаг и использовать готовый исполняемый файл, но у меня это не сработало)
Тогда вы можете исправить видео. Вам нужно как сломанное видео, так и пример рабочего видео.
В идеале видео должно быть с одной камеры и иметь одинаковое разрешение (у меня такое было, но может работать и без него). Также, если он по крайней мере такой же длины, как сломанный (желательно примерно такой же), это может помочь.
Запустите эту команду в папке, в которую вы распаковали и скомпилировали Untrunc, но замените биты /path/to/... двумя вашими видеофайлами:
./untrunc /path/to/working-video.m4v /path/to/broken-video.m4v
Затем он должен работать и, надеюсь, создать воспроизводимый файл с именем
broken-video_fixed.m4v
Вот и все!
VLC Media Player теперь должен иметь возможность воспроизводить файл. Однако он может сообщать неправильную информацию о длине (Untrunc пытается угадать/обработать это, но не всегда делает это правильно). Чтобы это исправить, попробуйте перекодировать видео через другую программу.
track.cpp:60:32: fatal error: libavcodec/h264dec.h
Обновлено : этот инструмент теперь может восстанавливать файлы из большего количества источников.
Попробуйте с помощью recovery_mp4_to_h264 . Это программа командной строки, и для нее потребуется хороший справочный файл.
Использование, как указано:
recover_mp4 in_good_similar.mp4 --analyze
recover_mp4 in_corrupted.mp4 {out_video.h264 | out_video.hevc | --novideo} [out_audio.aac | out_audio.wav | out_audio.mp3 | out_audio.raw | --noaudio] [options]
recover_mp4
файлы , больше не предлагает эту загрузку, а вместо этого только восстанавливает файлы онлайн через свой сайт (за определенную плату). Вы по-прежнему можете получить более раннюю версию этого инструмента (по закону; Restore.media даже предоставляет прямую ссылку для загрузки ). К сожалению, исходный код закрыт и доступен только для Windows (32/64 бит)...Вы также можете, чтобы избавить себя от проблем, сначала проверьте наличие данных. Размер файла составляет 1,21 ГБ, правильно ли это для времени, пока вы не потеряли питание?
Я упоминаю об этом, потому что некоторые программы сначала записывают данные в память... иногда очень большие куски данных, прежде чем фактически зафиксировать их на диске.
С MP4 видео должно воспроизводиться, если оно имеет допустимые заголовки, до последнего хорошего пакета, содержащего правильные кадры key/i.
Что приходит мне в голову, так это то, что данных может и не быть, например, они были зафиксированы в памяти, а не на диске -- я бы сделал тестовую запись (учитывая время, когда это "должно быть", и сравнил файл размеры). Прежде чем прыгать через обручи.
Старший Компьютерщик
ДаБлер