如何使用 C# 流式传输网络摄像头视频? [关闭]

Posted

技术标签:

【中文标题】如何使用 C# 流式传输网络摄像头视频? [关闭]【英文标题】:How can I stream webcam video with C#? [closed] 【发布时间】:2010-09-25 11:02:35 【问题描述】:

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

我需要什么才能通过网络摄像头捕捉视频或快速图像并通过网络发送?

【问题讨论】:

对于任何希望在 C# 中从网络摄像头捕获图像的人 - 试试这篇文章 - codeproject.com/KB/miscctrl/webcam_c_sharp.aspx。 也许这会有所帮助:- sourceforge.net/projects/ispysoftware - ispyconnect.com 【参考方案1】:

如果您想要一个“盒中的捕获/流媒体”组件,正如其他人所提到的那样,这里有几个。

如果您想对这一切进行低级控制,您需要使用 DirectShow,正如 thealiedhacker 指出的那样。在 C# 中使用 DirectShow 的最佳方式是通过 DirectShow.Net 库 - 它封装了所有 DirectShow COM API,并包含许多有用的快捷函数。

除了捕获和流式传输之外,您还可以进行录制、音频和视频格式转换、音频和视频实时过滤器,以及很多东西。

微软声称 DirectShow 即将消失,但他们尚未发布一个新的库或 API 来完成 DirectShow 提供的所有功能。我怀疑他们发布的许多最新内容仍然是 DirectShow。由于它在 Microsoft 的地位,除了 MSDN 和您可以在论坛上找到的内容之外,没有太多关于它的书籍或参考资料。去年,当我们开始使用它的项目时,关于该主题的最佳书籍 - Programming Microsoft DirectShow - 已绝版,二手书售价约为 350 美元!

【讨论】:

我知道我在回答一个老问题,但在花钱买那本书之前先阅读了亚马逊的评论。就像每个人声称的那样可怕。购买 GraphEditPlus 并查看它生成的代码对于简单任务来说会更有价值。 有没有关于这个话题的新解决方案,或者 DirectShow 现在仍然是技术状态?【参考方案2】:

通常的 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 应用压缩编解码器以减少延迟,然后您可以获得 Stream 并传输它。您可以考虑使用多播来减少网络负载。

【讨论】:

您不能真正使用 P/Invoke 为 DirectShow 导入 C++ API,因为它是基于 COM 的。您可以使用名为 DirectShow.Net 的 DirectShow 包装器。【参考方案3】:

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

【讨论】:

【参考方案4】:

我在我们的项目中使用了VideoCapX。它将以 MMS/ASF 流的形式流出,可由媒体播放器打开。然后,您可以将媒体播放器嵌入到您的网页中。

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

【讨论】:

【参考方案5】:

如果您想在网络浏览器中录制视频,我认为您唯一的选择是 Flash。我们正在寻求做同样的事情。我们也主要是 .NET 公司,我看不到使用 .NET 捕获网络摄像头 _from_within_the_browser_ 的方法。如果您乐于使用桌面应用程序,这里提到的所有其他解决方案都可能会很好用

【讨论】:

【参考方案6】:

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

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

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

【讨论】:

以上是关于如何使用 C# 流式传输网络摄像头视频? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何减少延迟 - 来自网络摄像头的 VLC 流式传输

从 ios 流式传输实时视频 [关闭]

寻找一个库/框架将实时视频从 OS X 流式传输到 Wowza 服务器(RTMP)[关闭]

将处理后的视频从 C# 程序发送到 C++ 程序

将 openCV C++ 视频流式传输到浏览器

如何将视频从我的应用程序流式传输到网络?