开发一个视频聊天应用,高质量视频流。

时间:2021-03-27 16:28:05

I am working for a company where we are developing video chat support on an existing application. I have looked at various solutions for this like

我在一家公司工作,我们正在开发一个现有应用程序的视频聊天支持。我已经研究了各种解决方案。

  1. Using Managed Direct show for video capture and streaming in C#
  2. 使用管理的直接显示视频捕获和流在c#。
  3. Some code samples in code project where we take an image and pass it over the network (I would call it rather a crude solution as this would eat up lot of bandwidth.
  4. 一些代码示例在代码项目中,我们在那里获取图像并通过网络传递(我称之为粗略的解决方案,因为这将消耗大量带宽)。
  5. Code a compression algorithm from scratch from scratch and use it to compress-decompress video.
  6. 从头开始编写压缩算法,并使用它来压缩-解压视频。

Now the challenge is that we are looking to achieve very high quality video streaming and the container application is coded in C#.NET

现在的挑战是,我们希望实现非常高质量的视频流,而容器应用程序是用c#。net编码的。

This is what I have proposed so far. The network logic to stream data is written in C# , the video compression to be written in VC++ and call this VC++ dll using pinvoke or either CLI which way possible.

这是我迄今为止所提出的建议。流数据的网络逻辑是用c#编写的,视频压缩是用vc++编写的,用pinvoke或CLI的方式调用这个vc++ dll。

I am looking for some one more experienced that me in this field who can suggest me if Iam going correct or can this be still improved.

我正在寻找一个更有经验的人,在这个领域里,如果我是正确的或者是可以改进的,我可以建议我。

The ultimate goal is high quality video streaming. The codec can be any anything like h.2633, h.264 etc.

终极目标是高质量的视频流。codec可以是任何类似于h的东西。2633年,h。264等。

4 个解决方案

#1


22  

I've used several ways to get video streaming/conferencing with .net easily, without need to dig into directshow. (ok, dig some, but not deep :)

我用了好几种方法来轻松地使用.net进行视频流/会议,而不需要深入到directshow。(好的,挖一些,但不深:)

1) Use of plain Windows Media Encoder components. It is documented with samples in Windows Media Encoder SDK. Good for any high resolution streaming, but delay is too big for realtime chat (0.5-2 seconds at best). Modern Express Encoder SDK another option.

1)使用普通Windows媒体编码器组件。它在Windows Media Encoder SDK中有文档记录。对任何高分辨率的流媒体都有好处,但是延迟对实时聊天来说太大了(最好是0.5-2秒)。现代快递编码器SDK另一个选择。

2) Microsoft Research ConferenceXP http://cct.cs.washington.edu/ Full featured conferencing API including application streaming. They too low level Windows Media coded filters and wrapped them into managed code. Works well. Easily customizable. Looks bit abandoned now.

2)微软研究会议http://cct.cs.washington.edu/全功能会议API,包括应用程序流。它们太低级的Windows媒体编码过滤器,并将它们封装到托管代码中。工作得很好。可轻松定制。现在看起来有点放弃了。

3) Microsoft RTC Client up to version 1.3 - core of windows messenger.

3)微软RTC客户端到windows messenger的1.3版核心。

pros: managed samples from Microsoft, good docs, reliable performance, freely redistributable, microsoft compatible (good) SIP stack included. Major conferencing vendors like Emblaze VCON based their solutions on it in some near past, not sure about this days, but I know that Tandberg licensed Microsft's VC-1.

优点:来自微软的管理样本,优秀的文档,可靠的性能,可*的再分配,微软兼容(好的)SIP协议栈。像Emblaze VCON这样的主要会议供应商在过去的一些日子里,他们的解决方案都是基于他们的解决方案,但是我知道,Tandberg许可了Microsft的VC-1。

cons: version up to 1.3 support h261-h263 video only. modern version with support of VC-1(h264) codec does not allow direct serverless ip-ip connections. It does at require Microsoft Live Communications server. Newer version SDK does not cover well video conferencing calls.

缺点:版本最多只能支持h261-h263视频。支持VC-1(h264)编解码器的现代版本不允许直接的无服务器ip-ip连接。它需要微软的实时通信服务器。新版本的SDK不包括视频会议调用。

http://msdn.microsoft.com/en-us/library/ms775892(VS.85).aspx

http://msdn.microsoft.com/en-us/library/ms775892(VS.85). aspx

