请教一个DirectSound下顺序发音的问题

busymj 2008-08-27 09:13:40

我有一连串的WAV文件列表(数字或汉字发音),我希望一个一个次序的将它们播放出来。

但现在默认DirectSound上播放过程是异步的,就是说我的声音放入以后是在一个瞬间同时开始播放。。。

现在想请问一下,我如何才能使这些声音同步,次序的播放出来?

最好能给出范例。分数我后面会再加的,谢谢了。


...全文
295 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
busymj 2008-09-12
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 zpcoder 的回复:]
就是让他一个个的读字吧:(我证实可行)

http://www.techrss.cn/html/2007/05-15/13555.htm
[/Quote]

可行吗?点进去看说的是语音识别技术啊??

有人会吗?请帮帮忙,谢谢了。

min_1982 2008-09-11
  • 打赏
  • 举报
回复
进来学习一下。
nattystyle 2008-09-11
  • 打赏
  • 举报
回复
分多人也多
zpcoder 2008-09-11
  • 打赏
  • 举报
回复
就是让他一个个的读字吧:(我证实可行)

http://www.techrss.cn/html/2007/05-15/13555.htm
LovingAlison 2008-09-10
  • 打赏
  • 举报
回复
用GetFiles()遍历所有文件 如果文件格式符合
然后如果为wav文件 就发声就好了
baihe_591 2008-09-10
  • 打赏
  • 举报
回复
LZ ,异步和同步有什么区别?我的代码为什么不是异步的?

那dirctsound该怎么用异步?
busymj 2008-09-10
  • 打赏
  • 举报
回复

再加分了,600分,请大家帮助解决,谢谢。

http://topic.csdn.net/u/20080910/14/d8a92641-e39e-452e-810d-af8681662188.html
busymj 2008-09-10
  • 打赏
  • 举报
回复

楼上的范例我看了,但你的方案中没办法实现异步的播放啊。

谁有直接用DirectSound实现的方案?多谢了。
baihe_591 2008-09-04
  • 打赏
  • 举报
回复
我已经按你的要求做了一个实例,下载地址:http://download.csdn.net/source/604411

窗体有一个button和listbox,程序运行后点button添加音频文件,文件被加入到listbox中,此时会自动循环播放listbox中的文件.

busymj 2008-09-04
  • 打赏
  • 举报
回复

分数加好了,提供解决方案的在本帖回复,到另一个帖留名接分即可。

http://topic.csdn.net/u/20080903/09/15b69472-b644-4db5-b655-30d06a77083e.html
格拉 2008-09-03
  • 打赏
  • 举报
回复
MARK
lovehongyun 2008-09-03
  • 打赏
  • 举报
回复
关注一下..
baihe_591 2008-09-03
  • 打赏
  • 举报
回复
也可以用Mcisendstring API来播放文件.


你还是加我QQ吧 ,284238731
viki117 2008-09-03
  • 打赏
  • 举报
回复
范例啊。。只有思路。。
baihe_591 2008-09-03
  • 打赏
  • 举报
回复
在程序项目中添加"[WindowsDir]\system32\quartz.dll"引用.
busymj 2008-09-03
  • 打赏
  • 举报
回复

奖励分数帖:
http://topic.csdn.net/u/20080903/09/15b69472-b644-4db5-b655-30d06a77083e.html
busymj 2008-09-02
  • 打赏
  • 举报
回复

先说下我自己的想法,有两种。

一种是使用事件,这个也是最简单方便的解决方案,基本两三句话就解决了。

就是找到播放结束的事件,然后在事件的句柄上加入播放第二段声音的事件。

另一种就是使用流,将文件分段读入,然后传送给DirectSound,在第一个文件读完后,继续读第二个文件。。。

以上是我的想法,不过不幸的事,两种方法我都没找到好的范例。

有哪位能帮帮我,多谢了。
busymj 2008-09-02
  • 打赏
  • 举报
回复

baihe_591,不解决问题啊。

您在代码中引用的QuartzTypeLib是否为托管环境下的DLL?

包含在项目中是否可以直接使用了呢?(我找了几台电脑,都没你所说的这个库文件)

因为现在系统已经要安装.Net2.0框架和DirectX平台了,所以我不想再加多外部的引用。

能否直接使用DirectSound来实现这个功能?

这个帖子我已经加过分了,不能再加了。

如果谁能帮我解决(直接使用DirectSound实现)再加200分,另开帖给。

谢谢大家了。

mlhy20060406 2008-08-31
  • 打赏
  • 举报
回复
study
busymj 2008-08-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 baihe_591 的回复:]
m_objMediaEventEx.GetEvent(out lEventCode,
out lParam1,
out lParam2,
0);
就是这个时间啊.
[/Quote]

代码能给份完整的吗?你只写出事件这一块,我看不出运行的机制啊。

包括m_objMediaEventEx这个对象是从哪儿来的。。。
加载更多回复(13)

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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