代码在本地计算机上测试并工作,但不在服务器端。
所以,我使用 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地址。