VideoCapture 把网络工作交给它选定的后端。在提供 FFmpeg 的 OpenCV 构建中,HTTP 视频 URL 可以通过采集选项环境变量获得 FFmpeg 的 http_proxy 选项:

import os
os.environ['OPENCV_FFMPEG_CAPTURE_OPTIONS'] = (
    'http_proxy;http://proxy.example:8080'
)

import cv2
capture = cv2.VideoCapture(
    'http://media.example/video.mp4',
    cv2.CAP_FFMPEG,
)
try:
    if not capture.isOpened():
        raise RuntimeError('Video input did not open')
    ok, frame = capture.read()
finally:
    capture.release()

OpenCV 的 FFmpeg 后端把选项字符串解析为键;值对,多个对之间用竖线分隔。示例在导入 OpenCV 之前设置环境变量,并显式请求 CAP_FFMPEG。

FFmpeg 将 http_proxy 记录为 HTTP 协议的代理 URL;HTTP 代理列表为公共 HTTP 媒体路由提供候选。它不会配置无关的采集后端、本地摄像头或任意 RTSP/UDP 流量。

请检查实际 OpenCV 构建的后端与 FFmpeg 能力。代理值无法补上缺失的后端或解码器。

打开媒体输入与解码一帧也是两个独立结果。下载成功之后的编解码失败,不应被报告为代理不可达的证据。

相关文章