我有 Stream,我想从该流创建 WinUI 3 的 MediaPlayerElement。 这是我的代码:
var mediaPlayer = new MediaPlayer() {
AutoPlay = x.AutoPlay,
Source = MediaSource.CreateFromStream(x.Stream.AsRandomAccessStream(), x.ContentType),
};
MediaPlayerElement.SetMediaPlayer(mediaPlayer);
但我有例外:
System.NotSupportedException
HResult=0x80004001
Message=This IRandomAccessStream does not support the CloneStream method because it requires cloning and this stream does not support cloning.
Source=Microsoft.Windows.SDK.NET
StackTrace:
at System.IO.NetFxToWinRtStreamAdapter.ThrowCloningNotSupported(String methodName)
我尝试复制到 MemoryStream 但出现此异常。 我能做什么?
根据文档:如何:在 .NET Framework 和 Windows 运行时流之间进行转换
.NET Framework 流不支持克隆,即使在转换后也是如此。 如果将 .NET Framework 流转换为 Windows 运行时流并且 调用 GetInputStreamAt 或 GetOutputStreamAt,后者调用 CloneStream,或者 如果直接调用CloneStream会出现异常。
您需要将 System.IO.Stream 转换为 Windows.Storage.Streams.IRandomAccessStream。您可以参考该主题:https://stackoverflow.com/a/48152204