2016-12-30 100 views
1

我使用下面的代碼生成了一個aac音頻文件。該文件在我的Windows機器上播放良好。但它不能在我的Android設備上使用MediaPlayer播放。我應該怎麼做才能在Android設備上播放文件?謝謝!Android可以播放ADTS AAC文件嗎?

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

「機器人能起到ADTS的AAC文件嗎?......」

不使用默認的應用程序。只有你編寫這樣的應用程序。使用MediaCodec API手動將每個aac幀的字節發送到解碼器。

如果你能處理的字節和熟悉AAC框架結構法,然後檢查這些爲出發點:

Decoding AAC using MediaCodec API on Android

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

「但它不是我的Android設備上播放使用MediaPlayer ...我應該怎麼做才能使文件在Android設備上可以播放?...「

aac數據必須存在於容器格式中,如m4amp4
MediaPlayer(奇怪的是)不播放原始數據,但不認爲包含原始數據mp3

注:
當置於其內的上述之一,將會失去對每個幀(因爲該信息現在將存在於容器的元數據的其他部分)的ADTS頭標。

+0

非常感謝!它比我想象的要複雜得多......我搜索瞭如何將aac放入m4a容器中。人們建議mp4Box和ffmpeg,有沒有辦法使用原生Android API來實現它? MediaMuxer課程將完成這項工作嗎? – Student222

相關問題