Android可以播放ADTS AAC文件吗?

时间:2016-12-30 03:24:52

标签: android audio android-mediaplayer mp4 aac

我使用下面的代码生成了一个aac音频文件。并且文件在我的Windows机器上播放正常。但它无法使用MediaPlayer在我的Android设备上播放。我该怎么做才能让文件在Android设备上播放?谢谢!

    MediaRecorder recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    recorder.setAudioEncodingBitRate(16 * 44100);
    recorder.setAudioSamplingRate(44100);
    recorder.setAudioChannels(2);
    recorder.setOutputFile(mTempFile.getAbsolutePath());

1 个答案:

答案 0 :(得分:2)

  

“Android可以播放ADTS AAC文件吗?......”

不使用默认应用。只有你编写这样的应用程序。使用MediaCodec API手动将每个aac帧的字节发送到解码器。

如果你可以处理字节并熟悉aac frame structre,那么请将它们作为起点检查:

Decoding AAC using MediaCodec API on Android

PCM -> AAC (Encoder) -> PCM(Decoder) in real-time with correct optimization

  

“但它不能在我的Android设备上使用MediaPlayer播放......我该怎么做才能让文件在Android设备上播放?...

aac数据必须存在于容器格式中,如m4amp4
MediaPlayer(奇怪地)不播放原始aac数据,但不希望包含原始mp3

注意:
当置于上述其中一个内部时,您将丢失每个帧的ADTS标头(因为该信息现在将存在于容器的元数据的其他部分中)。