0

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

我知道我可以在 API 版本 14 之后解码到缓冲区。但我一直无法创建一个 SimpleBufferQueue 用作解码器的输入。

这是当前的代码。我已经能够在其他地方获得一个简单的缓冲区队列来提供最终的音频输出,并且可以愉快地为字节数组播放 Wav,所以我知道 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);        

谢谢大家

4

1 回答 1

0

似乎没有办法在android上做到这一点。大多数主要应用程序似乎都使用 libstagefright 进行解码。

于 2014-09-17T07:15:38.513 回答