gpt4 book ai didi

c# - 不支持 URI 前缀

转载 作者:行者123 更新时间:2023-12-02 15:40:14 31 4
gpt4 key购买 nike

我正在尝试使用以下方式加载和播放波形文件:

SoundPlayer simpleSound = new SoundPlayer(@"pack://application:,,,/MyAssembly;component/Sounds/10meters.wav");
simpleSound.Play();

没有成功。我得到一个 System.NotSupportedException :( 见下文。

System.NotSupportedException: The URI prefix is not recognized.
at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)
at System.Net.WebRequest.Create(Uri requestUri)
at System.Media.SoundPlayer.LoadSync()
at System.Media.SoundPlayer.LoadAndPlay(Int32 flags)
at System.Media.SoundPlayer.Play()

我查看了谷歌,因此试图找到解决方案,但没有任何效果。使用直接路径播放文件效果很好

SoundPlayer simpleSound = new SoundPlayer(@"D:\Projects\MyAssembly\Sounds\10meters.wav");
simpleSound.Play();

我还检查了 MyAssembly 内容,资源在那里。SoundPlayer 不支持打包还是我做的不正确?

最佳答案

pack:// URI 方案特定于 WPF,因此非 WPF 组件不知道如何处理它...但是,您可以检索此资源的流,并且将其传递给 SoundPlayer 构造函数:

Uri uri = new Uri(@"pack://application:,,,/MyAssembly;component/Sounds/10meters.wav");
StreamResourceInfo sri = Application.GetResourceStream(uri);
SoundPlayer simpleSound = new SoundPlayer(sri.Stream);
simpleSound.Play();

另一种选择是使用 MediaPlayer 类:

Uri uri = new Uri(@"pack://application:,,,/MyAssembly;component/Sounds/10meters.wav");
MediaPlayer player = new MediaPlayer();
player.Open(uri);
player.Play();

此类支持 pack:// URI 方案

关于c# - 不支持 URI 前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8344380/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com