由于应用程序的限制,我无法在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
类。它是文件系统的重要类。我认为您应该考虑解决此限制(如果可能)。