Можно ли декодировать данные mp3, хранящиеся в буфере?
я знаю что могу декодировать в буфер после API версии 14. Но я не смог создать SimpleBufferQueue для использования в качестве вход к декодеру.
Это код, который есть на данный момент. Мне удалось заставить простой буфер работать в другом месте для подачи конечного аудиовыхода и с удовольствием воспроизводить Wavs для байтовых массивов, так что я знаю, что нет ничего плохого в opensl / es, файлах, планшете и т. Д. И т. Д.
// THIS CODE CRAHES THE PROGRAM WHEN YOU REALIZE THE PLAYER
//inbound
SLDataLocator_AndroidSimpleBufferQueue locIBQ = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2};
SLDataFormat_MIME format = {SL_DATAFORMAT_MIME, NULL, SL_CONTAINERTYPE_UNSPECIFIED};
SLDataSource audioSource = {&locIBQ, &format};
//outbound
SLDataLocator_AndroidSimpleBufferQueue locatorOutBufferQueue = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2};
SLDataSink audioSink = { &locatorOutBufferQueue, NULL };
//player
const SLInterfaceID playIds[2] = {SL_IID_PLAY, SL_IID_ANDROIDSIMPLEBUFFERQUEUE};
const SLboolean playReq[2] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
SLresult result = (*engineEngine)->CreateAudioPlayer(engineEngine, &(bqPlayerObject), &audioSource, &audioSink, 2, playIds, playReq);
Спасибо всем
Кажется, нет способа сделать это на Android.
Большинство крупных приложений, похоже, используют libstagefright для своего декодирования.
Других решений пока нет …