mjpeg — mjpeg 녹화

mjpeg 모듈은 mjpeg 녹화에 사용됩니다. 긴 비디오 클립을 압축된 이미지 데이터로 녹화할 때 사용하십시오. 짧은 클립에는 gif를 사용하십시오.

사용 예시:

import csi
import mjpeg
import time

# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000)

# Create the mjpeg object.
m = mjpeg.Mjpeg("example.mjpeg")

# Record for 20 seconds.
start = time.ticks_ms()
while time.ticks_diff(time.ticks_ms(), start) < 20000:
    m.add_frame(csi0.snapshot())

# Finalize.
m.close()

class Mjpeg – Mjpeg 레코더

class mjpeg.Mjpeg(path: str, width: int | None = None, height: int | None = None)

프레임을 추가할 수 있는 Mjpeg 객체를 생성합니다.

path는 mjpeg 녹화를 저장할 파일 시스템 경로입니다.

width는 mjpeg 파일의 수평 해상도입니다. 지정하지 않으면 메인 프레임버퍼 너비가 기본값으로 사용됩니다.

height는 mjpeg 파일의 수직 해상도입니다. 지정하지 않으면 메인 프레임버퍼 높이가 기본값으로 사용됩니다.

is_closed() bool

파일이 닫혔으면 True를 반환합니다. 닫힌 파일에는 더 이상 데이터를 쓸 수 없습니다.

width() int

mjpeg 파일의 수평 해상도를 반환합니다.

height() int

mjpeg 파일의 수직 해상도를 반환합니다.

count() int

mjpeg 파일에 기록된 프레임 수를 반환합니다.

size() int

mjpeg 파일의 크기(바이트)를 반환합니다.

add_frame(image: image.Image, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0, quality: int = 90) None

image를 mjpeg 녹화에 추가합니다. 이미지는 종횡비를 유지하면서 파일 생성 시 지정된 해상도로 자동 스케일링됩니다. 모든 이미지 형식이 허용되며, 이 메서드는 필요에 따라 압축 해제, 스케일링/변환, 재압축을 수행합니다.

roi는 복사할 image의 관심 영역 사각형 튜플 (x, y, w, h)입니다. 기본값은 전체 이미지입니다.

rgb_channel은 RGB565 소스 이미지에서 추출하여 그레이스케일로 렌더링할 RGB 채널(0=R, 1=G, 2=B)입니다. -1(기본값)은 채널 추출을 비활성화합니다.

alpha(0-255)는 소스 이미지를 대상에 얼마나 많이 블렌딩할지를 제어합니다. 255는 불투명이고, 낮은 값은 검은색 배경과 블렌딩되며, 0은 검은 프레임이 됩니다.

color_palette는 색상 팔레트 열거형(예: image.PALETTE_RAINBOW)이거나, 소스 이미지의 그레이스케일 값에 대한 색상 조회 테이블로 사용되는 256픽셀 RGB565 이미지입니다. rgb_channel 추출 후에 적용됩니다.

alpha_palette는 그레이스케일 값을 기반으로 소스 픽셀별로 alpha를 변조하는 알파 조회 테이블로 사용되는 256픽셀 그레이스케일 이미지입니다. 255는 불투명이고 0은 투명입니다. rgb_channel 추출 후에 적용됩니다.

hint는 다음의 논리 OR입니다:

quality(0-100)는 JPEG가 아닌 소스 이미지에 사용되는 JPEG 압축 품질입니다.

write(image: image.Image, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0, quality: int = 90) None

Mjpeg.add_frame()의 별칭입니다.

sync() None

mjpeg 파일을 디스크에 플러시하면서 추가 쓰기를 위해 계속 열어 둡니다. 데이터가 저장되도록 주기적으로 호출하십시오.

close() None

mjpeg 녹화를 마무리합니다. 파일을 볼 수 있도록 하려면 녹화가 완료된 후 한 번 호출해야 합니다.