为了账号安全,请及时绑定邮箱和手机立即绑定

使用C#播放流中的音频

使用C#播放流中的音频

神不在的星期二 2019-07-29 16:38:30
使用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 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

低音可以做到这一点。从内存中的Byte []或在您返回数据的直通文件委托中播放,因此您可以在有足够数据开始播放时立即播放。


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 2742 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信