You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:如何播放包含MPEG文件的流中的音频?

实时播放MPEG音频流的解决方案

针对你需要实时播放接收的MPEG音频流的需求,SoundPlayer确实仅支持WAV格式,无法直接处理MPEG(如MP3)流,这里提供几种可行的实现思路:

  • 使用NAudio库:这是.NET生态中处理音频的常用工具,支持直接解码并播放MPEG音频流。如果接收的是可定位流,可通过Mp3FileReader读取,再用WaveOut或WasapiOut播放:

    // 假设receivedStream为你接收的MPEG音频流
    var mp3Reader = new Mp3FileReader(receivedStream);
    var waveOut = new WaveOut();
    waveOut.Init(mp3Reader);
    waveOut.Play();
    

    若接收的是实时推送的不可定位流,需用BufferedWaveProvider做缓存处理,平衡延迟与卡顿:

    var bufferedProvider = new BufferedWaveProvider(WaveFormat.CreateIeeeFloatWaveFormat(44100, 2));
    bufferedProvider.BufferDuration = TimeSpan.FromSeconds(3); // 可根据网络情况调整缓存时长
    var waveOut = new WaveOut();
    waveOut.Init(bufferedProvider);
    waveOut.Play();
    
    // 接收流数据时写入缓存
    byte[] buffer = new byte[4096];
    int bytesRead;
    while ((bytesRead = receivedStream.Read(buffer, 0, buffer.Length)) > 0)
    {
        bufferedProvider.AddSamples(buffer, 0, bytesRead);
    }
    
  • 嵌入Windows Media Player控件:如果是WinForms或WPF应用,可直接嵌入Windows Media Player控件,它原生支持MPEG格式流播放,只需将控件的播放源指向接收的流对象或流地址即可实现实时播放。

  • 借助FFmpeg解码:利用FFmpeg的强大解码能力,将MPEG流转换为PCM格式后,再通过基础音频播放API输出。这种方式支持几乎所有音频格式,但需要集成FFmpeg的绑定库(如FFmpeg.AutoGen)。

内容的提问来源于stack exchange,提问作者lingeringame

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:22:22