Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中播放流式视频_C#_Wpf_Streaming - Fatal编程技术网

C# 在WPF中播放流式视频

C# 在WPF中播放流式视频,c#,wpf,streaming,C#,Wpf,Streaming,我已经编写了一个WCF服务来流媒体文件。我现在正在编写一个使用此服务的WPF应用程序,并且刚刚发现MediaElement不接受流对象作为源属性的输入参数 在过去的两天里,我一直在谷歌上搜索,并查看了几个备选方案,包括WPF内部的Silverlight视口、VLC ActiveX控件、VideoRenderElement和WPFMediaKit。不幸的是,我一直受到缺乏文档和/或示例的阻碍,到目前为止还没有取得任何进展。事实上,这是我第一次使用WPF也没有帮助 简单地说,我要找的是一些文档或示例

我已经编写了一个WCF服务来流媒体文件。我现在正在编写一个使用此服务的WPF应用程序,并且刚刚发现MediaElement不接受流对象作为源属性的输入参数

在过去的两天里,我一直在谷歌上搜索,并查看了几个备选方案,包括WPF内部的Silverlight视口、VLC ActiveX控件、VideoRenderElement和WPFMediaKit。不幸的是,我一直受到缺乏文档和/或示例的阻碍,到目前为止还没有取得任何进展。事实上,这是我第一次使用WPF也没有帮助

简单地说,我要找的是一些文档或示例,这些文档或示例演示了WPF中的流,如果可能的话,还可以直接实现。解决方案不一定是完美的;我所需要的只是一些有用的东西。

你可以在你的WPF应用程序中托管一个应用程序,并通过to提供的URL提供你从WCF服务收到的流

其他选项(尽管您似乎排除了这些选项):

不确定这是否是您的一个选项,但有用于多媒体的商业库,包括WPF中流的视频播放:


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

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

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


例如,这里描述了这种方法(刚刚映射到适当的IStream方法的文件调用:ReadFile->Read,SetFilePointer->Seek,CreateFile->Clone等):

WCF服务使用TCP绑定,并作为托管Windows服务在IIS之外运行。我可以使用TcpListener而不是HttpListener来获取传入流的URL吗?我假设您的WCF服务返回一个IStream-如果这个假设是真的,那么您只需使用WCF代理类来获取流,然后将该流提供给我提到的库和或“中继”它将通过HttpListener连接到应用程序中的http URL,并告诉MediaElement使用该http URL。。。不过,我强烈建议使用其中一个库……我以前从未使用过HttpListener类,所以我不太明白如何将流中继到HTTP URL。这就是你的意思吗?这是第一步,代码中有一些怪癖(问题)和低效。。但我再次强烈反对这种路由,因为使用HttpListener是一个权限/权限问题(它基本上是一个“嵌入式HTTP服务器”),这取决于用户拥有的权限/权限……在这种情况下,您是否绝对确定Visioforge的Media Player SDK将允许WPF应用程序播放WCF服务返回的IStream?