我使用下面的代码生成了一个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());
答案 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
数据必须存在于容器格式中,如m4a
或mp4
。
MediaPlayer(奇怪地)不播放原始aac数据,但不希望包含原始mp3
。
注意:
当置于上述其中一个内部时,您将丢失每个帧的ADTS标头(因为该信息现在将存在于容器的元数据的其他部分中)。