使用FMOD播放声音的一部分

时间:2010-02-26 21:42:00

标签: c audio fmod

我正在尝试使用FMOD播放部分声音,比如20000帧文件的帧50000-100000。 我找到了几种寻找前进的方法(即在第50000帧开始播放),但我还没有找到一种方法来确保声音在100000处停止播放。有没有什么方法可以在没有添加lbsndfile的情况下本地执行此操作或者之类的进入图片?

我还应该提一下,我正在使用流媒体选项。我必须假设这些声音是任意大的,不能舒适/快速地加载到内存中。

3 个答案:

答案 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)