如何在 UWP 应用程序上播放原始 pcm 音频字节?

How to play raw pcm audio bytes on UWP apps?

我有一个通用 Windows 平台 (UWP) 应用程序,我想在其中播放我在旧 Window phone 8.1 应用程序上录制的音频字节。

音频是原始 PCM 音频(单声道、16 位、16kHz)的字节数组。

在我的旧 Windows phone 8.1 应用程序上,我只能为此使用 3 行代码。

SoundEffect sound = new SoundEffect(audioBytes, sampleRate, AudioChannels.Mono);
SoundEffectInstance soundInstance = sound.CreateInstance();
soundInstance.Play();

不幸的是 'SoundEffect' 在 UWP 中消失了。

有没有在 C# UWP 应用中执行此操作的简单方法?

出于测试目的,audio sample(单声道、16 位、16000Hz、小端)

PS:我查看了 Wasapi,但它都是用 c++ 编写的,找不到通常在 c#

中工作的人的简单示例

在您的页面上添加 MediaElement

<MediaElement x:Name="mediaElement"/>

并手动设置源

using System.IO;
using System.Runtime.InteropServices.WindowsRuntime;


var stream = audioBytes.AsBuffer().AsStream().AsRandomAccessStream();
mediaElement.SetSource(stream, "audio/x-wav");
mediaElement.Play();

除了媒体元素之外,您还可以尝试使用 AudioGraph 和 FrameInputNode,这里是示例:https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/AudioCreation/cs/AudioCreation/Scenario3_FrameInputNode.xaml.cs 但要小心,AudioGraph 仍然有问题,可能会泄漏。