由于应用程序限制,我无法在我的UWP应用程序中使用IStorageFile
,因此,audioGraph.CreateFileInputNodeAsync()
不是一个选项。
我只能获得声音文件内容的(I / O)Stream
。
有没有办法配置AudioGraph
以将此类流用作输入?
谢谢!
答案 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,事情就会变得更复杂,但它仍然可行。