我想“按需”播放声音。一个简单的鼓机是我想要编程的。
是否可以让 DirectShow 从内存缓冲区中读取?(由 c++ 创建的对象)
我在想:
创建一个缓冲区,比如说,40000 个位置,类型double
(我不知道用作声音的实际数据类型,所以我可能错了double
)。
40000 个位置可以播放 1 秒。
DirectShow 对象应该一遍又一遍地逐个位置读取这个缓冲区。缓冲区将包含声音输出的实际值。例如(正弦输出):
{0, 0.4, 0.7, 0.9, 0.99, 0.9, 0.7, 0.4, 0, -0,4, -0.7, -0.9, -0.99, -0.9, -0.7, -0.4, 0}
这个音序的解析力可能不是那么好,但也只是为了显示我的意思。
这可能吗?我在 Google 上找不到任何关于它的示例或信息。
编辑: 在处理 DirectShow 和流式视频(UBS 相机)时,我使用了一个叫做 Sample Grabber 的东西。它为来自凸轮的每一帧调用了一个方法。我正在寻找类似的东西,但对于音乐,以及在播放音乐之前调用的东西。谢谢