Please let us know what platform you have chosen. By the way, I've even used ConferenceXP video rtp part with RTC 1.3 voice/SIP features together to improve video quality, so you have wide choice of managed technologies here. Another thing is Live Meeting at which I had no chance to take good look yet.

请让我们知道你选择了什么平台。顺便说一下,我甚至使用了RTC 1.3 voice/SIP特性的会议视频rtp部分来提高视频质量,所以在这里您可以选择多种管理技术。另一件事是现场会议,我没有机会好好看看。

#2


10  

Save yourself the trouble and use VLC. There are some decent .NET wrappers for it (http://forum.videolan.org/viewtopic.php?f=32&t=52021&start=30)

省去麻烦,使用VLC。有一些不错的。net包装器(http://forum.videolan.org/viewtopic.php?

We are using C# and VLC for an IPTV network. We take input off DISH network satellites via Osprey-450 video capture devices on a Windows XP server. From there, we have a .NET server component that we wrote in C# that uses VLC behind the scenes (starting separate processes in .NET to control the vlc.exe instances). The VLC processes transcode and stream the signals over a network (.h264 or MPEG-4, we've successfully done both).

我们正在使用c#和VLC的IPTV网络。我们通过在Windows XP服务器上的Osprey-450视频捕获设备,接收来自DISH网络卫星的输入。从那里,我们有一个。net服务器组件,我们在c#中编写,使用VLC在幕后(在。net中启动单独的进程来控制VLC)。exe实例)。VLC处理代码并通过网络传输信号(。h264或MPEG-4,我们已经成功地做到了两者。

On the client side we have a C# WinForm application that uses an embedded VLC Viewer to view multicast signals. This application is mainly for command & control. The real use of the multicast signals happens when our set top boxes attached to our TV's decode and display the streams.

在客户端,我们有一个c# WinForm应用程序,它使用一个嵌入式VLC查看器来查看多播信号。此应用程序主要用于命令和控制。多播信号的真正使用发生在我们的电视解码和显示流的机顶盒上。

We thought we were going to have to write our own DirectX encoders too, but don't go to all the trouble. VLC works really well and has enough C# support to be very useful. Feel free to e-mail me if you have specific questions about implementation.

我们原以为我们也要写我们自己的DirectX编码器,但不要麻烦了。VLC非常好用,并且有足够的c#支持来非常有用。如果您有关于实现的具体问题,请随时给我发电子邮件。

#3


2  

You should check out the Ucentrik SDK. This SDK will enable you to integrate rich-media functionality such as video, audio, chat, remote-desktop sharing and control and video recording in your applications. The video codecs supported are VP8 (Google), Theora, and x.264. Additionally, the rich media traffic is encapsulated within an HTTP protocol to enable it to traverse firewalls that enable normal web traffic. This technology is completely free and you can download the SDK and request an API key so that you can evaluate without investing any time on setting up the infrastructure. In the next few months, we are releasing a server component so that you can download and host the infrastructure your self or your customer. The technology supports 1-to-many connections which means that you can create video conferences if you like. The features are highly modular so that you can integrate just the video or audio or desktop share or a combination of the technologies using the same SDK... You should request for an SDK available here: www.ucentrik.com. Additionally, there are some video's here: http://www.youtube.com/user/ucentrik

您应该查看一下Ucentrik SDK。该SDK将使您能够集成富媒体功能,如视频、音频、聊天、远程桌面共享和控制和视频记录在您的应用程序中。支持的视频编解码器是VP8(谷歌)、Theora和x.264。此外,丰富的媒体流量封装在一个HTTP协议中,以使它能够遍历防火墙,从而使正常的web流量得以实现。这种技术是完全免费的,您可以下载SDK并请求一个API密钥,这样您就可以在不投资任何时间设置基础设施的情况下进行评估。在接下来的几个月里,我们将发布一个服务器组件,这样您就可以下载并托管您自己或您的客户的基础设施。该技术支持1到多个连接,这意味着如果您愿意,您可以创建视频会议。这些特性是高度模块化的,因此您可以只集成视频或音频或桌面共享或使用相同SDK的技术组合……你应该请求这里的SDK: www.ucentrik.com。另外,这里还有一些视频:http://www.youtube.com/user/ucentrik。

good luck.

祝你好运。

#4


0  

Ucentrik has just released an open-source call-center application that integrates the CTX technology. This call-center application implements the video, audio, desktop/application sharing (with control), text chat functionality available from the CTX API. The application also includes some business logic specifically around providing the ability to route the calls to an agent that is available or have specific skill-set. The project is available at http://vcca.codeplex.com - please note that you will require access to the Ucentrik CTX SDK which is available for request on the Ucentrik website (www.ucentrik.com). Good luck.

Ucentrik刚刚发布了一个集成了CTX技术的开源呼叫中心应用程序。这个呼叫中心应用程序实现了视频、音频、桌面/应用程序共享(带有控件),以及来自CTX API的文本聊天功能。应用程序还包括一些业务逻辑,具体来说是提供将调用路由到可用的代理或具有特定的技能集的能力。该项目可在http://vcca.codeplex.com上找到,请注意,您将需要访问Ucentrik CTX SDK,该SDK可在Ucentrik网站(www.ucentrik.com)上请求。祝你好运。

#1


22  

I've used several ways to get video streaming/conferencing with .net easily, without need to dig into directshow. (ok, dig some, but not deep :)

我用了好几种方法来轻松地使用.net进行视频流/会议,而不需要深入到directshow。(好的,挖一些,但不深:)

1) Use of plain Windows Media Encoder components. It is documented with samples in Windows Media Encoder SDK. Good for any high resolution streaming, but delay is too big for realtime chat (0.5-2 seconds at best). Modern Express Encoder SDK another option.

1)使用普通Windows媒体编码器组件。它在Windows Media Encoder SDK中有文档记录。对任何高分辨率的流媒体都有好处,但是延迟对实时聊天来说太大了(最好是0.5-2秒)。现代快递编码器SDK另一个选择。

