FFmpeg backend ဖြင့် OpenCV VideoCapture ၏ HTTP proxy ဆက်တင်များ
VideoCapture သည် ထို backend ကို ရှင်းလင်းစွာ အသုံးပြုသောအခါ FFmpeg ၏ HTTP proxy ရွေးချယ်မှုကို OPENCV_FFMPEG_CAPTURE_OPTIONS မှတစ်ဆင့် ပေးပို့ပါ။
VideoCapture သည် ကွန်ရက်အလုပ်ကို ၎င်းရွေးချယ်ထားသော backend ထံ အပ်နှင်းသည်။ FFmpeg ပါဝင်သော OpenCV build ဖြင့် HTTP ဗီဒီယို URL သည် capture options ပတ်ဝန်းကျင်မှတစ်ဆင့် 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 backend သည် ရွေးချယ်မှုစာကြောင်းကို key;value အတွဲများအဖြစ် ခွဲခြမ်းစိတ်ဖြာပြီး အတွဲများစွာအကြားတွင် ဒေါင်လိုက်မျဉ်းတစ်ခု ရှိသည်။ ဥပမာသည် OpenCV ကို import မလုပ်မီ ပတ်ဝန်းကျင်ကို သတ်မှတ်ပြီး CAP_FFMPEG ကို ရှင်းလင်းစွာ တောင်းဆိုသည်။
FFmpeg သည် http_proxy ကို HTTP ပရိုတိုကော၏ proxy URL အဖြစ် မှတ်တမ်းတင်သည်။ HTTP proxy စာရင်း သည် အများသုံး HTTP မီဒီယာလမ်းကြောင်းအတွက် ကိုယ်စားလှယ်လောင်းများ ပေးသည်။ ယင်းသည် မသက်ဆိုင်သော capture backend၊ ဒေသတွင်း ကင်မရာ သို့မဟုတ် မထိန်းချုပ်နိုင်သော RTSP/UDP အသွားအလာကို မသတ်မှတ်ပါ။
အမှန်တကယ် OpenCV build ၏ backend နှင့် FFmpeg စွမ်းရည်များကို စစ်ဆေးပါ။ proxy တန်ဖိုးသည် မရှိသော backend သို့မဟုတ် ဒီကုဒ်ဒါကို ထည့်၍ မရနိုင်ပါ။
မီဒီယာ input ဖွင့်ခြင်းနှင့် frame ဒီကုဒ်လုပ်ခြင်းတို့သည် သီးခြားရလဒ်များ ဖြစ်သည်။ ဒေါင်းလုဒ် အောင်မြင်ပြီးနောက် codec မအောင်မြင်မှုကို proxy သို့ မရောက်နိုင်ခဲ့ဟု သက်သေအဖြစ် အစီရင်ခံရန် မသင့်ပါ။