📅  最后修改于: 2023-12-03 15:27:36.533000             🧑  作者: Mango
在编写多媒体应用程序时,停止正在播放的声音是一个常见的需求。使用 C#,可以通过以下几种方式来实现停止声音的操作:
可以使用 System.Media 命名空间中的 SoundPlayer 类来播放声音,并使用 Stop() 方法停止它。以下是一个使用 SoundPlayer 停止声音的示例:
using System;
using System.Media;
class AudioPlayer
{
private static SoundPlayer player;
public static void Play(string soundFilePath)
{
player = new SoundPlayer(soundFilePath);
player.Play();
}
public static void Stop()
{
if (player != null)
{
player.Stop();
}
}
}
// 播放声音
AudioPlayer.Play("audio.wav");
// 停止声音
AudioPlayer.Stop();
DirectX DirectSound 可以直接控制声卡进行声音播放。以下是一个使用 DirectSound 停止声音的示例:
using Microsoft.DirectX.DirectSound;
class AudioPlayer
{
private static SecondaryBuffer buffer;
public static void Play(string soundFilePath)
{
Device device = new Device();
buffer = new SecondaryBuffer(soundFilePath, device);
buffer.Play(0, BufferPlayFlags.Looping);
}
public static void Stop()
{
if (buffer != null)
{
buffer.Stop();
}
}
}
// 播放声音
AudioPlayer.Play("audio.wav");
// 停止声音
AudioPlayer.Stop();
NAudio 是一个流行的 C# 音频库,可以用来在 Windows 上进行音频录制和播放。以下是一个使用 NAudio 停止声音的示例:
using NAudio.Wave;
class AudioPlayer : IDisposable
{
private WaveOutEvent outputDevice;
private AudioFileReader audioFile;
public void Play(string soundFilePath)
{
outputDevice = new WaveOutEvent();
audioFile = new AudioFileReader(soundFilePath);
outputDevice.Init(audioFile);
outputDevice.Play();
}
public void Dispose()
{
if (outputDevice != null)
{
outputDevice.Dispose();
outputDevice = null;
}
if (audioFile != null)
{
audioFile.Dispose();
audioFile = null;
}
}
public void Stop()
{
if (outputDevice != null)
{
outputDevice.Stop();
}
}
}
// 播放声音
using (AudioPlayer player = new AudioPlayer())
{
player.Play("audio.wav");
// 停止声音
player.Stop();
}
综上所述,C# 中有多种方法可以停止正在播放的声音,包括使用 System.Media 命名空间、DirectX DirectSound 和 NAudio。开发人员可以根据自己的需求和技能水平选择适合自己的方案。