我正在为一家公司工作,我们正在为现有应用程序开发视频聊天支持.我已经看过各种各样的解决方案了
使用Managed Direct节目在C#中进行视频捕获和流式传输
在代码项目中的一些代码示例我们拍摄图像并通过网络传递(我称之为粗略的解决方案,因为这会占用大量带宽.
从头开始编写压缩算法,并使用它来压缩 - 解压缩视频.
现在的挑战是我们希望实现非常高质量的视频流,并且容器应用程序使用C#.NET编码
这是我到目前为止提出的.流数据的网络逻辑用C#编写,视频压缩用VC++编写,并尽可能使用pinvoke或CLI调用VC++ dll.
我正在寻找一个在这个领域更有经验的人,如果我正确的话还是可以改进,我可以建议我.
最终目标是高质量的视频流.编解码器可以是h.2633,h.264等任何东西.
我已经使用了几种方法轻松地使用.net进行视频流/会议,而无需深入了解directshow.(好吧,挖一些,但不深:)
1)使用普通的Windows Media Encoder组件.它与Windows Media Encoder SDK中的示例一起记录.适用于任何高分辨率流媒体,但延迟对于实时聊天来说太大了(最多0.5-2秒).Modern Express Encoder SDK的另一种选择.
2)Microsoft Research ConferenceXP http://cct.cs.washington.edu/全功能会议API,包括应用程序流.它们太低级别的Windows Media编码过滤器并将它们包装到托管代码中.效果很好.轻松定制.看起来有点放弃了.
3)最高版本为1.3的Microsoft RTC客户端 - Windows信使的核心.
专业人士:来自Microsoft的托管样本,良好的文档,可靠的性能,可自由再分发,包含的微软兼容(良好)SIP堆栈.像Emblaze VCON这样的主要会议供应商在近期有一些基于它的解决方案,目前还不确定,但我知道Tandberg授权Microsft的VC-1.
缺点:版本高达1.3仅支持h261-h263视频.支持VC-1(h264)编解码器的现代版本不允许直接无服务器ip-ip连接.它需要Microsoft Live Communications服务器.较新版本的SDK不能很好地涵盖视频会议通话.
http://msdn.microsoft.com/en-us/library/ms775892(VS.85).aspx
请告诉我们您选择的平台.顺便说一句,我甚至将ConferenceXP视频rtp部分与RTC 1.3语音/ SIP功能结合使用,以提高视频质量,因此您可以在此处选择多种托管技术.另一件事是Live Meeting,我没有机会好好看看.
省去麻烦并使用VLC.有一些不错的.NET包装器(http://forum.videolan.org/viewtopic.php?f=32&t=52021&start=30)
我们正在将C#和VLC用于IPTV网络.我们通过Windows XP服务器上的Osprey-450视频捕获设备从DISH网络卫星上获取输入.从那里开始,我们在C#中编写了一个.NET服务器组件,它在后台使用VLC(在.NET中启动单独的进程来控制vlc.exe实例).VLC进程通过网络对转码和流信号进行转码(.h264或MPEG-4,我们已经成功完成了两者).
在客户端,我们有一个C#WinForm应用程序,它使用嵌入式VLC Viewer来查看多播信号.该应用程序主要用于指挥和控制.当我们的机顶盒连接到我们的电视解码并显示流时,会发生多播信号的真实使用.
我们认为我们也必须编写自己的DirectX编码器,但不要遇到麻烦.VLC工作得很好,并且有足够的C#支持非常有用.如果您对实施有具体问题,请随时给我发电子邮件.