Android audiorecordとaudiotrackコーデックオプション?
質問
現在、AndroidでAudioTrackとAudioreCordクラスを使用しています。
私は純粋なPCMデータを使用していますが、他のコーデックのオプションは何だと思っていましたか?
から このページ AMRナローバンドを使用してしかエンコードしてデコードできないようですか?
現在、次のようにオーディオクラスを設定します。
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize,
AudioTrack.MODE_STREAM);
それで、私の質問は、PCMからサポートされているコーデックの1つにエンコードを変更するにはどうすればよいですか?
Audioformatでencoding_pcm_16bitを変更しようとすると、PCMオプションとともにデフォルトまたは無効なエンコードのオプションのみが取得されます。
Androidでのオーディオのエンコードとデコードに関するチュートリアルへのリンクは、ここで何かの助けを知っていれば、素晴らしいことを感謝します。
ありがとう
編集: コードを次のように変更しました。
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
**MediaRecorder.AudioEncoder.AMR_NB**,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
**MediaRecorder.AudioEncoder.AMR_NB**,
buffersize,
AudioTrack.MODE_STREAM);
コードは適切に実行されますが、実際にAMR_NBとしてオーディオをエンコードしているのではないかと思っています。これが適切な方法ではない場合は?
RAW PCMを使用するとバッファオーバーフローを取得していましたが、audioformat.pcmの代わりに使用されている新しいコードを使用して新しいコードを使用して以来、何も表示されませんでした
解決
ドキュメントが述べているように AudioRecord
と AudioTrack
:
audioFormat the format in which the audio data is represented. See ENCODING_PCM_16BIT and ENCODING_PCM_8BIT
8ビットと16ビットのPCMでのみ作業できます。他の形式でオーディオが必要な場合は、使用しないでください AudioRecord
と AudioTrack
(試す MediaRecorder
と MediaPlayer
)または、おそらくNDKを活用して、独自のコードを使用してトランスコードする必要があります。
AudioRecord
と AudioTrack
問題のオーディオが、サポートされているコーデックではないか、サポートされているストリーミングプロトコルではないため、OpenCoreマルチメディアエンジンによってサポートされていない場合に特別に設計されています。