使用 FFmpeg 后端时 OpenCV VideoCapture 的 HTTP 代理设置
当 VideoCapture 明确使用 FFmpeg 后端时,通过 OPENCV_FFMPEG_CAPTURE_OPTIONS 传入 FFmpeg 的 HTTP 代理选项。
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 能力。代理值无法补上缺失的后端或解码器。
打开媒体输入与解码一帧也是两个独立结果。下载成功之后的编解码失败,不应被报告为代理不可达的证据。