使用C#播放流中的音頻C#中是否有一種方法可以直接從System.IO.Stream播放音頻(例如MP3),例如從WebRequest返回而不將數據臨時保存到磁盤?與NAudio的解決方案在NAudio 1.3 的幫助下,可以:將URL中的MP3文件加載到MemoryStream中完全加載后,將MP3數據轉換為波形數據使用NAudio的WaveOut類播放波形數據如果能夠播放半載MP3文件本來不錯,但由于NAudio庫設計,這似乎是不可能的。這是完成工作的功能: public static void PlayMp3FromUrl(string url)
{
using (Stream ms = new MemoryStream())
{
using (Stream stream = WebRequest.Create(url)
.GetResponse().GetResponseStream())
{
byte[] buffer = new byte[32768];
int read;
while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
}
ms.Position = 0;
using (WaveStream blockAlignedStream =
new BlockAlignReductionStream(
WaveFormatConversionStream.CreatePcmStream(
new Mp3FileReader(ms))))
{
using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
{
waveOut.Init(blockAlignedStream);
waveOut.Play();
while (waveOut.PlaybackState == PlaybackState.Playing )
{
System.Threading.Thread.Sleep(100);
}
}
}
}
}
- 3 回答
- 0 關注
- 2813 瀏覽
添加回答
舉報
0/150
提交
取消