C# directsound 提示“值不在预期的范围内 ”

qq_15197419 2020-09-11 05:50:11
var fileName = "D:/ready.mp3";
DevicesCollection sound_devices = new DevicesCollection();
Device sound_device_output = new Device(sound_devices[1].DriverGuid);
sound_device_output.SetCooperativeLevel(new WindowInteropHelper(this).Handle, CooperativeLevel.Normal); //设置设备协作级别
SecondaryBuffer secondary_buffer = new SecondaryBuffer(fileName, sound_device_output); //值不在预期的范围内
secondary_buffer.Play(0, BufferPlayFlags.Looping);//设置缓冲区为循环播放



也不知道啥原因。试了各种办法,查了各种资料,都没解决,有知道的大佬帮忙解答下么,谢谢了~
SecondaryBuffer有个重载参数是用文件流。我把音频流放进去也还是报错,应该不是音频文件路径问题。
sound_device_output音频设备有两个,两个都试了,没用。
macsoft.directx.directsound.dll也替换了好几个版本,没用。
真令人头秃~
...全文
10027 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Spiritfort 2021-07-07
  • 打赏
  • 举报
回复
楼主解决没有?我也碰到这个问题,快逼疯了。主要是用别人创建的程序就没这个问题,自己创建的一直提示 值不在预期范围内
八爻老骥 2020-12-31
  • 打赏
  • 举报
回复
这个是Dx9的库,Dx9安装了吧?
qq_15197419 2020-12-31
  • 打赏
  • 举报
回复
引用 3 楼 jzm0916 的回复:
解决了没??
没有,搁置了。找不到原因
jzm0916 2020-12-30
  • 打赏
  • 举报
回复
解决了没??
qq_15197419 2020-09-15
  • 打赏
  • 举报
回复
引用 1 楼 datafansbj 的回复:
var fileName = "D:/ready.mp3"; DevicesCollection sound_devices = new DevicesCollection(); Device sound_device_output = new Device(sound_devices[1].DriverGuid); 是不是代码不全,其实上面红色部分就应该报错了。sound_devices 刚刚创建,是个空的集合,没有元素,所以红色部分引用的 sound_devices[1] 是 null。另外文件名不要这么写,容易出错,还是用 System.IO.Path 函数来合成文件名,这样不受操作系统的影响。
断点看过了。sound_devices new出来就是有两个元素的,sound_devices[1]不是null. 代码也是查了很多资料,都这么写的,不知道为啥就我出问题~ 文件名这么写仅仅只是方便测试,正常情况下不会这么写的。
datafansbj 2020-09-14
  • 打赏
  • 举报
回复
var fileName = "D:/ready.mp3";
DevicesCollection sound_devices = new DevicesCollection();
Device sound_device_output = new Device(sound_devices[1].DriverGuid);

是不是代码不全,其实上面红色部分就应该报错了。sound_devices 刚刚创建,是个空的集合,没有元素,所以红色部分引用的 sound_devices[1] 是 null。另外文件名不要这么写,容易出错,还是用 System.IO.Path 函数来合成文件名,这样不受操作系统的影响。

110,533

社区成员

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

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

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