2) Microsoft Research ConferenceXP http://cct.cs.washington.edu/ Full featured conferencing API including application streaming. They too low level Windows Media coded filters and wrapped them into managed code. Works well. Easily customizable. Looks bit abandoned now.

2)微软研究会议http://cct.cs.washington.edu/全功能会议API,包括应用程序流。它们太低级的Windows媒体编码过滤器,并将它们封装到托管代码中。工作得很好。可轻松定制。现在看起来有点放弃了。

3) Microsoft RTC Client up to version 1.3 - core of windows messenger.

3)微软RTC客户端到windows messenger的1.3版核心。

pros: managed samples from Microsoft, good docs, reliable performance, freely redistributable, microsoft compatible (good) SIP stack included. Major conferencing vendors like Emblaze VCON based their solutions on it in some near past, not sure about this days, but I know that Tandberg licensed Microsft's VC-1.

优点:来自微软的管理样本,优秀的文档,可靠的性能,可*的再分配,微软兼容(好的)SIP协议栈。像Emblaze VCON这样的主要会议供应商在过去的一些日子里,他们的解决方案都是基于他们的解决方案,但是我知道,Tandberg许可了Microsft的VC-1。

cons: version up to 1.3 support h261-h263 video only. modern version with support of VC-1(h264) codec does not allow direct serverless ip-ip connections. It does at require Microsoft Live Communications server. Newer version SDK does not cover well video conferencing calls.

缺点:版本最多只能支持h261-h263视频。支持VC-1(h264)编解码器的现代版本不允许直接的无服务器ip-ip连接。它需要微软的实时通信服务器。新版本的SDK不包括视频会议调用。

http://msdn.microsoft.com/en-us/library/ms775892(VS.85).aspx

http://msdn.microsoft.com/en-us/library/ms775892(VS.85). aspx

Please let us know what platform you have chosen. By the way, I've even used ConferenceXP video rtp part with RTC 1.3 voice/SIP features together to improve video quality, so you have wide choice of managed technologies here. Another thing is Live Meeting at which I had no chance to take good look yet.

请让我们知道你选择了什么平台。顺便说一下,我甚至使用了RTC 1.3 voice/SIP特性的会议视频rtp部分来提高视频质量,所以在这里您可以选择多种管理技术。另一件事是现场会议,我没有机会好好看看。

#2


10  

