mjpeg — mjpeg-Aufnahme

Das Modul mjpeg wird für mjpeg-Aufnahmen verwendet. Damit lassen sich lange Videoclips als komprimierte Bilddaten aufzeichnen. Verwenden Sie gif für kurze Clips.

Anwendungsbeispiel:

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-Recorder

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

Erstellt ein Mjpeg-Objekt, dem Sie Einzelbilder hinzufügen können.

path ist der Dateisystempfad, unter dem die mjpeg-Aufnahme gespeichert wird.

width ist die horizontale Auflösung der mjpeg-Datei. Standardmäßig die Breite des Haupt-Framebuffers, wenn nicht angegeben.

height ist die vertikale Auflösung der mjpeg-Datei. Standardmäßig die Höhe des Haupt-Framebuffers, wenn nicht angegeben.

is_closed() bool

Gibt True zurück, wenn die Datei geschlossen wurde. In eine geschlossene Datei können keine weiteren Daten geschrieben werden.

width() int

Gibt die horizontale Auflösung der mjpeg-Datei zurück.

height() int

Gibt die vertikale Auflösung der mjpeg-Datei zurück.

count() int

Gibt die Anzahl der in die mjpeg-Datei geschriebenen Einzelbilder zurück.

size() int

Gibt die Größe der mjpeg-Datei in Bytes zurück.

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

Hängt image an die mjpeg-Aufnahme an. Das Bild wird unter Beibehaltung des Seitenverhältnisses automatisch auf die beim Erstellen der Datei angegebene Auflösung skaliert. Jedes Bildformat wird akzeptiert; diese Methode dekomprimiert, skaliert/konvertiert und komprimiert das Bild nach Bedarf erneut.

roi ist das Rechteck-Tupel (x, y, w, h) des Interessensbereichs (ROI) von image, das kopiert werden soll. Standardmäßig das gesamte Bild.

rgb_channel ist der RGB-Kanal (0=R, 1=G, 2=B), der aus einem RGB565-Quellbild extrahiert und in Graustufen gerendert werden soll. -1 (Standard) deaktiviert die Kanalextraktion.

alpha (0-255) steuert, wie viel des Quellbilds in das Zielbild eingeblendet wird. 255 ist deckend; niedrigere Werte mischen das Bild mit einem schwarzen Hintergrund; 0 ergibt ein schwarzes Einzelbild.

color_palette ist entweder ein Farbpaletten-Enum (z. B. image.PALETTE_RAINBOW) oder ein 256-Pixel-RGB565-Bild, das als Farb-Lookup-Tabelle auf den Graustufenwert des Quellbilds angewendet wird. Wird nach der rgb_channel-Extraktion angewendet.

alpha_palette ist ein 256-Pixel-Graustufenbild, das als Alpha-Lookup-Tabelle verwendet wird und alpha pro Quellpixel anhand seines Graustufenwerts moduliert. 255 ist deckend; 0 ist transparent. Wird nach der rgb_channel-Extraktion angewendet.

hint ist eine logische ODER-Verknüpfung von:

quality (0-100) ist die JPEG-Kompressionsqualität, die für Nicht-JPEG-Quellbilder verwendet wird.

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

Alias für Mjpeg.add_frame().

sync() None

Schreibt die mjpeg-Datei auf den Datenträger, hält sie aber für weitere Schreibvorgänge geöffnet. Rufen Sie dies regelmäßig auf, um sicherzustellen, dass die Daten gespeichert werden.

close() None

Schließt die mjpeg-Aufnahme ab. Muss nach Abschluss der Aufnahme einmal aufgerufen werden, damit die Datei abspielbar wird.