Arris
@Arris
Сапиенсы учатся, играя.

Moov atom not found. Как восстановить AAC-файл?

Я записываю некие беседы на мобильник в формат AAC. Иногда в процессе записи у него заряд уходит в ноль и процесс записи прерывается. При этом в файле оказывается "что успели записать" (последний фрейм длиной 570 байт), потом идет какой-нибудь короткий мусор. Файл в итоге битый - ни в одном редакторе и ни в одном плеере мне его прочитать не удаётся:

Формат нормального файла:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'recording2016-01-17 14-58-50.aac':
  Metadata:
    major_brand     : isom
    minor_version   : 0
    compatible_brands: isom3gp4
    creation_time   : 2016-01-17 13:37:50
  Duration: 01:38:59.62, start: 0.000000, bitrate: 98 kb/s
    Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 98 kb/s (default)
    Metadata:
      creation_time   : 2016-01-17 13:37:50
      handler_name    : SoundHandle


Что говорит ffmpeg на битый файл:
[mov,mp4,m4a,3gp,3g2,mj2 @ 000000000036eac0] moov atom not found
recording2016-03-13 18-48-21.bak: Invalid data found when processing input


Как показало расследование в конце файла отсутствует в принципе moov atom.

Вот пример списка нод (атомов) полноценного файла (вывод программы AtomicParsLey):
Atom ftyp @ 0 of size: 24, ends @ 24
Atom free @ 24 of size: 3072, ends @ 3096
Atom mdat @ 3096 of size: 2937162, ends @ 2940258
Atom moov @ 2940258 of size: 21147, ends @ 2961405
     Atom mvhd @ 2940266 of size: 108, ends @ 2940374
     Atom trak @ 2940374 of size: 21031, ends @ 2961405
         Atom tkhd @ 2940382 of size: 92, ends @ 2940474
         Atom mdia @ 2940474 of size: 20931, ends @ 2961405
             Atom mdhd @ 2940482 of size: 32, ends @ 2940514
             Atom hdlr @ 2940514 of size: 44, ends @ 2940558
             Atom minf @ 2940558 of size: 20847, ends @ 2961405
                 Atom smhd @ 2940566 of size: 16, ends @ 2940582
                 Atom dinf @ 2940582 of size: 36, ends @ 2940618
                     Atom dref @ 2940590 of size: 28, ends @ 2940618
                 Atom stbl @ 2940618 of size: 20787, ends @ 2961405
                     Atom stsd @ 2940626 of size: 91, ends @ 2940717
                         Atom mp4a @ 2940642 of size: 75, ends @ 2940717
                             Atom esds @ 2940678 of size: 39, ends @ 2940717
                     Atom stts @ 2940717 of size: 32, ends @ 2940749
                     Atom stsz @ 2940749 of size: 20608, ends @ 2961357
                     Atom stsc @ 2961357 of size: 28, ends @ 2961385
                     Atom stco @ 2961385 of size: 20, ends @ 2961405
------------------------------------------------------
Total size: 2961405 bytes; 21 atoms total. AtomicParsley version: 0.9.0 (utf16)
Media data: 2937162 bytes; 24243 bytes all other atoms (0.819% atom overhead).
Total free atom space: 3072 bytes; 0.104% waste.
------------------------------------------------------


А вот атомы битого файла:
Atom ftyp @ 0 of size: 24, ends @ 24
Atom free @ 24 of size: 3072, ends @ 3096
Atom mdat @ 3096 of size: 32178176, ends @ 32181272
------------------------------------------------------
Total size: 32181272 bytes; 2 atoms total. AtomicParsley version: 0.9.0 (utf16)
Media data: 32178176 bytes; 3096 bytes all other atoms (0.010% atom overhead).
Total free atom space: 3072 bytes; 0.010% waste. Padding available: 0 bytes.
------------------------------------------------------

или
Atom ftyp @ 0 of size: 24, ends @ 24
Atom free @ 24 of size: 3072, ends @ 3096
Atom mdat @ 3096 of size: 59281408, ends @ 59284504
------------------------------------------------------
Total size: 59284504 bytes; 2 atoms total. AtomicParsley version: 0.9.0 (utf16)
Media data: 59281408 bytes; 3096 bytes all other atoms (0.005% atom overhead).
Total free atom space: 3072 bytes; 0.005% waste. Padding available: 0 bytes.
------------------------------------------------------


Вдумчивое и упорное гугление ни к чему не привело (нашлась одна программа под мак, которая "восстановить локально файл не могу, давайте его отправим на сайт и все за 299 долларов мы его восстановим?" Что, разумеется, не вариант.

Кто виноват я знаю.

Что делать?
  • Вопрос задан
  • 3594 просмотра
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы