Sound in C# abspielen

Syed Hassan Sabeeh Kazmi 12 Oktober 2023
  1. Verwenden Sie System.Media.SoundPlayer, um einen Sound in C# abzuspielen
  2. Verwenden Sie die SystemSounds.Play-Methode, um einen Sound in C# abzuspielen
  3. Betten Sie das Windows Media Player-Steuerelement in eine C#-Lösung ein, um einen Sound abzuspielen
  4. Fügen Sie die Microsoft.VisualBasic-Referenz zum C#-Projekt hinzu, um einen Sound abzuspielen
Sound in C# abspielen

In diesem Tutorial erfahren Sie, wie Sie Audiodateien oder Sounds in Windows Forms mit C# wiedergeben. Sie können die Bedeutung von Ton nicht leugnen, um das Publikum in die Spieleentwicklung oder technische Anwendungen einzutauchen.

Die C#-Programmierung bietet vier primäre Möglichkeiten zum Implementieren von Audiodateien oder Sounds in Ihre Windows-Anwendungen, von denen jede auf einzigartige Weise nützlich und praktisch ist. Mit einer so reichhaltigen Plattform wie .NET für Multiplayer können Sie ganz einfach benutzerdefinierte Soundgeneratoren für WAV- oder andere Formatdateien erstellen.

Darüber hinaus ist es möglich, einen Byte-basierten Puffer der Wave-Dateien (Sounddateien) direkt im Speicher zu erstellen, indem C# als WPF-Cones mit hervorragender integrierter Multiplayer-Unterstützung (Audio) verwendet wird.

Das Wichtige, was hier zu verstehen ist, ist die Klasse SoundPlayer, die Sound basierend auf dem WAV- oder Wave-Format abspielt, was sie nicht sehr nützlich macht. Stattdessen ermöglichen die Klassen MediaPlayer und MediaElement die Wiedergabe von MP3-Dateien.

Verwenden Sie System.Media.SoundPlayer, um einen Sound in C# abzuspielen

Die Klasse SoundPlayer kann helfen, einen Sound zur Laufzeit unter einem bestimmten Pfad abzuspielen, da sie den Dateipfad, den Namen und einen Verweis auf den Namensraum System.Media benötigt.

Sie können eine Referenz auf den Namensraum System.Media deklarieren und SoundPlayer _exp = new SoundPlayer(@"path.wav"); verwenden. ohne den Namensraum bei der Deklaration des Objekts zu erwähnen.

Führen Sie es anschließend mit der Methode Play() mit etwas wie _exp.Play(); aus. Am wichtigsten ist, dass Dateioperationen wie das Abspielen eines Tons in geeignete oder geeignet strukturierte Ausnahmebehandlungsblöcke eingeschlossen werden sollten, um die Effizienz und das Verständnis zu erhöhen, falls etwas schief geht. Der Pfadname ist falsch formatiert, schreibgeschützter Sounddateipfad, null-Pfad und ungültiger Audiodatei-Pfadname können zu Fehlern führen und andere Ausnahmeklassen erfordern.

using System;
using System.Media;  // essential namespace for using `SoundPlayer`
using System.Windows.Forms;

namespace play_sound {
  public partial class Form1 : Form {
    // Initialize form components
    public Form1() {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {}

    private void button1_Click(object sender, EventArgs e) {
      // object creation and path selection
      SoundPlayer player = new SoundPlayer(@"C:\Users\DELL\dark_souls_theme.wav");

      // apply the method to play sound
      player.Play();
    }
  }
}

Ausgang:

SoundPlayer

Verwenden Sie die SystemSounds.Play-Methode, um einen Sound in C# abzuspielen

Die Funktionalität (Angebote der Klasse SystemSounds) ist eine der einfachsten Möglichkeiten, Sound in Ihren C#-Anwendungen zu implementieren, zusätzlich zu seiner Fähigkeit, verschiedene Systemsounds mit einer einzigen Codezeile anzubieten; SystemSounds.Beep.Play();.

Es gibt jedoch einige Einschränkungen bei der Verwendung der Klasse SystemSounds, da Sie nur auf fünf verschiedene Systemsounds zugreifen können, darunter; Asterisk, Beep, Exclamation, Hand und Frage, und falls Sie den Systemsound in Windows deaktivieren, funktioniert diese Methode nicht und alle Sounds werden durch Stille ersetzt.

Auf der anderen Seite macht es es extrem einfach, Sounds auf die gleiche Weise wie Windows abzuspielen, und es ist immer eine gute Wahl, dass Ihre C#-Anwendung die Stille-Option des Benutzers respektiert.

Deklarieren Sie in Ihrem C#-Projekt einen Verweis auf System.Media oder verwenden Sie so etwas wie System.Media.SystemSounds.Asterisk.Play(); einen Ton zu spielen.

using System;
using System.Media;  // essential namespace for `SystemSounds`
using System.Windows.Forms;

namespace play_sound {
  public partial class Form1 : Form {
    // initialize components
    public Form1() {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {}

    private void button1_Click(object sender, EventArgs e) {
      SystemSounds.Asterisk.Play();  // you can use other sounds in the place of `Asterisk`
    }
  }
}

Ausgang:

SystemSounds

Die Methode Play() spielt den Sound asynchron ab, der mit einer Reihe von Soundereignistypen des Windows-Betriebssystems verknüpft ist. Sie können die Klasse SystemSounds nicht erben, die statische Methoden für den Zugriff auf Systemsounds bereitstellt.

Es handelt sich um einen High-Level-Ansatz, der es C#-Anwendungen ermöglicht, verschiedene Systemsounds in typischen Szenarien zu verwenden, die dazu beitragen, dass sich diese Anwendungen nahtlos in die Windows-Umgebung einfügen. Es ist möglich, die Sounds in der Systemsteuerung Sound anzupassen, sodass jedes Benutzerprofil diese Sounds überschreiben kann.

Betten Sie das Windows Media Player-Steuerelement in eine C#-Lösung ein, um einen Sound abzuspielen

Es ist möglich, das Windows Media Player-Steuerelement mithilfe von Microsoft Visual Studio hinzuzufügen, um einen Sound in C# wiederzugeben. Der Windows Media Player befindet sich in der VS Toolbox, und um seine Funktionalität in Ihrer C#-Anwendung zu verwenden, fügen Sie zunächst seine Komponenten zu Ihrem Windows Form hinzu.

Installieren Sie die neueste Version von Windows Media Player SDK auf Ihrem System und greifen Sie mit Ihrer VS-Toolbox darauf zu, indem Sie sie aus den COM-Komponenten anpassen, um die Option Windows Media Player hinzuzufügen. Der Standardname von Windows Media Player in Visual Studio ist axWindowsMediaPlayer1, und Sie können ihn in einen einprägsameren Namen ändern.

Fügen Sie Ihrem C#-Projekt das Control Windows Media Player ActiveX hinzu und implementieren Sie es in einem Button-Click-Event. Darüber hinaus können Sie zwei Modi wählen: einen Independent-Modus, analog zu den Medien, die durch die Open-Methode geöffnet werden, und einen Clock-Modus, ein Medienziel entsprechender Timeline- und Clock-Einträge im Timing-Baum, der die Wiedergabe steuert .

using System;
using System.Windows.Media;  // essential namespace
using System.Windows.Forms;

namespace play_sound {
  public partial class Form1 : Form {
    private MediaPlayer audio_player = new MediaPlayer();
    public Form1() {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {}

    private void button1_Click(object sender, EventArgs e) {
      OpenFileDialog dialog_audio = new OpenFileDialog();
      dialog_audio.Filter = "MP3 files (*.mp3)|*.mp3|All files (*.*)|*.*";
      if (dialog_audio.ShowDialog() == DialogResult.OK) {
        audio_player.Open(new Uri(dialog_audio.FileName));
        audio_player.Play();
      }
    }

    private void button2_Click(object sender, EventArgs e) {
      // to pause audio
      audio_player.Pause();
    }

    private void button3_Click(object sender, EventArgs e) {
      // to resume the paused audio
      audio_player.Play();
    }
  }
}

Ausgang:

Windows Media Player

Am wichtigsten ist, dass die Klasse MediaPlayer die Windows Media Player-Technologie erbt, um Audiodateien und Systemsound in mehreren modernen Formaten abzuspielen. Mit seiner Hilfe können Sie den Wiedergabevorgang der in der Instanz MediaPlayer erwähnten oder mitgeführten Sounddatei steuern.

Fügen Sie die Microsoft.VisualBasic-Referenz zum C#-Projekt hinzu, um einen Sound abzuspielen

Die Klasse Audio ist in Visual Basic unglaublich berühmt für das Abspielen eines Sounds, und Sie können davon profitieren, indem Sie sie in C# verwenden, indem Sie die Visual Basic-Bindungen in Ihre Anwendung einbinden. Es gibt jedoch eine C#-spezifische Version der Klasse Audio namens SoundPlayer, aber sie erlaubt keine einfache Byte-basierte Pufferbildung der Welle direkt im Speicher.

Fügen Sie Ihrem C#-Projekt als ersten Schritt die Referenz Microsoft.VisualBasic hinzu und erstellen Sie ein Objekt aus der Klasse Audio wie static Audio my_obj = new Audio(); und fügen Sie die Adresse der Sounddatei wie my_exp.Play("m:\\path.wav", AudioPlayMode.WaitToComplete); hinzu.

Sie können den AudioPlayMode selbst anpassen oder einstellen, wodurch Sie die Wiedergabezeit des Tons anpassen können.

using System;
using System.Windows.Forms;
using Microsoft.VisualBasic;          // essential namespace
using Microsoft.VisualBasic.Devices;  // essential namespace

namespace play_sound {
  public partial class Form1 : Form {
    static Audio audio_player = new Audio();

    public Form1() {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {}

    private void button1_Click(object sender, EventArgs e) {
      audio_player.Play(@"C:\Users\DELL\dark_souls_theme.wav", AudioPlayMode.WaitToComplete);
    }
  }
}

Ausgang:

VisualBasic

Es empfiehlt sich, das Werkzeug Background oder BackgroundLoop zu verwenden, um die anderen Aufgaben fortzusetzen, während das Audio weiterhin im Hintergrund abgespielt wird.

Es ist optional; Sie können jedoch benutzerdefinierte Sounds mit nichts anderem als dem C#-Code erstellen, indem Sie die unkomprimierte WAV-Datei lernen und den Sound direkt im Speicher Ihres Systems erstellen.

In diesem Tutorial haben Sie gelernt, wie Sie eine Sounddatei in C# effektiv abspielen.

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub