关于brew 流播放音乐问题的一些困惑,高手来看看
现在想实现 从音乐文件中读取一断buffer,比如80K,然后
pIFile = IFILEMGR_OpenFile(pFileMgr,"beyond.mp3",_OFM_READ);
ISHELL_CreateInstance(pMe->a.m_pIShell,AEECLSID_MEDIAPCM,(void**)&pIMedia);
ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_FIFO, (void**)&m_pFIFO);
IFIFO_OpenEx(m_pFIFO,"fifo://shared//test", AEEFIFO_MODE_RW);//fs:/shared/test这个目录
IFIFO_SetBufSize(m_pFIFO, 160000);
MediaDataEx.clsData = MMD_ISOURCE; // pData is ISource
MediaDataEx.pData = (void *)m_pFIFO; // ISource object
MediaDataEx.dwSize = 0;
MediaDataEx.dwStructSize = sizeof(MediaDataEx); // Size of AEEMediaDataEx structure
MediaDataEx.dwCaps = 0; // What capabilities to enable. 0 means all.
MediaDataEx.dwBufferSize = 0; // Internal buffer size. 0 means use default.
MediaDataEx.bRaw = FALSE; // Is this Raw data? Set it to no (FALSE)
IMEDIA_SetMediaDataEx(pIMedia,&MediaDataEx, 1);
IMEDIA_RegisterNotify(pIMedia,(PFNMEDIANOTIFY)CB_Play,m_pISource);
res = IMEDIA_Play(pIMedia);//这里就直接返回 13,状态错误
如果在play之前
IFILE_Read(pIFile,pBuffer,dwCount);
IFIFO_Write(m_pFIFO,(char *)pBuffer, dwCount);//
那就能放出声音。
但是播放后再调用
IFILE_Read(pIFile,pBuffer,dwCount);
IFIFO_Write(m_pFIFO,(char *)pBuffer, dwCount);//
设置下一个buffer却不能连续起来。
看到别人做法应该是可以的:
http://topic.csdn.net/u/20100227/17/6199a1b6-305d-4923-8c33-9c71b9da570f.html
PS:刚试验了一下, 播放wav歌曲,并且把wavespec 设置好,是可以在播放后继续给buffer填充内容的,那如果想播放任意格式的音乐怎么办呢?求高手赐教,Q 278870738