Как открыть и восстановить видеофайл m4v или mp4?

вчера я снимал сцену с моим телефоном, но вдруг приложение разбился, и когда я пытаюсь открыть M4V генерируется он говорит, что поврежден.

Я скачал видео файлы (около 36 Мб) на моем компьютере, и я пытаюсь открыть и восстановить его. Можешь предложить мне способ сделать это?

FFMPEG info

Как предложено в комментариях, я пытаюсь проверить, что FFMPEG говорит мне об этом файле с помощью этой команды

ffmpeg.exe -i VID_20120425_144739.m4v -c:v copy -c:a copy out.mp4 2> log.txt

здесь получается результат:

ffmpeg version N-40126-ga4b58fd Copyright (c) 2000-2012 the FFmpeg developers
  built on Apr 26 2012 03:29:50 with gcc 4.6.3
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      51. 47.100 / 51. 47.100
  libavcodec     54. 15.100 / 54. 15.100
  libavformat    54.  3.100 / 54.  3.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 72.100 /  2. 72.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 11.100 /  0. 11.100
  libpostproc    52.  0.100 / 52.  0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 003fc940] moov atom not found
VID_20120425_144739.m4v: Invalid data found when processing input

последние две строки отображаются красным цветом.

24
задан sparrowt
02.05.2023 5:48 Количество просмотров материала 2782
Распечатать страницу

6 ответов

можно восстановить сломанный файл mp4 или m4v с помощью Untrunc.

для этого метода вам понадобится:

  • еще один видеофайл который не сломанные

  • установка linux (я использовал Ubuntu 12.04) и базовая способность использовать командную строку.

вот что нужно делать:

  1. установите некоторые необходимые библиотеки с этим команда:

    sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev

  2. скачать исходный код Untrunc из репозитория github:

    wget https://github.com/ponchio/untrunc/archive/master.zip

  3. распаковать исходный код:

    unzip master.zip

  4. зайдите в директорию, где она была распакована:

    cd untrunc-master

  5. скомпилировать исходный код с помощью этой команды (все в одной строке):

    g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil

    (вы можете попробовать пропустить этот шаг и использовать готовый исполняемый файл, но у меня не получилось)

  6. тогда вы действительно можете исправить видео. Вам нужно как разбитое видео, так и пример рабочего видео.

    в идеале видео должно быть с той же камеры и иметь такое же разрешение (мое было, но оно могло бы работать без). Также, если это, по крайней мере, до тех пор, пока сломанный (желательно примерно такой же), это может помочь.

    выполните эту команду в папку, где вы распаковали и составлен Untrunc но заменить /путь/к/... биты с 2 видео файлы:

    ./untrunc /path/to/working-video.m4v /path/to/broken-video.m4v

    тогда он должен сбивать прочь и, надеюсь, производить воспроизводимый файл под названием broken-video_fixed.m4v

вот и все, что вы сделали!

VLC Media Player должен теперь иметь возможность воспроизводить файл. Однако он может сообщать неправильную информацию о длине (Untrunc пытается угадать / решить это, но не всегда получает это право). К исправить это попробуйте перекодировать видео с помощью другой программы.

[спасибо slhck за предложение попробовать Untrunc.]

[большое спасибо Федерико Пончио за кодирование Untrunc в первую очередь, чтобы решить эту проблему.]

49
отвечен sparrowt 2023-05-03 13:36

Если кто-то еще натыкается на это, не sparrowt говорил, но это не работает для меня (см. Некоторые баг-репорт я создал в репозитории разработчиков). Возможно, это было потому, что это был не файл mp4, а файл MOV ...

Что помогло мне был этот пост: http://muzso.hu/2012/11/14/how-to-fix-a-broken-mp4-mov-video-ffmpeg-reports-moov-atom-not-found

Они ссылаются на программу под названием "HD Video Repair Utility" (http://grauonline.de/cmsimple2_6/en/?Solutions:HD_Video_Repair_Utility), что гораздо дешевле, чем дорожил (http://aeroquartet.com/movierepair/repair). Они даже отметили, что есть более ранняя версия это (версия 1.5), что ничего не стоить (http://nagasoft.cn/download/videorepair1.5.zip)!

Я попытался восстановить файл с помощью версии 1.5 и получил его частично работает. После перекодировки с ffmpeg (есть ошибки там), я понял, что часть аудио пропала. В журналах (к счастью, утилита восстановления видео имеет некоторые), не было никакого дальнейшего упоминания аудио после определенного времени. Я принимаю все как есть ...

6
отвечен SimonSimCity 2023-05-03 15:53

@sparrowt ваши текущие инструкции не работали на моей недавней установке Ubuntu 16.10. Я получаю следующую ошибку при compilining untrunc:

track.cpp: In member function ‘int Codec::getLength(unsigned char*, int)’:
track.cpp:204:40: error: ‘avcodec_alloc_frame’ was not declared in this scope
   AVFrame *frame = avcodec_alloc_frame();

Как поясняется в untrunc repository, возможно, потребуется загрузить libav отдельно, а не использовать версию в репозитории Ubuntu. У меня сработал следующий код:

sudo apt-get install unzip yasm g++ zlib1g-dev libbz2-dev
cd /tmp/
wget https://github.com/ponchio/untrunc/archive/master.zip
unzip master.zip
cd untrunc-master
wget http://libav.org/releases/libav-12.2.tar.xz
tar xvf libav-12.2.tar.xz
cd libav-12.2
./configure
make
cd ..
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -I./libav-12.2 -L./libav-12.2/libavformat -lavformat -L./libav-12.2/libavcodec -lavcodec -L./libav-12.2/libavresample -lavresample -L./libav-12.2/libavutil -lavutil -lpthread -lz -lbz2
./untrunc /path/to/working-video.mp4 /path/to/broken-video.mp4

это создал файл под названием broken-video_fixed.mp4, который работал на меня. Большое спасибо за инициирование эта тема.

6
отвечен freeseek 2023-05-03 18:10

Если у вас есть недавний дистрибутив Ubuntu, вы можете установить docker и

docker run -v `pwd`:/vol -it synctree/untrunc /vol/GOOD-reference-file.MP4 /vol/BAD-corrupt-file.mdt

прочитайте другие комментарии вокруг для более подробного объяснения.

Это было самым быстрым для меня!

3
отвечен abourget 2023-05-03 20:27

в случае untrunc не поддерживает кодек в файле, вы можете попробовать исправить это с помощью hex-редактора:

  1. получить другой файл с тем же форматом, я получил больший, но, вероятно, любая длина будет работать
  2. открыть оба файла в HEX-редактор
  3. заменить mdat раздел в файле " ok " с mdat раздел в "сломанном" файле, без заголовка (т. е. копируем только байты после 'mdat')
  4. это, вероятно, уже будет работать, как если нет, то 4 байта перед 'mdat' указывают размер mdat раздел, текущее значение будет старый размер ("ok" файл mdat размер раздела), замените его новым размером ("битый" файл mdat размер раздела)

Я закончил кодирования простая программа для этого: https://github.com/golimarrrr/fix-3gp

обе программы и вручную с помощью шестнадцатеричного редактора должны создать один и тот же фиксированный файл

0
отвечен golimar 2023-05-03 22:44

вы пробовали открыть файл с помощью VLC Player? Это, как правило, довольно хорошо при восстановлении поврежденных файлов.

-2
отвечен Carlos Manta 2023-05-04 01:01

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх