Я использую Nexus 7 с Android версии 4.2+. Таким образом, в соответствии с форматами мультимедиа, поддерживаемыми Android, все перечисленные кодировщики и контейнеры поддерживаются форматы.
Теперь я хочу записать звук с помощью кодера AAC-LC и формат контейнера MPEG-4 (файл тип).
В сгенерированном файле, когда я открываю его в HEX-редакторе, я вижу, что это файл Базовый медиафайл ISO, имеющий поле типа файла isom
(раздел 4.3) со следующими совместимыми брендами: isom
и 3gp4
. Остальная часть файла в основном представляет собой блок mdat
(содержащий фактические аудиоданные). Следующий фрагмент HEX из начала файла говорил мне об этом:
00000018 66747970 69736F6D 00000000 69736F6D 33677034 00029708 6D646174 ...
переводится как:
24 ftyp isom no-minor isom 3gp4 0x29708 mdat ...
что значит:
файл (ftyp
) соответствует стандарту ISO/IEC 14496-12 (isom
) и не указывает дополнительной версии. Совместимые бренды с этим файлом: isom
и 3gp4
. Затем следует блок аудиоданных (mdat) длиной 0x29708
Где часть говорит мне, что это закодированный файл AAC-LC (AAC низкой сложности)?
Кроме того, по сравнению с другими файлами AAC-LC в веб-сайте их заголовок (окно файла) отличается, упоминая mp42
как ftyp
и mp42
, isom
, ndia
как совместимые бренды. Такой файл также доступен для потоковой передачи (как и должен быть AAC-LC).
Но сгенерированный Android файл AAC_LC (MP4) НЕ доступен для потоковой передачи. Так что же Android MediaRecorder или я делаю неправильно? Я использую следующий код:
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
// the bit rate should be adjusted silently if out of range
mRecorder.setAudioEncodingBitRate(320000);
mRecorder.setAudioSamplingRate(48000);
isom
и3gp4
совместимые бренды. Я не вижу следов, указывающих на то, что файл закодирован с помощью HE-AAC. - person Gabriel Petrovay   schedule 20.04.2013