私は現在、ビデオを1時間間隔でキャプチャして保存する必要があるMJPEGカメラを持っています。
受信データをチャンクしてファイルに保存することでこれを達成しようとしましたが、作成されるファイルは、約 1 秒の長さのビデオ ストリームの破損したバージョンにすぎません。
これが私が持っているものです
request = WebRequest.Create("http://MYVIDEOURL.videostream.cgi");
request.Credentials = new NetworkCredential("USERNAME", "PASSWORD");
request.Method = "POST";
WebResponse response = request.GetResponse();
using(var fs = new FileStream(@"C:\TestVideo.avi", FileMode.Create)) {
using(var repStream = response.GetResponseStream()) {
while (!bw.CancellationPending)//this is for the background worker
{
byte[] b = new byte[4096];
int bytesRead = repStream.Read(b, 0, b.Length);
repStream.Read(b, 0, bytesRead);
fs.Write(b, 0, bytesRead);
}//end while
fs.Close();
}//end using
}//end using
そのすべてはバックグラウンドワーカーにあり、指定された時間だけ実行するスレッドにタイマーがあります。
私が使用しているこの方法はストリームに接続していますが、先ほど言ったように、ビデオを 1 秒しか保存していないため、ビデオが破損しています。