4

我正在使用 Android 4.2+ 的 Nexus 7。因此,根据Android Supported Media Formats ,支持所有列出的编码器和容器格式。

现在我想使用AAC-LC 编码器MPEG-4 容器格式(文件类型)录制音频。

在生成的文件中,当我在 HEX 编辑器中打开它时,我看到该文件是一个ISO 基础媒体文件,具有isom文件类型框(第 4.3 节),具有以下兼容品牌:isom3gp4. 文件的其余部分主要是一个mdatBox(包含实际的音频数据)。文件开头的以下 HEX 片段告诉我这一点:

00000018 66747970 69736F6D 00000000 69736F6D 33677034 00029708 6D646174 ...

翻译为:

      24 ftyp     isom     no-minor isom     3gp4     0x29708  mdat     ...

意思是:

文件 ( ftyp) 符合 ISO/IEC 14496-12 ( isom) 并且没有指定次要版本。与此文件兼容的品牌是:isom3gp4. 然后跟随有长度的音频数据框(mdat)0x29708

这部分在哪里告诉我这是一个 AAC-LC(AAC 低复杂度)编码文件?

此外,与Web上的其他 AAC-LC 文件相比,它们的标题(文件框)是不同的,提及mp42ftyp, 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);
4

0 回答 0