mjpeg — mjpeg-inspelning

Modulen mjpeg används för mjpeg-inspelning. Använd den för att spela in långa videoklipp som komprimerad bilddata. Använd gif för korta klipp.

Exempelanvändning:

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

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

Skapa ett Mjpeg-objekt som du kan lägga till bildrutor i.

path är filsystemssökvägen att spara mjpeg-inspelningen till.

width är mjpeg-filens horisontella upplösning. Standardvärdet är huvudbildbuffertens bredd när det inte anges.

height är mjpeg-filens vertikala upplösning. Standardvärdet är huvudbildbuffertens höjd när det inte anges.

is_closed() bool

Returnerar True om filen har stängts. Ingen mer data kan skrivas till en stängd fil.

width() int

Returnerar mjpeg-filens horisontella upplösning.

height() int

Returnerar mjpeg-filens vertikala upplösning.

count() int

Returnerar antalet bildrutor som skrivits till mjpeg-filen.

size() int

Returnerar mjpeg-filens storlek i byte.

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

Lägg till image i mjpeg-inspelningen. Bilden skalas automatiskt med bibehållet bildförhållande till den upplösning som angavs när filen skapades. Alla bildformat accepteras; denna metod dekomprimerar, skalar/konverterar och komprimerar om efter behov.

roi är intresseområdets rektangeltupel (x, y, w, h) i image som ska kopieras. Standardvärdet är hela bilden.

rgb_channel är den RGB-kanal (0=R, 1=G, 2=B) som ska extraheras från en RGB565-källbild och renderas i gråskala. -1 (standard) inaktiverar kanalextrahering.

alpha (0-255) styr hur mycket av källbilden som ska blandas in i destinationen. 255 är ogenomskinlig; lägre värden blandar med en svart bakgrund; 0 resulterar i en svart bildruta.

color_palette är antingen en färgpalett-enum (t.ex. image.PALETTE_RAINBOW) eller en 256-pixlars RGB565-bild som används som en färguppslagstabell på källbildens gråskalevärde. Tillämpas efter rgb_channel-extrahering.

alpha_palette är en 256-pixlars gråskalebild som används som en alfauppslagstabell vilken modulerar alpha per källpixel baserat på dess gråskalevärde. 255 är ogenomskinlig; 0 är transparent. Tillämpas efter rgb_channel-extrahering.

hint är en logisk OR av:

quality (0-100) är den JPEG-komprimeringskvalitet som används för käll­bilder som inte är 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

Alias för Mjpeg.add_frame().

sync() None

Tömmer mjpeg-filen till disk samtidigt som den hålls öppen för fortsatt skrivning. Anropa periodiskt för att säkerställa att data sparas.

close() None

Slutför mjpeg-inspelningen. Måste anropas när inspelningen är klar för att göra filen visningsbar.