一、准备
Nuget安装Opencvsharp,注意要同时安装Opencvsharp4.runtime.win,不然程序会报错
二、读取写入代码
每个相机的rtsp格式不一样,大华的是rtsp://账号:密码@IP:端口/cam/realmonitor?channel=通道号&subtype=0(1是辅码流)
using (var capture = new VideoCapture(rtspStr))
using (var writer = new VideoWriter("output.avi", VideoWriter.FourCC(@"XVID"), capture.Fps, new OpenCvSharp.Size(capture.FrameWidth, capture.FrameHeight)))
{
if (!capture.IsOpened())
{
Console.WriteLine("Unable to connect to the network camera");
return;
}
if (!writer.IsOpened())
{
Console.WriteLine("Unable to open writer");
return;
}
using (var window = new Window("video"))
{
Mat frame = new Mat();
while (true)
{
capture.Read(frame);
if (frame.Empty())
break;
writer.Write(frame);
window.ShowImage(frame);
if (Cv2.WaitKey(30) >= 0)
break;
}
}
}
三、注意点
3.1 VideoWriter不能直接修改视频码率,码率影响因素:视频的长宽,帧率大小、编码格式(例子是XVID)
3.2 码率格式设置异常时,可能会在new VideoWriter这句报错,也可能会导致VideoCapture.Isopened()返回false(完全不能理解这个逻辑)
3.3 网络摄像头提供的视频码率太高的时候,视频会掉帧