2016-12-30 23 views
1

以下のコードを使用してaacオーディオファイルを生成しました。そしてファイルは私のWindowsマシンで正常に再生されます。しかし、それは私のアンドロイドデバイスで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フレームstructreに精通することができた場合は、出発点として、これらの点を確認してください。

Decoding AAC using MediaCodec API on Android

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

「しかし、それは私のAndroidデバイス上で再生することはできませんMediaPlayerを使用して...ファイルをアンドロイドデバイスで再生できるようにするにはどうすればよいですか... "

aacデータはまたはmp4のようにコンテナの形式である必要があります。
MediaPlayerは生のaacデータを再生しませんが、未加工のmp3は含まれません。

注:上記のいずれかの内部に配置されたとき
は、(その情報は現在コンテナのメタデータの他の部分に存在するため)フレーム毎にADTSヘッダを失うことになります。

+0

ありがとうございます!それは私が最初に思ったよりずっと複雑です...私はa4をm4aコンテナに入れる方法を探しました。人々はmp4Boxとffmpegを提案しましたが、ネイティブAndroid APIを使用してそれを行う方法はありますか? MediaMuxerクラスはその仕事をしますか? – Student222

関連する問題