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