SoundPlayer不会使用字符串

时间:2014-07-13 17:36:33

标签: c# audio

好的,我是一个菜鸟,已经在Google上花了4个小时。所以我真的很感激一些帮助。我尝试用变量播放声音(获得100多个声音)我已经完成了本教程中的所有内容: http://www.codeproject.com/Articles/17422/Embedding-and-Playing-WAV-Audio-Files-in-a-WinForm

这有效:

System.Media.SoundPlayer soundPlayer = new System.Media.SoundPlayer (PROGRAM.Properties.Resources.audio); soundPlayer.Play();

这不起作用:

string file = "PROGRAM.Properties.Resources.audio";

System.Media.SoundPlayer soundPlayer = new System.Media.SoundPlayer (file); soundPlayer.Play();

错误:请确保指定位置存在声音文件... System.Media:SoundPlayer.ValidateSoundFile(StringfileName)

字符串怎么可能不起作用?

1 个答案:

答案 0 :(得分:1)

当您在第一个示例中使用PROGRAM.Properties.Resources.audio时,您实际上获得了对流的引用(它为您提供了嵌入的音频数据)。这是由.resx生成的自动生成的代码管理的。

当您将"PROGRAM.Properties.Resources.audio"作为字符串传递时,SoundPlayer会将其解释为文件名,然后显然无法找到它。

如果要手动从资源文件中获取音频流,请尝试:

var stream = PROGRAM.Properties.Resources.ResourceManager.GetStream( "audio" );
var soundPlayer = new System.Media.SoundPlayer( stream );
soundPlayer.Play();