Nota

¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto con otros entusiastas.

¿Por qué unirse?

  • Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Preestrenos exclusivos: Accede anticipadamente a anuncios de nuevos productos y adelantos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones festivas y sorteos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

3.1.2 Módulo de Video

Introducción

Además de tomar fotos, el módulo de cámara también puede usarse para grabar videos.

Componentes Requeridos

En este proyecto, necesitamos los siguientes componentes.

../_images/3.3.2_photograph_list.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Raphael Kit

337

Raphael Kit

También puedes comprarlos por separado en los siguientes enlaces.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Módulo de Cámara

COMPRAR

Procedimientos Experimentales

Paso 1: Entra en el escritorio de Raspberry Pi. Puede que necesites una pantalla para una mejor experiencia, consulta: Conecta tu Raspberry Pi. O accede al escritorio de Raspberry Pi de forma remota, para un tutorial detallado, consulta Escritorio Remoto.

Paso 2: Abre una terminal y accede a la carpeta del código.

cd ~/raphael-kit/python-pi5

Paso 3: Ejecuta.

sudo python3 3.1.2_VideoModule_zero.py

Ejecuta el código para comenzar a grabar. Presiona Ctrl+C para finalizar la grabación. Nombra el video my_video.h264 y guárdalo en el directorio ~.

Nota

También puedes abrir 3.1.2_PhotographModule_zero.py en la ruta ~/raphael-kit/python-pi5 con un IDE de Python, haz clic en el botón de ejecutar para iniciar y detén el código con el botón de detener.

Si deseas enviar fotos a tu PC, consulta Software FileZilla.

Advertencia

Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.

Código

#!/usr/bin/env python3

import time
from picamera2 import Picamera2, Preview
from picamera2.encoders import H264Encoder
from picamera2.outputs import FfmpegOutput
import os

# Obtener el nombre de usuario actual
user = os.getlogin()
# Obtener la ruta del directorio home del usuario
user_home = os.path.expanduser(f'~{user}')

# Crear una instancia de Picamera2
camera = Picamera2()
# Recuperar la configuración de vista previa predeterminada
preview_config = camera.preview_configuration

try:
    # Configurar tamaño y formato de vista previa
    preview_config.size = (800, 600)
    preview_config.format = 'XRGB8888'
    # Iniciar la vista previa de la cámara en modo QTGL
    camera.start_preview(Preview.QTGL)

    # Definir configuración de video con tamaño, velocidad de fotogramas y recuento de búfer
    conf = {'size': (800, 600)}
    controls = {'FrameRate': 40}
    config = camera.create_video_configuration(main=conf, controls=controls, buffer_count=12)
    # Crear un codificador de video con una tasa de bits especificada
    encoder = H264Encoder(bitrate=10000000)
    # Definir el archivo de salida para el video
    output = FfmpegOutput(f'{user_home}/my_video.mp4')
    # Configurar e iniciar la grabación
    camera.configure(config)
    camera.start_recording(encoder, output)
    # Grabar durante 10 segundos
    time.sleep(10)
    # Detener la grabación
    camera.stop_recording()

except KeyboardInterrupt:
    # Detener la vista previa de la cámara si ocurre una interrupción de teclado (e.g., Ctrl+C)
    camera.stop_preview()
    pass

Explicación del Código

  1. Importa las bibliotecas y clases necesarias. La biblioteca picamera2 se usa para el control de la cámara, H264Encoder para la codificación de video, y FfmpegOutput para definir el archivo de salida del video.

    #!/usr/bin/env python3
    
    import time
    from picamera2 import Picamera2, Preview
    from picamera2.encoders import H264Encoder
    from picamera2.outputs import FfmpegOutput
    import os
    
  2. Recupera el nombre de usuario actual y la ruta a su directorio home.

    # Obtener el nombre de usuario actual
    user = os.getlogin()
    # Obtener la ruta del directorio home del usuario
    user_home = os.path.expanduser(f'~{user}')
    
  3. Crea una instancia de la clase Picamera2 y recupera la configuración de vista previa predeterminada.

    # Crear una instancia de Picamera2
    camera = Picamera2()
    # Recuperar la configuración de vista previa predeterminada
    preview_config = camera.preview_configuration
    
  4. Establece el tamaño y formato de la vista previa de la cámara. El tamaño se establece en 800x600 píxeles, y el formato se establece en XRGB8888.

    try:
        # Configurar tamaño y formato de vista previa
        preview_config.size = (800, 600)
        preview_config.format = 'XRGB8888'
    
  5. Inicia la vista previa de la cámara en modo QTGL, un modo de vista previa gráfica.

    try:
        ...
    
        # Iniciar la vista previa de la cámara en modo QTGL
        camera.start_preview(Preview.QTGL)
    
        ...
    
  6. Define la configuración del video con un tamaño de cuadro de 800x600 píxeles y una velocidad de fotogramas de 40 cuadros por segundo.

    try:
        ...
    
        # Definir configuración de video con tamaño, velocidad de fotogramas y recuento de búfer
        conf = {'size': (800, 600)}
        controls = {'FrameRate': 40}
        config = camera.create_video_configuration(main=conf, controls=controls, buffer_count=12)
    
        ...
    
  7. Crea un codificador de video con una tasa de bits especificada de 10 Mbps, usando el formato de codificación H.264. Configura la ruta del archivo de salida para el video, guardándolo como my_video.mp4 en el directorio home del usuario.

    try:
        ...
    
        # Crear un codificador de video con una tasa de bits especificada
        encoder = H264Encoder(bitrate=10000000)
        # Definir el archivo de salida para el video
        output = FfmpegOutput(f'{user_home}/my_video.mp4')
    
        ...
    
  8. Configura la cámara con los ajustes de video definidos, inicia la grabación usando el codificador y el archivo de salida especificados, graba durante 10 segundos y luego detiene la grabación.

    try:
        ...
    
        # Configurar e iniciar la grabación
        camera.configure(config)
        camera.start_recording(encoder, output)
        # Grabar durante 10 segundos
        time.sleep(10)
        # Detener la grabación
        camera.stop_recording()
    
  9. Este bloque de código maneja una interrupción de teclado (como Ctrl+C) deteniendo la vista previa de la cámara. La declaración pass se usa para manejar la excepción sin hacer nada más.

    except KeyboardInterrupt:
        # Detener la vista previa de la cámara si ocurre una interrupción de teclado (e.g., Ctrl+C)
        camera.stop_preview()
        pass