AudioGraph可以播放流吗?

时间:2017-10-03 10:14:50

标签: c# .net audio uwp

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

有没有办法配置AudioGraph以将此类流用作输入?

谢谢!

2 个答案:

答案 0 :(得分:0)

  

有没有办法配置AudioGraph以将此类流用作输入?

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

  

AudioGraph可以播放流吗?

如果您只想在不使用StorageFile课程的情况下播放视频流,则可以考虑使用MediaPlayer。通过IRandomAccessStream方法从CreateFromStream创建MediaSource。例如:

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课程。它是文件系统的重要类。我认为如果可能的话,你应该考虑解决这个问题。

答案 1 :(得分:0)

您可以创建一个AudioFrameOutputNode并将其提供给流的整个二进制内容,假设您可以将整个流读入内存中的二进制缓冲区。

如果你必须协调来自流的并发读取并将数据提供给AudioFrameOutputNode,事情就会变得更复杂,但它仍然可行。