Save yourself the trouble and use VLC. There are some decent .NET wrappers for it (http://forum.videolan.org/viewtopic.php?f=32&t=52021&start=30)

省去麻烦,使用VLC。有一些不错的。net包装器(http://forum.videolan.org/viewtopic.php?

We are using C# and VLC for an IPTV network. We take input off DISH network satellites via Osprey-450 video capture devices on a Windows XP server. From there, we have a .NET server component that we wrote in C# that uses VLC behind the scenes (starting separate processes in .NET to control the vlc.exe instances). The VLC processes transcode and stream the signals over a network (.h264 or MPEG-4, we've successfully done both).

我们正在使用c#和VLC的IPTV网络。我们通过在Windows XP服务器上的Osprey-450视频捕获设备,接收来自DISH网络卫星的输入。从那里,我们有一个。net服务器组件,我们在c#中编写,使用VLC在幕后(在。net中启动单独的进程来控制VLC)。exe实例)。VLC处理代码并通过网络传输信号(。h264或MPEG-4,我们已经成功地做到了两者。

On the client side we have a C# WinForm application that uses an embedded VLC Viewer to view multicast signals. This application is mainly for command & control. The real use of the multicast signals happens when our set top boxes attached to our TV's decode and display the streams.

在客户端,我们有一个c# WinForm应用程序,它使用一个嵌入式VLC查看器来查看多播信号。此应用程序主要用于命令和控制。多播信号的真正使用发生在我们的电视解码和显示流的机顶盒上。

We thought we were going to have to write our own DirectX encoders too, but don't go to all the trouble. VLC works really well and has enough C# support to be very useful. Feel free to e-mail me if you have specific questions about implementation.

我们原以为我们也要写我们自己的DirectX编码器,但不要麻烦了。VLC非常好用,并且有足够的c#支持来非常有用。如果您有关于实现的具体问题,请随时给我发电子邮件。

#3


2  

You should check out the Ucentrik SDK. This SDK will enable you to integrate rich-media functionality such as video, audio, chat, remote-desktop sharing and control and video recording in your applications. The video codecs supported are VP8 (Google), Theora, and x.264. Additionally, the rich media traffic is encapsulated within an HTTP protocol to enable it to traverse firewalls that enable normal web traffic. This technology is completely free and you can download the SDK and request an API key so that you can evaluate without investing any time on setting up the infrastructure. In the next few months, we are releasing a server component so that you can download and host the infrastructure your self or your customer. The technology supports 1-to-many connections which means that you can create video conferences if you like. The features are highly modular so that you can integrate just the video or audio or desktop share or a combination of the technologies using the same SDK... You should request for an SDK available here: www.ucentrik.com. Additionally, there are some video's here: http://www.youtube.com/user/ucentrik

您应该查看一下Ucentrik SDK。该SDK将使您能够集成富媒体功能,如视频、音频、聊天、远程桌面共享和控制和视频记录在您的应用程序中。支持的视频编解码器是VP8(谷歌)、Theora和x.264。此外,丰富的媒体流量封装在一个HTTP协议中,以使它能够遍历防火墙,从而使正常的web流量得以实现。这种技术是完全免费的,您可以下载SDK并请求一个API密钥,这样您就可以在不投资任何时间设置基础设施的情况下进行评估。在接下来的几个月里,我们将发布一个服务器组件,这样您就可以下载并托管您自己或您的客户的基础设施。该技术支持1到多个连接,这意味着如果您愿意,您可以创建视频会议。这些特性是高度模块化的,因此您可以只集成视频或音频或桌面共享或使用相同SDK的技术组合……你应该请求这里的SDK: www.ucentrik.com。另外,这里还有一些视频:http://www.youtube.com/user/ucentrik。

good luck.

祝你好运。

#4


0  

Ucentrik has just released an open-source call-center application that integrates the CTX technology. This call-center application implements the video, audio, desktop/application sharing (with control), text chat functionality available from the CTX API. The application also includes some business logic specifically around providing the ability to route the calls to an agent that is available or have specific skill-set. The project is available at http://vcca.codeplex.com - please note that you will require access to the Ucentrik CTX SDK which is available for request on the Ucentrik website (www.ucentrik.com). Good luck.

Ucentrik刚刚发布了一个集成了CTX技术的开源呼叫中心应用程序。这个呼叫中心应用程序实现了视频、音频、桌面/应用程序共享(带有控件),以及来自CTX API的文本聊天功能。应用程序还包括一些业务逻辑,具体来说是提供将调用路由到可用的代理或具有特定的技能集的能力。该项目可在http://vcca.codeplex.com上找到,请注意,您将需要访问Ucentrik CTX SDK,该SDK可在Ucentrik网站(www.ucentrik.com)上请求。祝你好运。