当从rtsp相机获取帧并保存时,我会在不确定的时间遇到这些错误。这些错误通常发生在保存100-200张图像后的不同时间,错误本身并不总是完全相同。这些错误导致保存到时间错误的图像出现失真,可能变成完全灰色或包含扭曲的像素。
#Frame_142 - [hevc @ 0c3bf800] The cu_qp_delta 29 is outside the valid range [-26, 25].
#Frame_406 - [hevc @ 0b6bdb80] Could not find ref with POC 41
我尝试使用python和c++实现代码,但结果相同。也尝试将其保存为.png而不是.jpg。当使用imshow显示相机时,rtsp源正常工作,问题似乎只会在尝试保存帧时发生。据我所了解,这些错误与ffmpeg有关,但谷歌对这些错误类型没有太多帮助。
#include <iostream>
#include <opencv2\opencv.hpp>
#include <chrono>
#include <thread>
using namespace std;
using namespace cv;
int main() {
VideoCapture cap("rtsp://admin:admin@192.168.88.97/media/video1");
if (!cap.isOpened())
return -1;
for (int i = 0; i < 500; i++)
{
Mat frame;
cap >> frame;
imwrite("C:\\Users\\Documents\\Dev\\c++\\OpenCVExample\\frames\\frame" + std::to_string(i) + ".png", frame);
cout << i << "\n";
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
return 0;
}
if(frame.data)
之前,尝试检查帧是否有效。这可能不仅是问题,还有一个遗漏点。请查看此处。 - Yunus Temurlenk