Я пытаюсь перехватить поток rtsp с камеры Reolink, используя opencv и gstreamer.Я успешно захватил поток, используя следующую строку в моем коде
VideoCapture cap("rtsp://admin:password@ip_address:rtsp_port latency=0 ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! appsink0",CV_CAP_GSTREAMER);
Я хочу получить fps с захваченного устройства (Reolink Camera).
Я попытался использовать поток RTSP с помощью FFMPEG.Я могу захватить fps, используя cap.get(CV_CAP_PROP_FPS)
.Причина, по которой мне пришлось переключиться на gstreamer с ffmpeg, заключается в ошибке декодирования h264.
Я не получаю никакой ошибки декодирования при использовании gstreamer, но я не могу получить fps потока.
Я попробовал cap.get(CV_CAP_PROP_FPS)
, и он возвращает 0
.Я установил FPS камеры на 15 и удивился, увидев, что возвращаемое значение fps равно 0.
Я также заглянул в cap_gstreamer.cpp, найденный здесь https://github.com/opencv/opencv/blob/master/modules/videoio/src/cap_gstreamer.cpp,, но не повезло.
#include "video_reading_gstreamer.h"
int main(){
//gst = "rtspsrc location=rtsp://admin:password@10.160.102.85:554 latency=0 ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! appsink0"
VideoCapture cap("rtsp://admin:password@10.160.102.85:554 latency=0 ! matroskamux ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! decodebin ! appsink0", CV_CAP_GSTREAMER);
if (!cap.isOpened()) {
cerr << "ERROR! Unable to open camera\n";
return -1;
}
while(1){
Mat frame;
// Capture frame-by-frame
cap >> frame;
cout << cap.get(CV_CAP_PROP_FPS) << "\n" ;
// If the frame is empty, break immediately
if (frame.empty())
break;
// Display the resulting frame
resize(frame,frame,Size(1280,960));
imshow( "Frame", frame );
// Press ESC on keyboard to exit
char c=(char)waitKey(25);
if(c==27)
break;
}
// When everything done, release the video capture object
cap.release();
// Closes all the frames
destroyAllWindows();
return 0;
}
Он печатает 0
на консоли, где, как я ожидаю, вывод будет отличаться от 0
.
Может кто-нибудь помочь мне понять, если я делаю что-то неправильно или отсутствуетчто-то.Как мне получить fps от gstreamer?
Спасибо.