You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac使用OpenCV读取RTSP流时GStreamer插件缺失问题求助

M1 Mac下OpenCV读取RTSP流的GStreamer插件缺失问题解决

问题背景

在M1芯片的macOS Ventura 13.4.1设备上,使用OpenCV读取RTSP视频流时触发GStreamer相关错误,提示缺少RTSP URI处理插件,已尝试重装GStreamer、更换OpenCV版本等操作无效。

复现代码

import cv2

IP = 'XXX.XXX.X.XX'
LOGIN = 'username'
PASSWORD = 'password'
FEED_URL = f'rtsp://{LOGIN}:{PASSWORD}@{IP}:554/cam/realmonitor?channel=1&subtype=0'

def test_get_feed():
    feed = cv2.VideoCapture(FEED_URL)

test_get_feed()

错误信息

[ WARN:0@0.157] global .../cap_gstreamer.cpp (2386) handleMessage OpenCV | GStreamer warning: your GStreamer installation is missing a required plugin
[ WARN:0@0.158] global .../cap_gstreamer.cpp (2402) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module uridecodebin0 reported: No URI handler implemented for "rtsp".
[ WARN:0@0.158] global .../cap_gstreamer.cpp (1356) open OpenCV | GStreamer warning: unable to start pipeline
OpenCV: Couldn't read video stream from file "rtsp://username:password@XXX.XXX.X.XX:554/cam/realmonitor?channel=1&subtype=0"

解决方案

1. 安装完整GStreamer插件集

brew中没有单独的gst-rtsp-server或gstreamer-rtsp-plugin包,RTSP相关功能包含在插件集合包中。执行以下命令安装所有必要组件:

brew install gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav

这些包覆盖了RTSP协议解析、解码所需的全部插件,确保GStreamer能识别RTSP URI。

2. 确保OpenCV启用GStreamer支持

默认pip安装的opencv-python可能未关联系统GStreamer,可通过以下两种方式解决:

  • 使用conda安装适配版OpenCV
    conda-forge提供的OpenCV包默认集成GStreamer支持,适配M1架构:
    conda install -c conda-forge opencv
    
  • 源码编译OpenCV并启用GStreamer
    手动编译时强制开启GStreamer选项:
    # 安装编译依赖
    brew install cmake pkg-config
    # 克隆源码
    git clone https://github.com/opencv/opencv.git
    git clone https://github.com/opencv/opencv_contrib.git
    mkdir -p opencv/build && cd opencv/build
    # 配置编译参数
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
          -D CMAKE_INSTALL_PREFIX=/usr/local \
          -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
          -D WITH_GSTREAMER=ON \
          -D BUILD_EXAMPLES=OFF ..
    # 编译安装
    make -j$(sysctl -n hw.ncpu)
    sudo make install
    

3. 验证GStreamer功能

先通过GStreamer命令行测试RTSP流是否正常,确认插件工作:

gst-launch-1.0 rtspsrc location="rtsp://username:password@XXX.XXX.X.XX:554/cam/realmonitor?channel=1&subtype=0" ! decodebin ! autovideosink

若视频能正常播放,说明GStreamer配置无误,此时运行OpenCV代码即可读取RTSP流。

内容的提问来源于stack exchange,提问作者Elliot Silveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:43:12