mjpeg — gravação mjpeg

O módulo mjpeg é utilizado para gravação de vídeo no formato mjpeg. Use-o para gravar clipes de vídeo longos como dados de imagem comprimidos. Use gif para clipes curtos.

Exemplo de utilização:

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()

classe Mjpeg – gravador Mjpeg

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

Cria um objeto Mjpeg ao qual pode adicionar fotogramas.

path é o caminho no sistema de ficheiros onde a gravação mjpeg será guardada.

width é a resolução horizontal do ficheiro mjpeg. Por omissão, utiliza a largura do framebuffer principal quando não especificado.

height é a resolução vertical do ficheiro mjpeg. Por omissão, utiliza a altura do framebuffer principal quando não especificado.

is_closed() bool

Devolve True se o ficheiro foi fechado. Não é possível escrever mais dados num ficheiro fechado.

width() int

Devolve a resolução horizontal do ficheiro mjpeg.

height() int

Devolve a resolução vertical do ficheiro mjpeg.

count() int

Devolve o número de fotogramas escritos no ficheiro mjpeg.

size() int

Devolve o tamanho do ficheiro mjpeg em 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

Acrescenta image à gravação mjpeg. A imagem é automaticamente redimensionada preservando a proporção para a resolução especificada na criação do ficheiro. É aceite qualquer formato de imagem; este método descomprime, redimensiona/converte e recomprime conforme necessário.

roi é o tuplo retângulo de região de interesse (x, y, w, h) de image a copiar. Por omissão, corresponde à imagem inteira.

rgb_channel é o canal RGB (0=R, 1=G, 2=B) a extrair de uma imagem fonte RGB565 e renderizar em escala de cinzentos. -1 (predefinição) desativa a extração de canal.

alpha (0-255) controla a quantidade da imagem fonte a misturar no destino. 255 é opaco; valores inferiores misturam com um fundo preto; 0 resulta num fotograma preto.

color_palette é uma enumeração de paleta de cores (p. ex. image.PALETTE_RAINBOW) ou uma imagem RGB565 de 256 pixels usada como tabela de consulta de cores aplicada ao valor em escala de cinzentos da imagem fonte. Aplicada após a extração de rgb_channel.

alpha_palette é uma imagem em escala de cinzentos de 256 pixels usada como tabela de consulta de alfa que modula alpha por pixel fonte com base no seu valor em escala de cinzentos. 255 é opaco; 0 é transparente. Aplicada após a extração de rgb_channel.

hint é um OR lógico de:

quality (0-100) é a qualidade de compressão JPEG utilizada para imagens fonte não 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 para Mjpeg.add_frame().

sync() None

Descarrega o ficheiro mjpeg para disco mantendo-o aberto para mais escritas. Chame periodicamente para garantir que os dados são guardados.

close() None

Finaliza a gravação mjpeg. Deve ser chamado uma vez quando a gravação estiver concluída para tornar o ficheiro visualizável.