是否可以解码存储在字节数组中的mp3数据?

时间:2013-10-15 13:03:50

标签: android c++ opensl

是否可以解码存储在缓冲区中的mp3数据?

我知道我可以decode to a buffer after API version 14。但我无法创建SimpleBufferQueue作为解析器的输入

这是目前的代码。我已经能够在其他地方使用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);        

全部谢谢

1 个答案:

答案 0 :(得分:0)

似乎没有办法在Android上执行此操作。 大多数主要应用程序似乎都使用libstagefright进行解码。