问题描述
我正在开发一个wpf应用程序,该应用程序应该具有视频通话功能.因此,我打算让Skype为我提供解决方案.
I am working on a wpf application which is suppose to have video calling feature. So I am going for Skype to provide me with the solution.
我正在使用Skype4COM库执行此操作.我的应用程序中有来自Skype的所有朋友,我可以打电话给我的朋友,甚至可以进行视频通话,但是我无法控制流.视频正在Skype窗口中显示,我想像在应用程序中一样将其显示在应用程序中.
I am using Skype4COM library to do it. I got all the friends from Skype in my application, I can make call to my friends and even can do video call, but I cant control streaming. Video is being shown in Skype window, I want to show it inside my application like a part of my application.
我什至不知道我应该使用哪个控件来处理视频流.
I don't even know which control should I use to handle the video streaming.
在WPF应用程序中还有另一种更好的方法或免费的方法来添加视频通话.我已经准备好更改自己的偏好了.
If there is another better way or free way to add video calling in a WPF application. I am ready to change my preferences.
我以前曾计划使用Web浏览器控件并使用WebRTC,但那不支持IE,并且认为Mozilla和Chrome没有Web浏览器控件.
I had previous plans to use Web browser control and go for WebRTC but that does not support IE and believe there is no web browser control from Mozilla and Chrome.
推荐答案
视频会议的实施并非易事.您必须首先查看诸如SIP或XMPP之类的信令协议,该协议将提供基础结构来维护朋友"列表以及他们是在线还是离线.信令基础结构还可以让您发出呼叫并在接到呼叫时提醒您.然后是在两个端点之间实际流动视频/音频的问题.您无法插入应用程序.
Videoconferencing is not trivial to implement. You have to first look at a signalling protocol like SIP or XMPP which would provide infrastructure to maintain a list of 'friends' and whether they are online or offline. The signalling infrastructure would also let you place a call and alert you when you receive a call. And then there is the question of actually flowing video/audio between two endpoints. There is no single solution that you can plug into your app.
您可以查看Google的 Libjingle 或 ConferenceXP 作为起点.
You can look at Google's Libjingle or ConferenceXP for a starting point.
要建立视频会议,您需要以下信息:
To establish a video conference you would need the following information:
-
您可以打给谁?这是您的朋友列表.您需要一种机制将朋友添加到列表中,并确保您只能添加愿意与您交流的朋友
Whom can you call? This is your friends list. You would need a mechanism to add friends to your list and ensure that you can only add friends that are willing to communicate with you
您如何与朋友建立沟通渠道?例如,他们的IP地址是什么,他们是否可以支持特定的视频编解码器,等等.
How do you establish a communication channel with your friends? For example what is their IP Address, can they support a particular video codec and so on.
一旦您建立了与朋友交流的方式,便存在接收音频和视频信息并以正确的时间显示它的问题.
Once you have established a way to communicate with your friend, then there is the question of receiving audio and video information and displaying it with correct timing.
对于点 1 和 2 您将需要所谓的信令和状态协议. SIP和XMPP是两个非常流行的开放协议.
For points 1 and 2 you would need what is called a signalling and presence protocol. SIP and XMPP are two very popular open protocol.
对于点[3],您将研究类似RTP的协议.
For point [3] you would look at a protocol like RTP.
您可以Google SIP,XMPP和RTP.您会收到各种各样的文献.查看RFC文档以获取确切的信息,它们可能有些奥秘.
You can google SIP, XMPP and RTP. You would receive a wide variety of literature. Look at the RFC documents for exact information they they can be a bit arcane.
Libjingle是一个用C ++编写的库,实现了XMPP和RTPConferenceXP是C#中的RTP实现,带有一些基本的信号,但是我认为您可以从示例开始,而无需深入细节.
Libjingle is a library written in C++ implements XMPP and RTPConferenceXP is a RTP implementation in C# with some basic signalling but I think you can get a start with the examples without really getting into details.
这篇关于桌面应用程序.net中的视频通话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!