由于应用程序的限制,我无法在UWP应用程序中使用IStorageFile,因此audioGraph.CreateFileInputNodeAsync()不是一个选择。
我只能使用声音文件的内容获取(I / O)Stream

有没有一种方法可以配置AudioGraph以将此类流用作输入?

谢谢!

最佳答案



根据Audio graphs类,存在三种输入节点:“设备输入节点”,“文件输入节点”和“音频帧输入节点”。不幸的是,没有想要的流输入节点。您需要将流转换为 StroageFile ,然后使用CreateFileInputNodeAsync()方法。



如果只想播放流而不使用StorageFile类,则可以考虑使用 MediaPlayer 。通过MediaSource方法从IRandomAccessStream创建 CreateFromStream 。例如:

XAML代码:

<MediaPlayerElement x:Name="mediaplayer" AutoPlay="True"></MediaPlayerElement>
<Button x:Name="btnmedia" Click="btnmedia_Click" Content="media play"></Button>

后面的代码:
private async void btnmedia_Click(object sender, RoutedEventArgs e)
{
    ...
    Stream filestream = buffers.AsStream();
    IRandomAccessStream randomAccessStream = filestream.AsRandomAccessStream();
    MediaSource mediasource = MediaSource.CreateFromStream(randomAccessStream, "mp3");
    MediaPlayer player = new MediaPlayer();
    player.Source = mediasource;
    mediaplayer.SetMediaPlayer(player);
}

此外,奇怪的是,您无法在UWP应用中使用StorageFile类。它是文件系统的重要类。我认为您应该考虑解决此限制(如果可能)。

10-08 18:31