我使用下面的代码生成了一个 aac 音频文件。该文件在我的 Windows 机器上运行良好。但它无法在我的 Android 设备上使用 MediaPlayer 播放。我应该怎样做才能使该文件在 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());
最佳答案
"Can Android play a ADTS AAC file?..."
不适用于默认应用程序。仅当您编写此类应用程序时。使用MediaCodec
用于手动将每个 aac 帧的字节发送到解码器的 API。
如果您可以处理字节并熟悉 aac 帧结构,那么请检查这些作为起点:
Decoding AAC using MediaCodec API on Android
PCM -> AAC (Encoder) -> PCM(Decoder) in real-time with correct optimization
"But it cannot be played on my android device using a MediaPlayer... What should I do to make the file playable on a android device?..."
aac
数据必须存在于 m4a
或 mp4
等容器格式内。
MediaPlayer (奇怪的是)不播放原始 aac 数据,但也不期望包含原始 mp3
。
注意:
当放置在上述其中之一时,您将丢失每个帧的 ADTS header (因为该信息现在将存在于容器元数据的其他部分中)。
关于android - Android 可以播放 ADTS AAC 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41390192/