1

我正在使用 Aforge 尝试从 IP 摄像机获取实时流。我的问题是,我的连接由于某种原因不断关闭。出于测试目的,我将相机直接连接到我的计算机并通过此 LAN 连接到它。

错误:

基础连接已关闭:连接意外关闭。

这是我正在使用的代码:

stream.NewFrame += new NewFrameEventHandler(video_NewFrame);
stream.VideoSourceError += new VideoSourceErrorEventHandler(stream_VideoSourceError);
stream.Login = "login";
stream.Password = "pass";
stream.RequestTimeout = 10000;
stream.Source = "http://192.168.0.33/nphMotionJpeg?Resolution=320x240&Quality=Standard";  
stream.Start();

我看到有些人建议在 app.config 中进行设置,我也这样做了:

<system.net>
  <settings>
    <httpWebRequest useUnsafeHeaderParsing="true"/>
  </settings>
</system.net>

如果没有编辑 app.config,我会得到一个不同的错误。(违反协议)

有没有人遇到过这些问题或知道如何让它工作?

注意:我也尝试过像这样在没有 Aforge 的情况下获取数据,但它导致了同样的错误。

4

2 回答 2

2

尝试以下操作,看看它是否有效。

stream.Login = "login";
stream.Password = "pass";
stream.ForceBasicAuthentication = true;
stream.RequestTimeout = 10000;
stream.Source = "http://192.168.0.33/nphMotionJpeg?Resolution=320x240&Quality=Standard";  
stream.Start();
于 2012-11-10T17:05:28.123 回答
1

我不相信这是 aforge 中的一个选项(https://code.google.com/p/aforge/source/browse/trunk/Sources/Video/MJPEGStream.cs),但看起来相机需要 HTTP v1。 0。请参阅手册http://csj.psn-web.net/netwkcam_net/download/us/document/NEW_Camera_CGI_Interface_v4.30.pdf第 56 页。

(1) 开始接收 建立连接(打开套接字),并将以下命令字符串发送到 HTTP 端口。"GET http://xxx.xxx.xxx.xxx:yy/nphMotionJpeg?Resolution=320x240&Quality=Standard HTTP/1.0\r\n " xxx.xxx.xxx.xxx:IP地址或域名yy:HTTP端口号。(如果端口号设置为 80,则不需要)

如果您确实可以访问代码,则可以尝试

//setting http v1.0 in c#
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
request.ProtocolVersion = HttpVersion.Version10;

另外,尝试启用访客访问并从代码中删除您的用户名/密码,看看是否有效。

于 2012-09-04T21:11:40.303 回答