c# - 网络摄像头点对点流式传输

标签 c# java webcam

我想知道是否可以创建一个可以连接两个用户然后将他们的网络摄像头流发送给彼此的客户端(或网络客户端)。 这应该在不使用 Red5 或任何其他闪存/媒体服务器的情况下发生。 我可以使用什么协议(protocol)?什么api等等...

最佳答案

super 简单的方法,看UDP教程:

http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.aspx

如果 UDP 最终有点太不可靠(它不能保证数据会到达发送的地方),您也可以尝试 TCP 连接。

但是,您遇到的最大问题之一是试图通过 NAT。大多数防火墙将阻止传入数据,除非首先建立连接。您可以使用 UPnP 来解决这个问题,但它可能需要一些代码:

http://www.codeproject.com/KB/IP/upnpnattraversal.aspx

希望这对您有所帮助。使用 UDP,您只需查看大约 10 行代码即可发送和接收数据,使用 TCP 的代码要多一些,但更可靠。 Google 两者以获取更多信息。

从那里开始就相当简单了。您从网络摄像头获取数据。将其作为 .jpg 保存到 MemoryStream (System.IO)。然后通过 TCP 或 UDP 发送该数据。

关于c# - 网络摄像头点对点流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2142600/

相关文章:

c# - Entity Framework - 如何避免命令不同步异常

c# - 如果不使用 using 语句,IDisposable 内存会泄漏吗?

java - 使用线性坐标来检查 AI

java - 向下 float 和双倍值的向下函数

java - 找不到设备

delay - 抓取新网络摄像头图像时的 OpenCV VideoCapture/V4L2 延迟

c# - LINQ 查询上的 foreach() 速度慢 - ToList() 极大地提高了性能 - 为什么会这样?

c# - c# - 如何访问以元组为键的字典中的值?

java - 使用 try-catch over if 条件以在 java 中以最小的性能影响安全地设置值

flash - As3到YouTube上传