Windows10下OpenCV+GStreamer构建RTSP流插件加载失败问题
Windows10下OpenCV+GStreamer搭建RTSP服务插件加载失败问题
我需要从RealSense相机读取帧并搭建RTSP服务器,支持多客户端观看视频,平台为Windows10。计划采用OpenCV VideoWriter的GStreamer后端实现,已完成以下操作:
- 重新编译带有GStreamer后端的OpenCV
- 安装GStreamer MSVC 64位(VS 2019,Release CRT)运行时及开发包
- 编写Python测试程序
但即使添加了GStreamer的bin和插件目录,仍无法加载插件,测试程序及错误输出如下:
测试Python程序
import os os.add_dll_directory("C:\\gstreamer\\1.0\\msvc_x86_64\\bin") os.add_dll_directory("C:\\gstreamer\\1.0\\msvc_x86_64\\lib\\gstreamer-1.0") import cv2 as cv import numpy sourceUrl = "http://pendelcam.kip.uni-heidelberg.de/mjpg/video.mjpg" #command = "appsrc ! videoconvert ! x264enc ! rtph264pay ! udpsink port=5004 host=127.0.0.1 " command = "appsrc ! video/x-raw, format=BGR ! queue ! videoconvert ! video/x-raw, format=BGRx ! videoconvert ! x264enc speed-preset=veryfast tune=zerolatency bitrate=800 insert-vui=1 ! h264parse ! rtph264pay name=pay0 pt=96 config-interval=1 ! udpsink port=5004 host=127.0.0.1 auto-multicast=0" cap = cv.VideoCapture(sourceUrl) if not cap.isOpened(): print("Capture Not Opened") writer = cv.VideoWriter(command, cv.CAP_GSTREAMER, 0, 30, (1280, 720), True) if not writer.isOpened(): print("WRITER NOT OPENED!!!!!") if cap.isOpened() and writer.isOpened(): while True: ret, frame = cap.read() if not ret: print("Not Fram received") break cv.imshow("frame", frame) writer.write(frame) if cv.waitKey(1) > 0: break cap.release() writer.release()
错误输出
(python.exe:6512): GStreamer警告 **: 17:18:56.512: 加载插件'C:\\gstreamer\\1.0\\msvc_x86_64\\lib\\gstreamer-1.0\\gstx264.dll'失败: 找不到指定的模块。 这通常意味着Windows无法找到该插件的某个DLL依赖项,请检查PATH是否正确。 你可以运行'dumpbin -dependents'(Visual Studio开发者命令提示符提供)来列出任意DLL的依赖项。 也有一些第三方GUI工具可以递归列出并调试DLL依赖关系。 (python.exe:6512): GStreamer严重错误 **: 17:18:56.512: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GLib-GObject警告 **: 17:18:56.512: 无法为无效(未分类)类型'<invalid>'获取类 (python.exe:6512): GStreamer严重错误 **: 17:18:56.512: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GStreamer严重错误 **: 17:18:56.512: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GLib-GObject严重错误 **: 17:18:56.512: g_object_class_find_property: 断言'G_IS_OBJECT_CLASS (class)'失败 (python.exe:6512): GStreamer严重错误 **: 17:18:56.512: gst_object_unref: 断言'object != NULL'失败 (python.exe:6512): GLib-GObject严重错误 **: 17:18:56.512: g_type_class_unref: 断言'g_class != NULL'失败 (python.exe:6512): GStreamer警告 **: 17:18:56.512: 加载插件'C:\\gstreamer\\1.0\\msvc_x86_64\\lib\\gstreamer-1.0\\gstvideoparsersbad.dll'失败: 找不到指定的模块。 这通常意味着Windows无法找到该插件的某个DLL依赖项,请检查PATH是否正确。 你可以运行'dumpbin -dependents'(Visual Studio开发者命令提示符提供)来列出任意DLL的依赖项。 也有一些第三方GUI工具可以递归列出并调试DLL依赖关系。 (python.exe:6512): GStreamer严重错误 **: 17:18:56.512: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GLib-GObject警告 **: 17:18:56.525: 无法为无效(未分类)类型'<invalid>'获取类 (python.exe:6512): GStreamer严重错误 **: 17:18:56.526: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GStreamer严重错误 **: 17:18:56.526: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GStreamer警告 **: 17:18:56.530: 加载插件'C:\\gstreamer\\1.0\\msvc_x86_64\\lib\\gstreamer-1.0\\gstvideoparsersbad.dll'失败: 找不到指定的模块。 这通常意味着Windows无法找到该插件的某个DLL依赖项,请检查PATH是否正确。 你可以运行'dumpbin -dependents'(Visual Studio开发者命令提示符提供)来列出任意DLL的依赖项。 也有一些第三方GUI工具可以递归列出并调试DLL依赖关系。 (python.exe:6512): GStreamer严重错误 **: 17:18:56.531: gst_object_unref: 断言'object != NULL'失败 (python.exe:6512): GLib-GObject严重错误 **: 17:18:56.532: g_type_class_unref: 断言'g_class != NULL'失败 (python.exe:6512): GStreamer警告 **: 17:18:56.535: 加载插件'C:\\gstreamer\\1.0\\msvc_x86_64\\lib\\gstreamer-1.0\\gstrtp.dll'失败: 找不到指定的模块。 这通常意味着Windows无法找到该插件的某个DLL依赖项,请检查PATH是否正确。 你可以运行'dumpbin -dependents'(Visual Studio开发者命令提示符提供)来列出任意DLL的依赖项。 也有一些第三方GUI工具可以递归列出并调试DLL依赖关系。 (python.exe:6512): GStreamer严重错误 **: 17:18:56.537: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GLib-GObject警告 **: 17:18:56.537: 无法为无效(未分类)类型'<invalid>'获取类 (python.exe:6512): GStreamer严重错误 **: 17:18:56.539: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GStreamer严重错误 **: 17:18:56.540: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GLib-GObject严重错误 **: 17:18:56.540: g_object_class_find_property: 断言'G_IS_OBJECT_CLASS (class)'失败 (python.exe:6512): GStreamer严重错误 **: 17:18:56.541: gst_object_unref: 断言'object != NULL'失败 (python.exe:6512): GLib-GObject严重错误 **: 17:18:56.541: g_type_class_unref: 断言'g_class != NULL'失败 (python.exe:6512): GStreamer警告 **: 17:18:56.545: 加载插件'C:\\gstreamer\\1.0\\msvc_x86_64\\lib\\gstreamer-1.0\\gstudp.dll'失败: 找不到指定的模块。 这通常意味着Windows无法找到该插件的某个DLL依赖项,请检查PATH是否正确。 你可以运行'dumpbin -dependents'(Visual Studio开发者命令提示符提供)来列出任意DLL的依赖项。 也有一些第三方GUI工具可以递归列出并调试DLL依赖关系。 (python.exe:6512): GStreamer严重错误 **: 17:18:56.546: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GLib-GObject警告 **: 17:18:56.547: 无法为无效(未分类)类型'<invalid>'获取类 (python.exe:6512): GStreamer严重错误 **: 17:18:56.548: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GStreamer严重错误 **: 17:18:56.549: gst_element_factory_get_element_type: 断言'GST_IS_ELEMENT_FACTORY (factory)'失败 (python.exe:6512): GLib-GObject严重错误 **: 17:18:56.551: g_object_class_find_property: 断言'G_IS_OBJECT_CLASS (class)'失败 (python.exe:6512): GStreamer严重错误 **: 17:18:56.552: gst_object_unref: 断言'object != NULL'失败 (python.exe:6512): GLib-GObject严重错误 **: 17:18:56.553: g_type_class_unref: 断言'g_class != NULL'失败 [ WARN:0@1.151] global cap_gstreamer.cpp:2436 cv::CvVideoWriter_GStreamer::open OpenCV | GStreamer警告: 打开写入管道出错: 元素"x264enc"中不存在属性"speed-preset"
内容的提问来源于stack exchange,提问作者JuanDYB
相关产品推荐
相关产品推荐

