我目前有一台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
所有这些都是在后台工作者中,我在一个线程中有一个计时器,在指定的时间内运行它。
我正在使用的这种方法是连接到流,但正如我所说只保存一秒视频,视频已损坏。