IMedia播放音乐的问题(紧急)
各位LD,请教个问题:
我用IMedia接口播放从网络上得到的数据,为什么第一次能播放出来,第二次用IMEDIA_SetMediaData重设数据,注册回调IMEDIA_RegisterNotify并IMEDIA_Play就没有声音了。
如果重新ISHELL_CreateInstance,再IMEDIA_SetMediaData重设数据,注册回调IMEDIA_RegisterNotify并IMEDIA_Play,就能播放出来,但是声音会有顿一下的感觉,这个怎么解决?
哪位LD搞过,指教一下。谢谢!!!
问题点数:2、回复次数:10Top
1 楼younggundog(炼狱中的游魂)回复于 2006-07-06 17:16:57 得分 0
本人理解:IMEDIA_SetMediaData,必须在IMedia 状态机的状态为:“空闲”设置才会起作用。
你可以看看IMedia 状态机的图Top
2 楼hhygcy(小楼一夜听春雨)回复于 2006-07-18 14:24:40 得分 0
我们也发现了类似的情况, 通常的做法是设置一个timer,等待100ms然后再继续播放第二个Top
3 楼hhygcy(小楼一夜听春雨)回复于 2006-07-18 14:26:20 得分 0
关于声音有延时,那个没有什么很好的办法,除非解析文件头自己合并内存Top
4 楼lei001(太极)回复于 2006-08-06 20:47:21 得分 0
回调函数里面,重新处理一下的Top
5 楼aniuxiaodi()回复于 2006-09-04 17:31:32 得分 0
brew IMeida接口收到的回调信息都是异步的,所以你需要在播放前设置一个100ms的timer!Top
6 楼sdchl(热爱学习)回复于 2006-09-06 17:39:42 得分 0
younggundog(炼狱中的游魂)的回答应该是准确的,如果不是idle状态,就不允许设置新的数据,如果在设置之前调用IMEDIA_Stop函数的话应该可以播放。Top
7 楼efei(爱琴海)回复于 2006-09-14 22:24:15 得分 0
同样的数据?
那就不需要重新设置数据了,播放完了直接继续播放
要问如何知道它播放完了,注册回调Top
8 楼efei(爱琴海)回复于 2006-09-14 22:25:02 得分 0
汗,六月份的一个问题,想必楼主也早已解决了吧Top
9 楼songcx(琪儿)回复于 2006-10-09 18:11:23 得分 0
如果是同样的数据,重复播放的话,用IMEDIA_SetMediaParm(MM_PARM_PLAY_REPEAT)设置一下就可以了。
如果不是同样的数据,在每次调用IMEDIA_SetMediaData时,判断其返回值,如果返回值是EBADSTATE,则可以设置Timer循环调用,如果是其他返回值,则根据返回值类型检查错误发生的地方。Top
10 楼Aarin(AarinDeng)回复于 2006-10-09 21:28:48 得分 0
“younggundog(炼狱中的游魂)的回答应该是准确的,如果不是idle状态,就不允许设置新的数据,如果在设置之前调用IMEDIA_Stop函数的话应该可以播放”
并且回调返回的状态为MM_STATUS_DONE 或MM_STATUS_ABORT时,才真正表示声音播放结束可以重新开始播放。Top




