代码在本地计算机上测试和工作,但不在服务器端。
所以,我使用log4net来查看会发生什么,这是 log4net 产生的结果:http: //pastebin.com/Xr3iq68t
正如大家所见,我几乎将log4net放在了代码的每一行中。
我的本地计算机与服务器之间有什么区别(我正在使用 somee.com 免费托管来测试代码)。如果是因为权限问题,我测试了另一个代码,它从同一源下载快照并将其保存在服务器端文件夹中,它可以保存它。
那么,代码有什么问题吗?
代码Rec
只执行到上课,不继续执行其余的代码。它应该在那之后去video_NewFrame
,但从日志文件记录来看,它不会继续。
完整代码可以在这里查看:http: //pastebin.com/VCjVj3uc
protected void Button1_Click(object sender, EventArgs e)
{
string usr = "http://IPaddress.com:8081/snapshot.cgi";
log.Info("DDNS: " + usr);
log.Info("Starting JPEG stream...");
//camera source
JPEGSource = new JPEGStream(usr);
log.Info("***JPEGSource = new JPEGStream(usr);***");
JPEGSource.Login = login;
JPEGSource.Password = password;
log.Info("***JPEG login & password***");
JPEGSource.Start();
log.Info("JPEGSource.Start()");
JPEGSource.NewFrame += new NewFrameEventHandler( video_NewFrame );
log.Info("***Goto video_NewFrame class***");
//System.Threading.Thread.Sleep(6000);
//Label2.Text = Label2.Text + streamingSource + "<br> ";
this.Label1.Text = "Camera Source: " + usr;
}
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap image = (Bitmap)eventArgs.Frame.Clone();
log.Info("***Bitmap image = (Bitmap)eventArgs.Frame.Clone();***");
width = image.Width;
height = image.Height;
frames.Enqueue((Bitmap)image.Clone());
log.Info("***Cloning frame***");
if (!IsRecording)
{
log.Info("Entering thread");
IsRecording = true;
Thread th = new Thread(DoRecording);
th.Start();
}
}
注意:摄像机IP地址为DDNS IP地址。