一、基本概念
在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
微信掃一掃
支付寶掃一掃