Moov atom not found что делать
Я записываю некие беседы на мобильник в формат AAC. Иногда в процессе записи у него заряд уходит в ноль и процесс записи прерывается. При этом в файле оказывается "что успели записать" (последний фрейм длиной 570 байт), потом идет какой-нибудь короткий мусор. Файл в итоге битый - ни в одном редакторе и ни в одном плеере мне его прочитать не удаётся:
Формат нормального файла:
Что говорит ffmpeg на битый файл:
Как показало расследование в конце файла отсутствует в принципе moov atom.
Вот пример списка нод (атомов) полноценного файла (вывод программы AtomicParsLey):
А вот атомы битого файла:
или
Вдумчивое и упорное гугление ни к чему не привело (нашлась одна программа под мак, которая "восстановить локально файл не могу, давайте его отправим на сайт и все за 299 долларов мы его восстановим?" Что, разумеется, не вариант.
FFMPEG: moov atom not found
Lampp stack, centos 7. We run a video streaming company. The process is like this.
Process metadata is the fastest and the least problematic of all the steps, but recently an FFmpeg command in that script started failing occasionally. The command is:
I get the following output when running the command with verbose argument
I asked the team to check whether the videos are corrupted if they get corrupted during the upload. Is there a way to fix this programmatically? Either change the command above or add some mechanism? Because the solutions proposed here require manual intervention and fixing.
New comments cannot be posted and votes cannot be castYeah +1, suggests that the original file was incomplete or corrupt.
Other options. record to TS file, rather than MP4/MOV in future. If there is a risk that a recording will get ungracefully terminated, TS is a better format than MP4. If it was not you who produced the input file then maybe it got truncated during file transfer?
Getting "moov atom not found" error on linux but not windows/mac?
Hey I have a tool I built that makes a video for me and it works locally on a mac / windows machine. I setup a digital ocean ubuntu server to host my app and the final video is giving a "moov atom not found" when running ffprobe output.mp4.
The way the video is being created is thru this cmd:
New comments cannot be posted and votes cannot be castffmpeg -i 1.mp4 -i 3.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1" output.mp4
The moov atom is a part of the MP4 container that holds various metadata (stream length, for example)—are you using the same version of FFmpeg on all platforms?
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5639dc1f8080] Format mov,mp4,m4a,3gp,3g2,mj2 detected only with low score of 1, misdetection possible!
Скачаный youtube-dl'ем стрим: Moov atom not found
Скачивал ютубный стрим youtube-dl'ем во время трансляции, стрим закончился ну и я абортнул youtube-dl через CTRL-C. Ну и в итоге оно как-то не так сохранило, видимо. Вывод VLC:
Куда мне копать?
лол, есть же ещё идиоты на свете
vlc на слабой машине порой показывает себя лучше mpv
На слабом железе основные тормоза из-за луп фильтра, например h264 довольно тяжёлый кодек. Иногда помогает поменять vo.
Без moov-атома файл совершенно бесполезен.
Попробую на досуге. А так неоднократно сталкивался с рассинхроном и замедленным воспроизведением.
Смотри в документации опции для слабых машин.
Между тем, с vlc не было никаких проблем из коробки.
У VLC очень низкое качество всего, это как-то связано. Из MPV стараются сделать идеальный плеер.
Разные дефолты вкупе с локальными особенностями.
Блин, не могу найти, как отобразить плейлист для навигации(листать не вариант, более 1000 позиций).
И зациклить в пределах одной позиции, чтобы при временном отвале сетевого вещания не перескакивало на следующий.
И авто-деинтерлейс.
поэтому важные трансляции необходимо сохранять рекордерами десктопа
Без moov-атома файл совершенно бесполезен.
В прямом. В moov-атоме все таблицы смещений, без которых все данные из mdat — просто набор беспорядочных байтов.
Почему youtube-dl его тогда не вставил?
Чтобы плеер мог проиграть mp4-файл, он (плеер) ищет в файле moov-атом, в котором вся мета-информация, т.е. сколько потоков и как их читать (смещения, размеры блоков), кодеки, битрейты и т.п. Соответственно, если moov-атом не найден, то любой плеер вываливает ошибку и завершает работу, т.к. не получил необходимой информации.
А я откуда знаю? При стриминге, moov-атом передается первым, чтобы плеер мог понять, что за данные дальше последуют и как с ними работать.
Тел ми моар. Я говорю про реальный опыт просмотра х264 на 600-900МГц и видяхи i915 без хардварных декодеров.
Команды через сокет засылай, если гуй накатывать не хочешь.
FFmpeg и иксы везде одни.
Я на одноплатниках.
Заметно. Ты их как, внутривенно?
Если я правильно понимаю, о чем ты, mali умее 264
кстати да, аппаратно. А вот vlc там часто не умеет.
У тебя, как всегда, что-то не работает. И каждый раз у тебя виноват дистрибутив или софт.
А как он ищет эту moov секцию? По какому-то флагу?
кстати да, аппаратно. А вот vlc там часто не умеет
Он использует те же vdpau/va-api что и остальные.
Нет. В армбиане он вообще, кроме некоторых ютуб-потоков не умеет ничего.
у тебя ее тупо нету, забей.
В твоем случае она должна была записаться в конце mp4, но ты прервал.
Если так важна запись и хватает времени, можешь покурить формат и вручную нариовать этот атом.
ЕМНИП, когда-то видел видел виндовую утилиту, которая могла восстанавливать такие битые видео, но не помню, в каком именно случае мне помогла.
Последнее исправление: madcore 12.08.18 17:44:30 (всего исправлений: 1)
При чем тут флаги? Прочитай документацию
Если так важна запись и хватает времени, можешь покурить формат и вручную нариовать этот атом.
Я и не говорил, что будет легко.
Когда-то оживлял файл от вырубившейся хардварной камеры с писалкой на карту, но все использовавшиеся средства даже вспоминать не хочу.
У тебя вариант намного проще, т.к. ты всегда можешь записать новый файл с теми же настройками и получить образец moov из этого файла.
Ну так а как moov секция в файле маркируется?
BceM_IIpuBeT ★★★☆☆ ( 12.08.18 18:34:32 )Последнее исправление: BceM_IIpuBeT 12.08.18 18:34:40 (всего исправлений: 1)
Так и маркируется moov: 6D 6F 6F 76
А если у меня есть работающий прошлый стрим, записанный с того же канала, с такими же настройками и тем же youtube-dl'ем?
BceM_IIpuBeT ★★★☆☆ ( 12.08.18 19:45:44 )Последнее исправление: BceM_IIpuBeT 12.08.18 19:46:16 (всего исправлений: 1)
ГУЙ только ГТК+ есть?
Пробуй. Но мне прищлось ставить венду в виртуалку, пробовать кучу многообщающего вареза, редактировать hex-дампы итп. Может быть с тех пор что-то изментлось.
Т.е. в теории, у них moov секция может быть одинаковая? А на что она указывает? Просто на начало h264 и acc потоков?
Т.е. в теории, у них moov секция может быть одинаковая?
Да нет, не может. moov-атом это контейнер для других атомов, часть из которых совпадет (если настройки аналогичные), часть может случайно совпасть. Т.е. возможно что ты в конечном счете что-то увидишь.
Просто на начало h264 и acc потоков?
Не питай иллюзии, типа нашел начало и все. Поток — это не непрерывная последовательность, а наборы кусков (фреймов) аудио и видео, для которых нужна таблица смещений из moov-атома.
Читайте также: