一、基本概念
在C#中進行音頻播放,需要使用System.Media命名空間中的SoundPlayer類。SoundPlayer類提供了一種將音頻文件載入到內存中並播放它的簡便方法。
使用SoundPlayer類,我們可以實現wave格式音頻的播放,以及可以播放MP3格式的音頻,但需要一個額外的MP3解碼器。
二、環境搭建
在Visual Studio中,可以通過NuGet安裝NAudio庫來播放各種音頻,包括直接從網路流進行播放。通過NuGet進行安裝NAudio時,會將NAudio定義為項目的依賴。另外,NAudio也是開源的代碼庫,可以在GitHub上查找。
首先,需要在項目中引用NAudio命名空間,以使用NAudio中的各種類。其次,需要針對所要播放的音頻文件確定正確的輸出格式,以便編寫代碼。該格式可以通過調用AudioFileReader類來確定。
三、播放本地音頻文件
通過SoundPlayer類在C#中播放本地音頻文件只需以下幾行代碼:
using System.Media; namespace PlayLocalAudioFile { class Program { static void Main(string[] args) { SoundPlayer player = new SoundPlayer(@"C:\Users\Username\Desktop\sound.wav"); player.PlaySync(); } } }
上述代碼中將音頻文件路徑傳遞給了SoundPlayer類的構造函數中,然後使用PlaySync()方法啟動音頻播放。此方法是同步播放,即在音頻播放結束之前,不會返回過程式控制制權。如果要非同步播放,可以調用Play()方法,該方法會立即返回,音頻會在後台播放。
四、播放在線音頻文件
要播放在線音頻文件,需要首先將其下載到本地系統,然後再使用SoundPlayer類進行播放。要下載在線音頻文件,可以使用HttpClient類。
以下是下載在線音頻文件並使用SoundPlayer類播放的代碼:
using System.IO; using System.Net.Http; using System.Media; namespace PlayOnlineAudioFile { class Program { static void Main(string[] args) { using (HttpClient client = new HttpClient()) { using (HttpResponseMessage response = client.GetAsync("http://www.example.com/sound.wav").Result) { using (HttpContent content = response.Content) { Stream stream = content.ReadAsStreamAsync().Result; SoundPlayer player = new SoundPlayer(stream); player.PlaySync(); } } } } } }
上述代碼中,首先是使用HttpClient類下載音頻文件,並獲取文件內容。然後使用SoundPlayer類將文件內容作為參數進行音頻播放。
五、播放MP3音頻文件
在C#中,要播放MP3音頻文件需要用到Lame和NAudio庫來解碼和播放音頻文件,下面是一個使用NAudio和Lame來播放MP3音頻文件的示例代碼:
using NAudio.Wave; using NAudio.Lame; using System.IO; namespace PlayMp3AudioFile { class Program { static void Main(string[] args) { using (var mp3Reader = new Mp3FileReader(@"C:\Users\Username\Desktop\sound.mp3")) using (var waveStream = WaveFormatConversionStream.CreatePcmStream(mp3Reader)) using (var resampler = new MediaFoundationResampler(waveStream, new WaveFormat(44100, 2))) { WaveFileWriter.CreateWaveFile(@"C:\Users\Username\Desktop\temp.wav", resampler); using (var player = new SoundPlayer(@"C:\Users\Username\Desktop\temp.wav")) { player.PlaySync(); } } File.Delete(@"C:\Users\Username\Desktop\temp.wav"); } } }
上述代碼中使用Mp3FileReader類讀取MP3文件,並使用WaveFormatConversionStream類將MP3數據流轉換為PCM格式的音頻文件。然後使用MediaFoundationResampler類將PCM文件轉換為44.1kHz的音頻文件。最後使用SoundPlayer類播放該音頻。
六、小結
在C#中,使用SoundPlayer類可以簡便地實現音頻文件的播放。要播放MP3文件,可以使用Lame和NAudio庫進行解碼和播放。使用HttpClient類可以下載在線音頻文件,並播放這些文件。
原創文章,作者:YSQZN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/370107.html