如何在 WinUI 3 Net 8 中显示流中的 MediaPlayerElement

问题描述 投票:0回答:1

我有 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 但出现此异常。 我能做什么?

exception stream clone winui-3 mediaplayerelement
1个回答
0
投票

根据文档:如何:在 .NET Framework 和 Windows 运行时流之间进行转换

.NET Framework 流不支持克隆,即使在转换后也是如此。 如果将 .NET Framework 流转换为 Windows 运行时流并且 调用 GetInputStreamAt 或 GetOutputStreamAt,后者调用 CloneStream,或者 如果直接调用CloneStream会出现异常。

您需要将 System.IO.Stream 转换为 Windows.Storage.Streams.IRandomAccessStream。您可以参考该主题:https://stackoverflow.com/a/48152204

© www.soinside.com 2019 - 2024. All rights reserved.