我对所有的音频文件都使用SLDataLocator_AndroidSimpleBufferQueue。效果很好但是..。它不支持寻找和循环。
OpenSL不能要求具有缓冲队列数据源的SL_IID_SEEK
如何使用循环处理文件?不能使用流-低延迟。
发布于 2013-11-24 09:57:57
事实证明,这在SLDataLocator_AndroidSimpleBufferQueue中是不可能的。不得不用SLDataLocator_AndroidFD..。
发布于 2016-11-18 07:30:10
我在播放器回调函数上使用缓冲器队列内队列函数解决了这个问题。
这样的代码样本..。
struct PARAM { char* buffer; long size; };
void bqPlayerCallback(SLAndroidSimpleBufferQueueItf bqPlayerBufferQueue, void *context)
{
...
PARAM* param = (PARAM*)context;
result = (*bqPlayerBufferQueue)->Enqueue(bqPlayerBufferQueue, param->buffer, nparam->size);
}
void createAudioPlayer... {
(*engineEngine)->CreateAudioPlayer(engineEngine, &bqPlayerObject, ...);
...
PARAM* param = new PARAM{buffer, size};
result = (*bqPlayerBufferQueue)->RegisterCallback(bqPlayerBufferQueue, bqPlayerCallback, param);
}https://stackoverflow.com/questions/20154462
复制相似问题