mjpeg — nagrywanie mjpeg

Moduł mjpeg służy do nagrywania mjpeg. Używaj go do nagrywania długich klipów wideo jako skompresowanych danych obrazu. W przypadku krótkich klipów używaj gif.

Przykład użycia:

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 – rejestrator Mjpeg

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

Tworzy obiekt Mjpeg, do którego można dodawać ramki.

path to ścieżka w systemie plików, pod którą zostanie zapisane nagranie mjpeg.

width to rozdzielczość pozioma pliku mjpeg. Domyślnie przyjmuje szerokość głównego framebuffera, gdy nie jest określona.

height to rozdzielczość pionowa pliku mjpeg. Domyślnie przyjmuje wysokość głównego framebuffera, gdy nie jest określona.

is_closed() bool

Zwraca True, jeśli plik został zamknięty. Do zamkniętego pliku nie można już zapisywać danych.

width() int

Zwraca rozdzielczość poziomą pliku mjpeg.

height() int

Zwraca rozdzielczość pionową pliku mjpeg.

count() int

Zwraca liczbę ramek zapisanych do pliku mjpeg.

size() int

Zwraca rozmiar pliku mjpeg w bajtach.

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

Dołącza image do nagrania mjpeg. Obraz jest automatycznie skalowany z zachowaniem proporcji do rozdzielczości określonej podczas tworzenia pliku. Akceptowany jest dowolny format obrazu; ta metoda w razie potrzeby dekompresuje, skaluje/konwertuje i ponownie kompresuje.

roi to krotka prostokąta obszaru zainteresowania (ROI) (x, y, w, h) obrazu image do skopiowania. Domyślnie obejmuje cały obraz.

rgb_channel to kanał RGB (0=R, 1=G, 2=B) do wyodrębnienia ze źródłowego obrazu RGB565 i wyrenderowania w skali szarości. -1 (domyślnie) wyłącza wyodrębnianie kanału.

alpha (0-255) kontroluje, jaka część obrazu źródłowego zostanie wmieszana w obraz docelowy. 255 oznacza nieprzezroczystość; niższe wartości mieszają z czarnym tłem; 0 daje czarną ramkę.

color_palette to wyliczenie palety kolorów (np. image.PALETTE_RAINBOW) lub 256-pikselowy obraz RGB565 używany jako tablica przeglądowa kolorów na podstawie wartości skali szarości obrazu źródłowego. Stosowane po wyodrębnieniu rgb_channel.

alpha_palette to 256-pikselowy obraz w skali szarości używany jako tablica przeglądowa alfa modulująca alpha dla każdego piksela źródłowego na podstawie jego wartości skali szarości. 255 oznacza nieprzezroczystość; 0 przezroczystość. Stosowane po wyodrębnieniu rgb_channel.

hint to logiczne LUB:

quality (0-100) to jakość kompresji JPEG używana dla źródłowych obrazów innych niż 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 dla Mjpeg.add_frame().

sync() None

Zrzuca plik mjpeg na dysk, pozostawiając go otwartym do dalszych zapisów. Wywołuj okresowo, aby zapewnić zapisanie danych.

close() None

Finalizuje nagranie mjpeg. Musi zostać wywołane po zakończeniu nagrywania, aby plik był możliwy do odtworzenia.