一、基本概念
在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/n/370107.html
微信扫一扫
支付宝扫一扫