영어 | 한국어 | 중국어 | 일본어

APIs: playback

녹화 이미지 가져오기

채널 번호, 서브 스트림 인덱스 및 시간 정보를 지정하여 녹화된 이미지를 얻을 수 있습니다.

기본 서브 스트림 인덱스는 0으로, 주 스트림을 나타냅니다.

🛠️ (frame_image, frame_info) = get_image(ch_no, year, month, day, hour, minute, second, sub_idx=idx)

↩️ frame_image: 비디오 이미지를 나타내는 numpy 배열.

· 픽셀 형식이 "BGR"인 경우, 이미지의 형태는 (height, width, 3)입니다.

↩️ frame_info: 비디오 이미지 정보를 담은 딕셔너리.

· frame_info['timestamp']: Unix 타임스탬프.

· frame_info['timestamp_msec']: 밀리초 단위 타임스탬프.

· frame_info['message']: 에러 메시지.

다음 API를 사용하여 비디오 출력 설정을 변경할 수 있습니다:

🛠️ set_image_size(width, height): 출력 비디오 크기를 설정합니다. (기본값: 원본 비디오 크기)

🛠️ set_pixel_format("PIXEL_FORMAT"): 출력 비디오 포맷을 설정합니다. "RGB" / "BGR" / "0RGB" / "0BGR" 중에서 선택할 수 있습니다. (기본값: "RGB")

playback = vmspy.playback()
if not playback.init(address, port, access_id, access_pw):
    print(playback.get_error())

playback.set_image_size(720, 480)
playback.set_pixel_format("BGR")
(frame_image, frame_info) = playback.get_image(1, 2025, 4, 17, 5, 24, 30)

 

연속된 녹화 이미지 가져오기

채널 번호, 시작 시간, 그리고 초 단위의 간격을 지정하여 녹화된 이미지 시리즈를 얻을 수 있습니다.

간격(interval)을 0으로 설정하면 전체 프레임 모드가 됩니다.

🛠️ ret = start(ch_no, year, month, day, hour, minute, second, interval=sec, sub_idx=idx)

↩️ ret: 성공 시 True, 실패 시 False.

시작 후, 지정된 간격마다 연속된 프레임을 받을 수 있습니다:

🛠️ (frame_image, frame_info) = get_frame()

↩️ frame_image: 비디오 이미지를 나타내는 numpy 배열.

· 픽셀 형식이 "BGR"인 경우, 이미지의 형태는 (height, width, 3)입니다.

↩️ frame_info: 비디오 이미지 정보를 담은 딕셔너리.

· frame_info['timestamp']: Unix 타임스탬프.

· frame_info['timestamp_msec']: 밀리초 단위 타임스탬프.

· frame_info['message']: 에러 메시지.

playback.set_image_size(720, 480)
playback.set_pixel_format("BGR")
playback.start(1, 2025, 4, 17, 5, 24, 30, interval=10) # 매 10초마다

while True:
    (frame_image, frame_info) = playback.get_frame()
    if frame_image.size == 0:
        print(frame_info['message'])
        break
    # 분석 수행

playback.stop()

 

저장비디오 파일 이미지 가져오기

파일 ID와 시간 정보를 지정하여 저장비디오 파일의 이미지를 얻을 수 있습니다.

파일 ID와 타임스탬프는 `utils.get_file_list()` 함수로 얻을 수 있습니다.

🛠️ (frame_image, frame_info) = get_file_image(file_id, timestamp)

↩️ frame_image: 비디오 이미지를 나타내는 numpy 배열.

· 픽셀 형식이 "BGR"인 경우, 이미지의 형태는 (height, width, 3)입니다.

↩️ frame_info: 비디오 이미지 정보를 담은 딕셔너리.

· frame_info['timestamp']: Unix 타임스탬프.

· frame_info['timestamp_msec']: 밀리초 단위 타임스탬프.

· frame_info['message']: 에러 메시지.

위에서 설명한 것과 동일하게 비디오 출력 설정을 변경할 수 있습니다.

playback = vmspy.playback()
if not playback.init(address, port, access_id, access_pw):
    print(playback.get_error())

playback.set_image_size(720, 480)
playback.set_pixel_format("BGR")
(frame_image, frame_info) = playback.get_file_image(29513186, 1770790997)

 

연속된 저장비디오 파일 이미지 가져오기

파일 ID, 시간 정보, 초 단위의 간격을 지정하여 저장비디오 파일의 이미지 시리즈를 얻을 수 있습니다.

파일 ID와 타임스탬프는 `utils.get_file_list()` 함수로 얻을 수 있습니다.

간격(interval)을 0으로 설정하면 전체 프레임 모드가 됩니다.

🛠️ ret = start_file(file_id, timestamp, interval=sec)

↩️ ret: 성공 시 True, 실패 시 False.

시작 후, 지정된 간격마다 연속된 프레임을 받을 수 있습니다:

🛠️ (frame_image, frame_info) = get_frame()

↩️ frame_image: 비디오 이미지를 나타내는 numpy 배열.

· 픽셀 형식이 "BGR"인 경우, 이미지의 형태는 (height, width, 3)입니다.

↩️ frame_info: 비디오 이미지 정보를 담은 딕셔너리.

· frame_info['timestamp']: Unix 타임스탬프.

· frame_info['timestamp_msec']: 밀리초 단위 타임스탬프.

· frame_info['message']: 에러 메시지.

playback.set_image_size(720, 480)
playback.set_pixel_format("BGR")
playback.start_file(29513186, 1770790997, interval=10) # 매 10초마다

while True:
    (frame_image, frame_info) = playback.get_frame()
    if frame_image.size == 0:
        print(frame_info['message'])
        break
    # 분석 수행

playback.stop()