我最近给了一些朋友的代码,这意味着转换然后播放和分析音乐,但是当我尝试将它集成到我自己的项目中时,它会抛出错误并拒绝播放音乐。
我已经跟踪了代码的流程,并找到了与原始代码不一致的第一行。
#define AL_CALL(a) { a; checkError(__FILE__, __LINE__); }
bool PcmStream::open(string path){
printf("PcmStream %s", path.c_str());
fp = fopen(path.c_str(), "rb");
if(!fp){
printf("Audio file at path %s is missing", path.c_str());
return false;
}
fseek(fp, 0L, SEEK_END);
file_size = ftell(fp);
fseek(fp, 0L, SEEK_SET);
printf("File size %lu Bytes", file_size);
AL_CALL(alGenBuffers(BUFFERS_NUMBER, buffers));
AL_CALL(alGenSources(1, &source));
printf("\n \n First error %u \n \n", *buffers);
printf("\n \n Second error %d \n \n", source);
这输出: BytesOpenAL错误40964 at /Users/justking14/projectname/template/multi-platform-cpp/proj.ios/PcmStreamer.cpp 61
第一个错误 2496
第二个错误 0
* buffers总是在这个项目中给出相同的数字,在原始代码上给出一个不同但是常数的数字。
Source始终在原始数字上给出相同的数字,但在我的代码中,它提供0到2089734272之间的任何数字。
答案 0 :(得分:0)
原来我使用的共享SimpleAudioEngine阻止了音频端口。