一个声卡同时播放几个声音文件的简单方法?

时间:2021-07-14 23:28:59
有需要在程序中同时播放几个声音,因为要在线程级编程,所以不能用控件(对吗?),使用了
MCI接口,启动多个线程分别播放,发现有些声卡可以同时播放,有些不行并提示设备被占用,
是因为一些老一些的声卡不支持多声音流吗?是否可以通过混音操作使其同时播放多个声音
流?如果可以,怎样操作?哪儿有例程或教程?除此之外有没有其它办法?
各位大侠请鼎立相助,不胜感谢!!

13 个解决方案

#1


可以试试Direct Sound.

#2


程序有可能在nt下运行,所以Direct sound方法不能用.

#3


关注

#4


感兴趣!

#5


可以使用程序把声音混合在一起,这需要使用低层音频API函数,如果是8位的声音把两个文件的数据----除了文件头
z=x+y-255;
z=z>255?255:z;
z=z<0?0:z;
写到缓冲区即可,如果还不明白,再问

#6


DirectSound的出现就是为了多个wav的同时播放,建议你用DirectSound

#7


首先,DirectSound不能用,因为在nt下使用,windows下有一个wavmix32.dll,是一个第三方的库,可以实现混音,但我只找到vb的例程,在往VC下移植的过程中,遇到下列问题,大家可以一议:
1)VB函数调用中的结构(type),转移到VC下的结构(struct),调用是
使用结构名还是结构的指针.
2)VC标准dll的调用是否需要指定__stdcall等来说明参数的顺序
3)有没有wavmix32.dll的使用说明或例程

#8


关注

#9


關注

#10


关于问题2:
你应该用WINAPI来声明。你在VB下用的是PASCAL调用规范。

#11


我只知道,老的声卡一次只能使用一个Wave通道。现在的声卡可以支持多个通道同时使用,如YA724,同时播放七八个Wave没有问题。

#12


我有wavmix32.dll的例程,vc的,请和xianghua_liu@263.net联系,记得给我分吆!

#13


GONOW给我一份好吗?

#1


可以试试Direct Sound.

#2


程序有可能在nt下运行,所以Direct sound方法不能用.

#3


关注

#4


感兴趣!

#5


可以使用程序把声音混合在一起,这需要使用低层音频API函数,如果是8位的声音把两个文件的数据----除了文件头
z=x+y-255;
z=z>255?255:z;
z=z<0?0:z;
写到缓冲区即可,如果还不明白,再问

#6


DirectSound的出现就是为了多个wav的同时播放,建议你用DirectSound

#7


首先,DirectSound不能用,因为在nt下使用,windows下有一个wavmix32.dll,是一个第三方的库,可以实现混音,但我只找到vb的例程,在往VC下移植的过程中,遇到下列问题,大家可以一议:
1)VB函数调用中的结构(type),转移到VC下的结构(struct),调用是
使用结构名还是结构的指针.
2)VC标准dll的调用是否需要指定__stdcall等来说明参数的顺序
3)有没有wavmix32.dll的使用说明或例程

#8


关注

#9


關注

#10


关于问题2:
你应该用WINAPI来声明。你在VB下用的是PASCAL调用规范。

#11


我只知道,老的声卡一次只能使用一个Wave通道。现在的声卡可以支持多个通道同时使用,如YA724,同时播放七八个Wave没有问题。

#12


我有wavmix32.dll的例程,vc的,请和xianghua_liu@263.net联系,记得给我分吆!

#13


GONOW给我一份好吗?