在WPF中播放流媒体视频

13

我编写了一个流式媒体文件的WCF服务。现在我正在编写一个消费该服务的WPF应用程序,并且刚刚发现MediaElement不接受Stream对象作为source属性的输入参数。

过去两天我一直在Google搜索,看了几个替代方案,包括WPF内的Silverlight Viewports、VLC ActiveX控件、VideoRendererElement和WPFMediaKit等。不幸的是,由于缺乏文档和/或示例,我还没有取得任何进展。这也是我第一次使用WPF,更加阻碍了我的进展。

简单来说,我需要的是一些带有文档或示例的东西,演示在WPF中进行流式传输,并且如果可能的话,实现起来也要简单明了。这个解决方案不必完美;我只需要能够工作的东西。

2个回答

5
你可以在WPF应用程序中托管一个HttpListener,并通过由HttpListener提供的URL将从WCF服务接收到的流提供给MediaElement.Source。其他选项(尽管您似乎已经排除了它们):

不确定这是否适用于您,但有一些商业库可用于多媒体,包括在WPF中从流中播放视频:


WCF服务使用TCP绑定,并作为托管Windows服务在IIS之外运行。我是否可以使用TcpListener代替HttpListener来获取传入流的URL? - rafale
我假设你的WCF服务返回一个IStream流 - 如果这个假设是正确的,那么你只需要使用WCF代理类来获取该流,并将该流提供给我提到的库中的任意一个或者"中继"它到你应用程序内的http URL,然后告诉MediaElement使用该http URL... 我强烈建议使用其中一个库... - Yahia
在这种情况下,你确定Visioforge的Media Player SDK能够让WPF应用程序播放WCF服务返回的IStream吗? - rafale
由于我不知道您的WCF服务以及它提供哪种视频格式等信息,所以我不能百分之百确定...只需下载他们的SDK并尝试,据我所知,它可以在试用模式下无需注册使用(您可以向他们发送电子邮件获取试用版本/密钥)。 - Yahia
嗯..我需要关于这个的C#代码: "在你的WPF中托管一个HttpListener"。 - NoWar
显示剩余5条评论

0

有一种方法可以使用伪文件实现,即模拟文件系统调用。

当传递路径时,媒体播放器首先打开文件(调用CreateFile),然后从中读取数据(调用ReadFile),在文件内移动位置(调用SetFilePointer)。

它只是在视频文件中移动并读取所需的块。

例如,在这里描述了这种方法(文件调用仅映射到相应的IStream方法:ReadFile-> Read,SetFilePointer-> Seek,CreateFile-> Clone等):http://boxedapp.com/encrypted_video_streaming.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接