mjpeg — grabación mjpeg

El módulo mjpeg se utiliza para la grabación mjpeg. Úsalo para grabar clips de vídeo largos como datos de imagen comprimidos. Usa gif para clips cortos.

Ejemplo de uso:

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

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

Crea un objeto Mjpeg al que puedes añadir fotogramas.

path es la ruta del sistema de archivos donde guardar la grabación mjpeg.

width es la resolución horizontal del archivo mjpeg. Por defecto es el ancho del framebuffer principal cuando no se especifica.

height es la resolución vertical del archivo mjpeg. Por defecto es la altura del framebuffer principal cuando no se especifica.

is_closed() bool

Devuelve True si el archivo se ha cerrado. No se pueden escribir más datos en un archivo cerrado.

width() int

Devuelve la resolución horizontal del archivo mjpeg.

height() int

Devuelve la resolución vertical del archivo mjpeg.

count() int

Devuelve el número de fotogramas escritos en el archivo mjpeg.

size() int

Devuelve el tamaño del archivo mjpeg en bytes.

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

Añade image a la grabación mjpeg. La imagen se escala automáticamente conservando la relación de aspecto a la resolución especificada al crear el archivo. Se acepta cualquier formato de imagen; este método descomprime, escala/convierte y vuelve a comprimir según sea necesario.

roi es la tupla del rectángulo de región de interés (x, y, w, h) de image que se va a copiar. Por defecto es la imagen completa.

rgb_channel es el canal RGB (0=R, 1=G, 2=B) a extraer de una imagen de origen RGB565 y renderizar en escala de grises. -1 (por defecto) deshabilita la extracción de canal.

alpha (0-255) controla cuánto de la imagen de origen se mezcla con el destino. 255 es opaco; los valores más bajos se mezclan con un fondo negro; 0 da como resultado un fotograma negro.

color_palette es un enum de paleta de colores (p. ej. image.PALETTE_RAINBOW) o una imagen RGB565 de 256 píxeles usada como tabla de consulta de color sobre el valor en escala de grises de la imagen de origen. Se aplica después de la extracción de rgb_channel.

alpha_palette es una imagen en escala de grises de 256 píxeles usada como tabla de consulta de alfa que modula alpha por cada píxel de origen según su valor en escala de grises. 255 es opaco; 0 es transparente. Se aplica después de la extracción de rgb_channel.

hint es un OR lógico de:

quality (0-100) es la calidad de compresión JPEG usada para imágenes de origen que no sean 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 de Mjpeg.add_frame().

sync() None

Vuelca el archivo mjpeg al disco manteniéndolo abierto para escrituras posteriores. Llámalo periódicamente para asegurar que los datos se guarden.

close() None

Finaliza la grabación mjpeg. Debe llamarse una vez completada la grabación para que el archivo se pueda visualizar.