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 は 256 ピクセルのグレースケール画像で、ソースピクセルのグレースケール値に基づいてピクセルごとに alpha を変調するアルファルックアップテーブルとして使用されます。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 録画を確定します。ファイルを閲覧可能にするには、録画完了後に一度呼び出す必要があります。