在WPF中播放流媒体视频
本文关键字:流媒体 视频 播放 WPF | 更新日期: 2023-09-27 18:06:27
我编写了一个流式媒体文件的WCF服务。我现在正在编写一个使用此服务的WPF应用程序,并且刚刚发现MediaElement不接受流对象作为源属性的输入参数。
在过去的两天里,我一直在谷歌上无休止地搜索,并研究了几种替代方案,包括WPF内部的Silverlight Viewports, VLC ActiveX控件,VideoRendererElement和WPFMediaKit。不幸的是,我一直受到缺乏文档和/或示例的阻碍,到目前为止还没有真正取得任何进展。事实上,这是我第一次使用WPF也没有帮助。
简单地说,我正在寻找的是文档或示例来演示WPF中的流,如果可能的话,也可以直接实现。解决方案不必是完美的;
您可以在WPF应用程序中托管HttpListener
,并通过HttpListener
提供的URL向MediaElement.Source
提供从WCF服务接收的流。
其他选项(尽管你似乎已经排除了它们):
- http://directshownet.sourceforge.net/
- http://wpfmediakit.codeplex.com/
不确定这是否适合您,但是有商业多媒体库,包括WPF中的流视频播放:
- http://www.leadtools.com/sdk/multimedia-suite.htm——
- http://www.visioforge.com/video-capture-sdk-net2.html或http://www.visioforge.com/media-player-sdk-net.html
有一种方法可以使用伪文件来实现这一点,即模拟文件系统调用。
当路径通过时,媒体播放器首先打开文件(CreateFile被调用),然后从中读取数据(ReadFile被调用),在文件中移动位置(SetFilePointer被调用)。
它只是在视频文件中移动并读取所需的块。
例如这里描述了这种方法(文件调用只是映射到适当的IStream方法:ReadFile -> Read, SetFilePointer -> Seek, CreateFile -> Clone等):http://boxedapp.com/encrypted_video_streaming.html