コードはテストされ、ローカル コンピューターで動作しますが、サーバー側では動作しません。
だから、私はlog4netを使用して何が起こるかを確認します。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 アドレスです。