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 백엔드는 옵션 문자열을 key;value 쌍으로 해석하며, 여러 쌍 사이는 세로 막대로 구분합니다. 예제는 OpenCV를 가져오기 전에 환경 변수를 설정하고 CAP_FFMPEG를 명시적으로 요청합니다.

FFmpeg는 http_proxy를 HTTP 프로토콜의 프록시 URL로 문서화합니다. HTTP 프록시 목록은 공용 HTTP 미디어 경로의 후보를 제공하지만, 관련 없는 캡처 백엔드나 로컬 카메라, 임의의 RTSP/UDP 트래픽을 설정하지는 않습니다.

실제 OpenCV 빌드의 백엔드와 FFmpeg 기능을 확인하세요. 프록시 값으로는 없는 백엔드나 디코더를 추가할 수 없습니다.

미디어 입력을 여는 것과 프레임을 디코딩하는 것도 별개의 결과입니다. 다운로드가 성공한 뒤의 코덱 실패를 프록시에 도달하지 못했다는 증거로 보고해서는 안 됩니다.

관련 글