Формат mp4 не самый лучший в плане отказоустойчивости. Он требует обязательного правильного завершения процесса записи. Если запись внезапно прерывается, то файл mp4 получается «битым». Его нельзя просмотреть. И восстановить тоже бывает проблематично. В этой статье описано несколько способов восстановления повреждённых mp4-файлов.
Я опробовал их в Ubuntu.
Мой автомобильный видеорегистратор имеет дохлый аккумулятор. Запись видео идет в формат mp4. При отключении питания происходит мгновенное аварийное завершение записи. Текущий mp4-файл неизбежно получается повреждённым. Именно такой файл я и пытался восстановить.
Один из способов мне помог.
Плеер VLC
Многие советуют этот плеер. Он имеет алгоритмы, позволяющие просмотреть повреждённые видеофайлы. Наверное этот вариант подойдёт, когда файл повреждён не сильно. Сомневаюсь, что это пригодно для mp4 и описанного повреждения. Но попробовать не сложно.
Мне не помогло.
Видеоредактор
Это еще один способ из числа простых. Пробуйте открыть повреждённое mp4-видео каким-нибудь видеоредактором. Любым, какой у вас есть в системе. Если есть, пробуйте несколько редакторов. Я пробовал Kdenlive.
Установка FFmpeg и добавление пути к ffmpeg exe в переменных среды
Мне не помогло, программа сообщала «Некорректный клип».
FFmpeg
Это набор свободных библиотек для работы с видео и звуком. Они уже должны быть в системе, т.к. используются многими программами. Через консоль FFmpeg можно использовать напрямую. Возможности очень широкие! Можно попытаться восстановить повреждённый файл. Несколько команд, которые можно опробовать:
ffmpeg -i повреждённый.mp4 -vcodec copy -acodec copy восстановленный.mp4 ffmpeg -i повреждённый.mp4 -vcodec copy -acodec copy -movflags faststart восстановленный.mp4 ffmpeg -i повреждённый.mp4 -vcodec rawvideo -acodec pcm_s16le восстановленный.avi
Мне не помогло, в любом случае получал одну и ту же ошибку:
Untrunc
Это специальная программа для восстановления повреждённых файлов mp4, m4v, mov, 3gp video. На официальном сайте написано, как ее установить в Ubuntu. У меня не получилось это сделать. Я нашел более современный форк этой программы, который установился без проблем. Заодно там говорится и про ряд улучшений, по сравнению с оригинальной версией, так что это даже более предпочтительный вариант.
На github у той и другой программы много звезд, т.е. кому-то они явно помогали. Попробовать обязательно стоит.
sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev git clone https://github.com/anthwlock/untrunc.git cd untrunc make sudo cp untrunc /usr/local/bin
untrunc восстановленный.mp4 повреждённый.mp4
Внимательнее! Здесь порядок перечисления восстановленного и поврежденного файлов в команде обратное.
В моем случае снова неудача:
Mp4fixer
Это еще более интересная программа для восстановления. Она предназначена для битых, удаленных, недописанных файлов mp4, mov, 3gp, внутри которых было h264 видео. Автор пишет, что может подойти и для avi, mkv, m4v и т.д., но восстановление звука может быть осложнено. Сразу скажу, что мне этот вариант помог!
Python не является внутренней или внешней командой… Исправление ошибки на Windows 10
Программа Mp4fixer не просто пытается восстановить файл. Она делает это после анализа дополнительного целого (не повреждённого) файла, записанного тем же устройством. За счёт этого шансы значительно выше. Ведь тех данных, которых нет в повреждённом файле, она возьмёт из целого. В случае видеорегистратора — это идеальный вариант.
Такие устройства записывают видео фрагментами. Просто берем в качестве образца рядом лежащий фрагмент, с воспроизведением которого нет проблем.
Программа не требует установки. По сути, это и не программа, а скрипт на perl.
Скачайте с официального сайта или клонируйте:
git clone https://github.com/bookkojot/mp4fixer.git
Скопируйте файл fixer.pl в тот каталог, где у вас повреждённый mp4 и запускайте восстановление:
perl fixer.pl целый.mp4 повреждённый.mp4 prefix
В итоге получим несколько файлов, среди которых будет с расширением .h264 , например prefix-out-video.h264 — это восстановленное видео. Будет еще prefix-out-audio.raw — это восставленный звук. Можно их объединить в каком-нибудь видеоредакторе.
Видеофайл формата .h264 можно воспроизвести видеоплеером, например mpv или vlc это точно умеют.
Частичный пример успешного восстановления:
Windows
В комментариях часто пишут владельцы Windows. Пишут, что у них не получается использовать скрипт и т.д. Обращаю внимание, что данная статья писалась для пользователей Linux. Вначале статьи написано, что всё сказанное было опробовано в Ubuntu.
На официальном сайте скрипта Mp4fixer написано, что его можно использовать и в Windows. Но у меня нет этой системы и я не пробовал выполнять в ней восстановление. Спрашивать меня по этому вопросу бессмысленно.
Нулевой результат
Ко мне обращались с просьбой помочь восстановить файл MP4. В комплекте с поврежденным файлом был исправный. Я пробовал использовать Mp4fixer, но результат оказался нулевым. В прямом смысле — файлы .h264 и .raw были на выходе нулевого размера. Тогда я присмотрелся к поврежденному файлу. Его размер был вполне приемлемым — 60Мб.
Но когда я его открыл текстовым редактором, то всё стало понятно — данных для восстановления внутри просто нет.
На следующей картинке внутренности файлов. В первом случае это мой поврежденный файл. Очевидно, что здесь есть какие-то данные. Нормальные файлы выглядят внутри примерно также. Во втором случае поврежденное видео, которое не удалось восстановить. Там бесконечно повторяется один и тот же символ.
Это означает, что в данном файле действительно нет полезной информации. Восстанавливать нечего.
На сайте автора скрипта есть упоминание про записывающие устройства, работающие по особому алгоритму, в которых запись осуществляется одновременно в несколько файлов. Возможно, что в данном случае мы имеем дело с чем-то подобным. В любом случае это означает, что может быть данные ещё можно восстановить, но они находятся на карте памяти в каком-нибудь другом вспомогательном файле.
Важно не вносить никакие изменения на карте, не использовать её, она должна быть неприкосновенна. Средства для восстановления нужно использовать принципиально другие. Какие? Я не знаю. Изучите для начала информацию, которую предлагает автор скрипта.
Там он что-то рекомендует.
- Восстановление данных
- Обработка видео
- Форматы видео
Источник: d1mon.com
Русские Блоги
При решении Python Calling ffmpeg «ffmpeg» не является внутренней или внешней командой, и не работает, которая может работать
При решении Python Calling FFMPEG «FFMPEG» не является внутренней или внешней командой или запущенной программой.
Под системой WindowsИспользуя Windows, мы используем библиотеку FFMPEG, чтобы позвонить в инструмент FFMPEG, чтобы извлечь изображение/прочитать информацию о видео видео
import ffmpeg
Как настроить и использовать ffmpeg в Windows?
Я понимаю, что ffmpeg — это мощный инструмент для конвертации видео файлов. Я вижу в Интернете во многих местах людей, предлагающих его для решения или получения помощи в том, как его использовать. Проблема в том, что я даже не знаю, как его настроить или использовать вообще. Эти сообщения, о которых я говорю, обычно принимают форму «Использовать ffmpeg [сложная и нечитаемая строка кода]». Я на самом деле не программист, но я могу сделать несколько вещей, так что я думаю, что смогу понять это, если бы у меня было немного направления.
Как настроить и использовать ffmpeg в Windows?
FFmpeg действительно мощный инструмент кодирования / декодирования видео video. Он работает в командной строке, в отличие от использования графического интерфейса. Командная строка — это черное окно, которое вы найдете, нажав [windows + r] и напечатав, cmd затем нажав Enter. Это также называется «командная строка». После настройки вы вводите команды ffmpeg в одном из этих окон, чтобы использовать его.
Вот основные шаги, чтобы «установить» и использовать его:
Установка
- Перейдите на сайт загрузки ffmpeg и загрузите zip-файл, который лучше всего соответствует спецификациям вашего компьютера. Выберите «статические» ссылки и версию «nightly git» для наиболее актуального удобства использования.
- Создайте на своем компьютере папку для распаковки zip-файла. Эта папка будет вашей «установочной» папкой. Я выбрал C:Program Filesffmpeg . Это хорошая идея, потому что вы будете относиться к этому как к обычной программе. Распакуйте zip-файл в эту папку.
- Папка должна теперь содержать ряд других папок, в том числе одну, bin где ffmpeg.exe хранится. Мы еще не закончили. Двойной щелчок по этому файлу ничего не делает. Помните, это программа командной строки. Это работает в cmd .
- Перед тем, как можно использовать ffmpeg.exe в cmd вы должны сказать ваш компьютер , где он может найти его. Вам необходимо добавить новый системный путь. Сначала щелкните правой кнопкой мыши Этот ПК (Windows 10) или Компьютер (Windows 7), затем нажмите Properties > Advanced System Settings > Advanced tab > Environment Variables .
- В окне «Переменные среды» щелкните строку «Путь» под столбцом «Переменная», затем нажмите «Изменить».
- Окно «Изменить переменную среды» выглядит по-разному для Windows 10 и 7. В Windows 10 нажмите «Создать», а затем вставьте путь к папке, которую вы создали ранее, где ffmpeg.exe сохранены. Например, C:Program Filesffmpegbin
в Windows 7 все переменные перечислены в одной строке, разделенной точкой с запятой. Просто перейдите в конец строки, введите точку с запятой ( ; ) и вставьте путь.
- Нажмите Ok во всех окнах, которые мы только что открыли.
ffmpeg теперь «установлен». Командная строка теперь распознает команды ffmpeg и попытается их запустить.
Обновление ffmpeg
Чтобы обновить ffmpeg, просто зайдите на страницу загрузки в шаге 1 выше и загрузите ZIP-файл. Распакуйте файлы и скопируйте их поверх старых файлов в папке, созданной на шаге 2.
Использование ffmpeg
Использование ffmpeg требует, чтобы вы открыли окно командной строки, а затем напечатали определенные команды ffmpeg. Вот типичная команда ffmpeg:
ffmpeg -i video.mp4 -vn -ar 44100 -ac 1 -b:a 32k -f mp3 audio.mp3
Эта команда состоит из четырех частей:
- ffmpeg — Эта команда сообщает cmd, что мы хотим запускать команды ffmpeg. cmd сначала будет искать ffmpeg.exe в одной из папок, начиная с шага 6 раздела «Установка». Если он найден, он попытается выполнить команду.
- -i video.mp4 — Это входной файл. Мы будем работать над этим файлом.
- -vn -ar 44100 -ac 1 -b:a 32k -f mp3 — это «аргументы». Эти символы похожи на мини-команды, которые точно определяют, что мы хотим сделать. В этом случае говорится создать файл mp3 из источника ввода.
- -vn — опустить видео поток
- -ar 44100 — Определяет разрешение звука в герцах.
- -ac 1 — Аудиоканалы, только 1. Это эффективно «сделать моно».
- -b:a 32k — Аудио битрейт, установленный на 32 кбит / с.
- -f mp3 — Преобразование силы в MP3. Без этой команды ffmpeg пытается интерпретировать то, что вы хотите, на основе расширения, которое вы используете в имени выходного файла.
- audio.mp3 — это выходной файл.
Как вы можете догадаться, эта короткая команда создает аудиофайл MP3 из файла MP4.
Чтобы выполнить эту команду, при условии, что у вас есть файл MP4, чтобы попробовать это, выполните следующие действия:
- Нажмите клавишу Windows + r.
- Введите и cmd введите.
- Измените путь к файлу, над которым вы хотите работать. Тип cd [path] . Это должно выглядеть примерно так cd C:UsersnameDesktop .
- Теперь введите команду ffmpeg с именем вашего входного файла. Команда будет работать с некоторой обратной связью. Когда это будет сделано, cmd будет доступен для большего количества команд.
Это основной способ использования ffmpeg. Команды могут быть намного более сложными, но это только потому, что программа обладает такой мощью. Используя документацию ffmpeg , вы можете изучить все команды и создать несколько очень мощных скриптов. После этого вы можете сохранить эти сценарии в файле .bat, так что вам просто нужно дважды щелкнуть файл, а не вводить всю команду каждый раз. Например, этот ответ содержит скрипт, который будет создавать MP3 из всех MP4 в папке . Тогда мы бы объединили мощь ffmpeg с мощью cmd, и это хорошее место, когда вам нужно делать кодирование видео / аудио профессионального качества в горах файлов.
- Для технической точности ffmpeg сам по себе не является кодером или декодером. Это программа, которая может быть скомпилирована с большим количеством кодеров, декодеров, мультиплексоров и демультиплексоров в зависимости от предпочтений пользователя. Все эти кодировщики и т. Д. Могут использоваться без ffmpeg.
Большое спасибо за это. Я застрял на первом шаге, «путь окружения вар»! Вы объяснили это лучше, чем кто-либо другой, и теперь у меня есть правильный ответ на запрос cmd «ffmpeg -version». Я думаю, что я уже в пути.
ffmpeg is indeed a powerful video encoder/decoder , На самом деле это не так, ffmpeg поддерживает большое количество кодеров, декодеров, мультиплексоров и демультиплексоров, но это определенно не кодер. Он должен быть построен с определенными кодерами, которые можно использовать даже без него
Источник: qastack.ru