0

对于我的 wpf 应用程序,我需要播放保存在 MemoryStream 中的视频文件。是否可以通过使用 WPF-mediakit 来实现这一点?

由于 MediaElement 不支持直接从内存播放视频,我一直在使用 vlc.dotnet 库来实现这一点。但是,我正在寻找替代方案。我发现一些帖子说 WPF-Mediakit 可以播放 MemoryStream 中的视频,但我无法在源代码或文档中找到所描述的功能。

如果有人能指出我在 WPF-Mediakit 中播放保存在内存中的视频的正确方向,那就太好了。

4

1 回答 1

0

不,WPF-MediaKit无法播放内存流中的视频。只需将其保存到临时文件(例如 use System.IO.Path.GetTempFileName())并从文件中播放视频。

WPF-MediaKit 使用DirectShowLib,它只是MS Windows DirectShow接口的包装器。那是非托管代码。所以:

  1. 您不能将 C# MemoryStream(即托管内存)用于非托管代码。您必须使用非托管内存。
  2. DirectShow 基于过滤器。AFAIK 它没有输入过滤器,可以从内存中播放。但是您可以编写一个代码,例如参见https://stackoverflow.com/a/24478030/254109

注意:您还可以使用一些基于 FFmpeg 的解决方案,请参阅https://github.com/Sascha-L/WPF-MediaKit/wiki/Similar-Projects例如FFME

于 2019-09-24T06:49:59.733 回答