问题描述
我会很直接。
目前我使用字典来注册我使用的所有声音。我开发了一些基本方法,让我可以控制何时添加声音、何时删除声音或获取所有已注册的声音。 这样做的问题是,无论我设置多少音量,它都不会被修改,例如,我无法正确处理 10% 的音量和 50% 的另一个声音。我按照系统音量什么都有。
如何正确调节音量?
是否有任何 NAudio 实用程序允许我创建多个具有独立音量的通道并在必要时播放它们?
public void AddSound(string soundName,string path,float volume,bool infiniteLoop = false)
{
if (File.Exists(path))
{
if (new FileInfo(path).Extension.Trim().toupper().Contains("MP3"))
{
if (!sounds.ContainsKey(soundName) && !soundFileReader.ContainsKey(soundName))
{
IWavePlayer waveOutDevice = new WaveOut();
AudioFileReader audioFileReader = new AudioFileReader(path);
SampleChannel sampleChannel = new SampleChannel(audioFileReader);
sampleChannel.volume = volume;
waveOutDevice.Init(sampleChannel);
sounds.Add(soundName,waveOutDevice);
soundFileReader.Add(soundName,audioFileReader);
}
}
}
}
public async void PlaySoundAsync(string soundName)
{
await Task.Run(() => {
if (sounds.ContainsKey(soundName) && soundFileReader.ContainsKey(soundName))
{
IWavePlayer wave = sounds[soundName];
wave.Play();
}
});
}
public void RemoveSoundByName(string soundName)
{
if (sounds.ContainsKey(soundName) && soundFileReader.ContainsKey(soundName))
{
IWavePlayer wave = sounds[soundName];
AudioFileReader audioFileReader = soundFileReader[soundName];
wave.Stop();
audioFileReader.dispose();
wave.dispose();
sounds.Remove(soundName);
soundFileReader.Remove(soundName);
}
}
public List<string> ListSounds()
{
List<string> soundList = new List<string>();
foreach (string key in sounds.Keys)
{
soundList.Add(key);
}
return soundList;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)