📜  统一停止声音 - C# (1)

📅  最后修改于: 2023-12-03 15:27:36.533000             🧑  作者: Mango

统一停止声音 - C#

在编写多媒体应用程序时,停止正在播放的声音是一个常见的需求。使用 C#,可以通过以下几种方式来实现停止声音的操作:

1. 使用 System.Media 命名空间

可以使用 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();
2. 使用 DirectX DirectSound

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();
3. 使用 NAudio

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。开发人员可以根据自己的需求和技能水平选择适合自己的方案。