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

Jetson Nano上OpenCV读取IP摄像头RTSP流遇授权错误求助

问题:Jetson Nano Docker容器中OpenCV读取RTSP摄像头失败

环境信息

  • 硬件:Jetson Nano
  • 系统:L4T R32.7.1 + JetPack 4.6.1
  • 软件:Python 3.6.9、OpenCV 4.3.0(运行在Docker容器内)

问题描述

原本在旧版OpenCV中可正常运行的RTSP摄像头读取代码,升级OpenCV后出现权限及管道启动失败错误,降级OpenCV后问题仍存在。

示例代码

import cv2

input_URI = "rtsp://user:psw@IP_address:88/videoMain"
camera = cv2.VideoCapture(input_URI)

while camera.isOpened():
    ret, frame = camera.read()
    frame_rgba = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
    print(frame_rgba)

错误信息

[ WARN:0] global /tmp/pip-install-acvfpz_0/opencv-python_7732674b1cb7471d8a299216848188a1/opencv/modules/videoio/src/cap_gstreamer.cpp (1759) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Unauthorized
[ WARN:0] global /tmp/pip-install-acvfpz_0/opencv-python_7732674b1cb7471d8a299216848188a1/opencv/modules/videoio/src/cap_gstreamer.cpp (888) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global /tmp/pip-install-acvfpz_0/opencv-python_7732674b1cb7471d8a299216848188a1/opencv/modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
[ERROR:0] global /tmp/pip-install-acvfpz_0/opencv-python_7732674b1cb7471d8a299216848188a1/opencv/modules/videoio/src/cap.cpp (142) open VIDEOIO(CV_IMAGES): raised OpenCV exception:

OpenCV(4.3.0) /tmp/pip-install-acvfpz_0/opencv-python_7732674b1cb7471d8a299216848188a1/opencv/modules/videoio/src/cap_images.cpp:253: error: (-5:Bad argument) CAP_IMAGES: can't find starting number (in the name of file): rtsp://usr:psw@IP_address:88/videoMain in function 'icvExtractPattern'

修复方案

1. 强制指定GStreamer后端

OpenCV默认会尝试多个后端,可能误选了CAP_IMAGES而非GStreamer。创建VideoCapture时显式指定后端类型:

import cv2

input_URI = "rtsp://user:psw@IP_address:88/videoMain"
# 显式指定使用GStreamer后端
camera = cv2.VideoCapture(input_URI, cv2.CAP_GSTREAMER)

while camera.isOpened():
    ret, frame = camera.read()
    if not ret:
        break  # 读取失败时退出循环,避免崩溃
    frame_rgba = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
    print(frame_rgba)

camera.release()

2. 配置Docker网络权限

确保容器拥有完整网络访问能力,运行容器时添加--network=host参数:

docker run --network=host -it your_container_image

3. 安装GStreamer依赖

OpenCV的GStreamer后端需要对应插件支持,在Docker镜像中执行以下命令安装依赖:

apt-get update && apt-get install -y gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav

4. 验证RTSP流可用性

直接使用GStreamer命令测试RTSP流是否可访问,排除网络或摄像头配置问题:

gst-launch-1.0 rtspsrc location=rtsp://user:psw@IP_address:88/videoMain ! decodebin ! autovideosink

内容的提问来源于stack exchange,提问作者Paloma Jimeno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:25:16