Nota

¡Hola, bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 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.

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

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

  • Promociones y sorteos festivos: 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 necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/photo1.png

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

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Módulo de Cámara

COMPRAR

Procedimientos experimentales

Paso 1: Accede al 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 un terminal y accede a la carpeta del código.

cd ~/raphael-kit/python/

Paso 3: Ejecuta el código.

sudo python3 3.1.2_VideoModule.py

Ejecuta el código para comenzar la grabación. Presiona Ctrl+C para terminar la grabación. Nombra el video my_video.h264 y almacénalo en el directorio ~.

Nota

También puedes abrir 3.1.2_VideoModule.py en la ruta ~/raphael-kit/python/ con un IDE de Python, hacer clic en el botón de Ejecutar para ejecutar el código y detenerlo con el botón de Detener.

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

#!/usr/bin/env python3

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

# Get the current user's login name
user = os.getlogin()
# Get the path to the user's home directory
user_home = os.path.expanduser(f'~{user}')

# Create a Picamera2 instance
camera = Picamera2()
# Retrieve the default preview configuration
preview_config = camera.preview_configuration

try:
    # Configure preview size and format
    preview_config.size = (800, 600)
    preview_config.format = 'XRGB8888'
    # Start the camera preview in QTGL mode
    camera.start_preview(Preview.QTGL)

    # Define video configuration with size, frame rate, and buffer count
    conf = {'size': (800, 600)}
    controls = {'FrameRate': 40}
    config = camera.create_video_configuration(main=conf, controls=controls, buffer_count=12)
    # Create a video encoder with a specified bitrate
    encoder = H264Encoder(bitrate=10000000)
    # Define output file for the video
    output = FfmpegOutput(f'{user_home}/my_video.mp4')
    # Configure and start recording
    camera.configure(config)
    camera.start_recording(encoder, output)
    # Record for 10 seconds
    time.sleep(10)
    # Stop the recording
    camera.stop_recording()

except KeyboardInterrupt:
    # Stop the camera preview if a KeyboardInterrupt (e.g., Ctrl+C) occurs
    camera.stop_preview()
    pass

Explicación del código

  1. Importa las bibliotecas y clases necesarias. La biblioteca picamera2 se utiliza para controlar 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. Obtiene el nombre de inicio de sesión del usuario actual y la ruta a su directorio personal.

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

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

    try:
        # Configurar tamaño y formato de la 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 gráfico de visualización.

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

    try:
        ...
    
        # Definir configuración de video con tamaño, tasa de fotogramas y número de búferes
        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 de 10 Mbps usando el formato H.264. Define la ruta del archivo de salida, guardándolo como my_video.mp4 en el directorio personal del usuario.

    try:
        ...
    
        # Crear un codificador de video con una tasa de bits específica
        encoder = H264Encoder(bitrate=10000000)
        # Definir archivo de salida del 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, 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 instrucción pass se utiliza para manejar la excepción sin realizar acciones adicionales.

    except KeyboardInterrupt:
        # Detener la vista previa si ocurre un KeyboardInterrupt (ej., Ctrl+C)
        camera.stop_preview()
        pass