【问题标题】:Windows Phone 8.1 play audio data stream through speaker?Windows Phone 8.1 通过扬声器播放音频数据流?
【发布时间】:2014-10-27 20:59:10
【问题描述】:

我通过网络接收 PCM 音频数据流,这部分工作正常,所以我结束了

DataReader incomming = args.GetDataReader();
byte[] RcvBuffer = new byte[incomming.UnconsumedBufferLength];
incomming.ReadBytes(RcvBuffer);

我在缓冲区中有所有音频数据。

我如何通过电话扬声器播放这个?你能给我指出一些方向吗?

谢谢

【问题讨论】:

  • 查找 WP8/8.1 的 MediaElement
  • 感谢 Neil 的评论,我确实看过 MediaElement,它有我需要的大部分东西,我在所有这些中都有一个问题:如何将我的缓冲区与媒体元素连接。
  • 这是你自己想办法 - 那里有很多关于 MediaElement 工作原理的信息 :)

标签: audio windows-phone-8 stream windows-phone windows-phone-8.1


【解决方案1】:

有很多方法可以做到这一点。

您可以在数据前添加 WAVE 标头,并使用 MediaElement 进行播放,请参阅the documentation for SetSource method

如果你所说的“电话扬声器”是指耳机,那么只有当你是creating a VoIP app时才有可能。

【讨论】:

    【解决方案2】:

    花了一些时间,但我整理了一下,也许其他人将来需要帮助。

    • 第一个问题 - 因为我刚开始为 Windows Phone 开发应用程序,所以我选择了 Blank App (Windows Phone) 而不是 Blank App (Windows Phone Silverlight)而且我无法使用 Silverlight 项目中提供的许多功能,因此我对初学者的建议是:了解每个项目的用途。

    就像Soonts说的有很多方法可以做到这一点,这是我用过的一种。

    我简化了这段代码并重新输入了这个,所以可能会有一些拼写错误。

    using Microsoft.Xna.Framework.Audio;
    using System.IO;
    

    1) 创建 Stream 以加载您的传入数据:

    MemoryStream stream = new MemoryStream();
    

    2) 将数据从缓冲区加载到流中:

    stream.Write(RcvBuffer, 0, RcvBuffer.Length);
    

    3) 我正在使用 SoundEfect 通过 Loud-Speaker 播放。我使用的采样率为 8 kHz

    SoundEffect sound;
    sound = new SoundEffect(stream.toArray(), 8000, AudioChannels.Mono)
    sound.Play();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      相关资源
      最近更新 更多