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.