如何使用C#传输网络摄像头视频?

时间:2008-12-05 02:54:18

标签: c# video streaming webcam

我想创建一个简单的服务器应用程序,人们可以使用基于浏览器的客户端(稍后我将制作)连接来观看流式视频。我想使用C#。

通过网络摄像头捕获视频或快速图像并通过网络发送它需要什么?

6 个答案:

答案 0 :(得分:21)

如果你想要一个“盒子中的捕获/流光”组件,那么其他几个人就提到过了。

如果你想要对它进行低级控制,你需要使用DirectShow作为thealliedhacker指出。在C#中使用DirectShow的最佳方式是通过DirectShow.Net库 - 它包装了所有DirectShow COM API,并为您提供了许多有用的快捷方式。

除了捕获和流式传输之外,您还可以进行录制,音频和视频格式转换,音频和视频实时过滤以及大量内容。

微软声称DirectShow正在消失,但他们还没有发布一个新的库或API来完成DirectShow提供的所有功能。我怀疑他们发布的许多最新内容仍然是DirectShow。由于它在微软的地位,除了MSDN之外,它上面没有很多书籍或参考书,你可以在论坛上找到它们。去年当我们开始使用它的项目时,关于这个主题的最好的书 - Programming Microsoft DirectShow - 已经绝版,并且用过的副本大约需要350美元!

答案 1 :(得分:7)

通常的API是DirectShow。

您可以使用P / Invoke导入C ++ API,但我认为已经有一些项目已经完成了。

http://channel9.msdn.com/forums/TechOff/93476-Programatically-Using-A-Webcam-In-C/

http://www.codeproject.com/KB/directx/DirXVidStrm.aspx

要获得流媒体部分,您可能希望使用DirectShow应用压缩编解码器来减少延迟,然后您可以获取流并传输它。您可以考虑使用多播来减少网络负载。

答案 2 :(得分:4)

您可以使用VideoLAN。 VideoLAN将作为服务器工作(或者您可以围绕它自己包装C#应用程序以获得更多控制)。您还可以使用.NET包装器,并将其嵌入到C#客户端中。

答案 3 :(得分:3)

我已将VideoCapX用于我们的项目。它将作为MMS / ASF流流出,可由媒体播放器打开。然后,您可以将媒体播放器嵌入到您的网页中。

如果您不需要太多控制,或者如果您想在不编写代码的情况下试用VideoCapX,请尝试U-Broadcast,他们会在幕后使用VideoCapX。

答案 4 :(得分:1)

如果您想在网络浏览器中录制视频,我认为您唯一的选择就是Flash。我们期待做同样的事情。我们也主要是.NET的房子,我没有看到使用.NET捕获网络摄像头_from_within_the_browser_的方法。如果您愿意购买桌面应用程序,那么这里提到的所有其他解决方案可能会很有效。

答案 5 :(得分:0)

将图像从网络摄像头流式传输到浏览器的另一个选项是通过mjpeg。这只是一系列jpeg图像,大多数现代浏览器都支持这些图像作为标记的一部分。这是一个用c#编写的示例服务器:

https://www.codeproject.com/articles/371955/motion-jpeg-streaming-server

这在局域网上运行良好,但在互联网上效果不佳,因为mjpeg不如其他视频编解码器(h264,VP8等)高效。