opencv 獲取rtsp原始碼流代碼

opencv不僅可以獲取解碼後的圖片數據,還可以獲取未經解碼的原始碼流數據, 這樣爲使用其他硬解碼器提供方便

在編譯opencv cmake時需要指定 -D WITH_FFMPEG=ON

python 代碼如下,需要指定CAP_PROP_FORMAT 爲 -1 指定關閉軟解碼功能

需要說明的是,獲取的原始碼流數據需要通過視頻流解碼器才能獲取到圖片數據

import cv2
rtsp_url = "rtsp://192.167.15.41/g2.mp4"
logger.info(rtsp_url)
cap = cv2.VideoCapture(rtsp_url)
cap.set(cv2.CAP_PROP_FORMAT, -1)
if not cap.isOpened():
    logger.info("fail to open rtsp: {}".format(rtsp_url))
    break
logger.info("FORMAT:{} FOURCC:{} CODEC_PIXEL_FORMAT:{} FPS:{}, FRAME_WIDTH:{}, FRAME_HEIGHT:{}"
             .format(cap.get(cv2.CAP_PROP_FORMAT),
                     cap.get(cv2.CAP_PROP_FOURCC),
                     cap.get(cv2.CAP_PROP_CODEC_PIXEL_FORMAT),
                     cap.get(cv2.CAP_PROP_FPS),
                     cap.get(cv2.CAP_PROP_FRAME_WIDTH),
                     cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
count = 0
while True:
    ret, yuv_frame = cap.read()
    logger.info("ret:{}, len{}".format(ret, yuv_frame.shape))
    if not ret:
        continue
    logger.info("count:{}".format(count))
    count += 1

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章