请提供从内存中播放声音的方法,控件或者函数

jiujiang 2003-09-14 03:50:24
现在从网络接受声音数据包,然后进行播放。由于接收包的频率很高25帧/秒,因此播放的效率和方法比较重要,我现在使用sndPlaySound函数播放,发现声音的连接处有中断现象。
请各位兄弟提供可行方法。
谢谢
...全文
89 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxf1976 2003-09-28
  • 打赏
  • 举报
回复
good
cxf1976 2003-09-21
  • 打赏
  • 举报
回复
up
everandforever 2003-09-21
  • 打赏
  • 举报
回复
DIRECT SOUND 解决这种小问题简直是小菜一碟, 即使你从未用过DX, 一个下午也足够了.
只使用最简单的办法.
awapopeye 2003-09-21
  • 打赏
  • 举报
回复
我是向来不赞同动不动就使用DX的。可能是不喜欢它的缘故。用DSOUND确实可以实现。不过。。我觉得“无声无形”老兄给了一个连接到是对楼住有用。

http://www2.ccw.com.cn/2000/0045/0045c13.asp
everandforever 2003-09-21
  • 打赏
  • 举报
回复
DIRECT SOUND 为何不对路, 我看很对路啊.
awapopeye 2003-09-20
  • 打赏
  • 举报
回复
上述代码为BCB代码。也许这个会对楼主有点启发或者有用。
awapopeye 2003-09-20
  • 打赏
  • 举报
回复
(以下内容转贴自《老侃第一站》)

如何播放资源中的WAVE?

PlaySound("SoundInResFile", Handle, SND_RESOURCE | SND_LOOP | SND_ASYNC);

其中Handle是应用程序的实例句柄或DLL的句柄(就是LoadLibrary的返回值),SoundInResFile是资源名,后面的SND_RESOURCE | SND_LOOP | SND_ASYNC说明WAVE来自资源、循环异步播放。

2、如何停止上述方法播放的WAVE?

PlaySound(NULL, Handle, 0);

3、这种方法的优越性?

第一,可以保证WAVE声音不会被使用者替换,独立的WAVE文件很容易被替换,而作为资源就很难被替换了。第二,当你的应用程序需要大量WAVE音频的时候可以明显减少文件数量,因为可以把所有的WAVE都放进资源里,这样就不存在一大堆的WAVE文件了。

4、一点建议

可以把WAVE音频放入DLL中,在需要用的时候用LoadLibrary加载,然后播放,播放完成后还可以FreeLibrary清除,这样可以节约内存,并且可以在多个应用程序之间重用。
awapopeye 2003-09-20
  • 打赏
  • 举报
回复
DX SOUND 好象不对路,MEDIA流媒体的一些东西到还有用处。可惜偶不是搞流媒体的,只能尽量的找资料。
everandforever 2003-09-20
  • 打赏
  • 举报
回复
DIRECT SOUND?
awapopeye 2003-09-14
  • 打赏
  • 举报
回复
这个大概思路可以考虑先设定一个定了的缓冲区,要根据你的实际内存数量设大点。不能设为无限制,否则会导致内存资源匮乏。

可以考虑设定一个缓冲时间,比如有1Mbps的接入速度必须缓冲5秒!300KBPS则必须缓冲10秒。这样实现你的问题比较简单。如果你对时间要求不苛刻的话。

当然,如果你要实时播放。。。那我就不知道啦。。。。可以参见下WINDOW MEDIA SDK 中的MEDIA STREAM。。中间的相关细节。也许是这个吧。。。。。

2,542

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