【发布时间】:2020-12-20 09:08:01
【问题描述】:
我正计划从 OpenCV 为视频文件流/实时 rtsp 流进行 VideoCapture。然而,VideoCapture 在我的程序中使用时有很多延迟,所以我决定改用 gstreamer 管道。比如我用过
VideoCapture capVideo("filesrc location=CarsDriving.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! nvvidconv ! video/x-raw, format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink ", CAP_GSTREAMER);
我的程序能够运行,但如果我要执行类似的操作
capVideo.get(CAP_PROP_FRAME_COUNT)
它总是返回 -1,因为 GStreamer 有这个警告
[WARN:0] 全局 /home/nvidia/Downloads/opencv-4.4.0/source/modules/videoio/src/cap_gstreamer.cpp (898) 打开 OpenCV | GStreamer 警告:无法查询流的持续时间 [警告:0] 全局 /home/nvidia/Downloads/opencv-4.4.0/source/modules/videoio/src/cap_gstreamer.cpp (935) 打开 OpenCV | GStreamer 警告:无法查询视频位置:状态=1,值=1,持续时间=-1
如果我将 gstreamer 用于视频管道,如何在 opencv 中获取帧数?我需要异常帧数以及视频处理技术。
【问题讨论】: