В настоящее время у меня есть аудио PCM в виде массива байтов. Формат подписан 16-битным малым значком. Я хотел бы преобразовать это в какой-нибудь воспроизводимый формат на Android, желательно версии 3.2 или выше. Кто-нибудь имеет предложения о том, как это можно сделать? Я провел некоторое исследование и попробовал следующее ниже, но ни один из них не был успешным. Было бы очень признательно, если кто-нибудь может предложить лучший способ или указать, где я поступил неправильно.
Я попытался создать AudioFormat с правильными настройками звука, однако Android не поддерживает библиотеку javax.sound.sampled.
Я также пробовал записывать данные PCM в волновой файл, но я столкнулся с проблемой получения всей необходимой информации заголовка wav.
Я также попытался использовать класс AudioTrack, предлагаемый Android, для воспроизведения данных PCM. Однако я не могу слышать звук. Вот мой метод:
public void playback(){
try{
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 500000, AudioTrack.MODE_STATIC);
audioTrack.write(audio, 0, 500000);
} catch(Throwable t){
Log.d("Audio","Playback Failed");
}
}
Любые предложения будут оценены.