我正在尝试使用FMOD播放部分声音,比如20000帧文件的帧50000-100000。 我找到了几种寻找前进的方法(即在第50000帧开始播放),但我还没有找到一种方法来确保声音在100000处停止播放。有没有什么方法可以在没有添加lbsndfile的情况下本地执行此操作或者之类的进入图片?
我还应该提一下,我正在使用流媒体选项。我必须假设这些声音是任意大的,不能舒适/快速地加载到内存中。
答案 0 :(得分:4)
您可以使用Channel :: setDelay来准确启动和停止声音。使用FMOD_DELAYTYPE_DSPCLOCK_START设置声音的开始时间,使用FMOD_DELAYTYPE_DSPCLOCK_END设置结束时间。
查看Channel :: setDelay,FMOD_DELAYTYPE,System :: getDSPClock的文档。
答案 1 :(得分:1)
当您到达所需的点时,您应该能够使用流式回调来停止流。
选项1:创建流时,将lenbytes
设置为您希望播放的帧数的偶数除数。在您的示例中,将'lenbytes'设置为5000,然后在回调中保留一个计数器。当你到达10时,停止流。
选项2:使用FSOUND_Stream_AddSyncPoint
并将pcmoffset
设置为您想要的停靠点。使用FSOUND_Stream_SetSyncCallback
注册回调。在回调中停止流。
答案 2 :(得分:1)