.. note:: ¡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 [|link_sf_facebook|] y únete hoy mismo. .. _3.1.2_py: 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. .. image:: ../img/photo1.png :width: 800 Es definitivamente conveniente comprar un kit completo, aquí está el enlace: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nombre - ELEMENTOS EN ESTE KIT - ENLACE * - Kit Raphael - 337 - |link_Raphael_kit| También puedes comprarlos por separado en los enlaces a continuación. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCCIÓN DEL COMPONENTE - ENLACE DE COMPRA * - :ref:`cpn_camera_module` - |link_camera_buy| 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 :ref:`remote_desktop`. **Paso 2:** Abre un terminal y accede a la carpeta del código. .. code-block:: cd ~/raphael-kit/python/ **Paso 3:** Ejecuta el código. .. code-block:: 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 ``~``. .. note:: 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 :ref:`filezilla`. .. code-block:: python #!/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** #. 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. .. code-block:: python #!/usr/bin/env python3 import time from picamera2 import Picamera2, Preview from picamera2.encoders import H264Encoder from picamera2.outputs import FfmpegOutput import os #. Obtiene el nombre de inicio de sesión del usuario actual y la ruta a su directorio personal. .. code-block:: python # Obtener el nombre de usuario actual user = os.getlogin() # Obtener la ruta al directorio personal del usuario user_home = os.path.expanduser(f'~{user}') #. Crea una instancia de la clase ``Picamera2`` y recupera la configuración predeterminada de vista previa. .. code-block:: python # Crear una instancia de Picamera2 camera = Picamera2() # Recuperar la configuración predeterminada de la vista previa preview_config = camera.preview_configuration #. 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``. .. code-block:: python try: # Configurar tamaño y formato de la vista previa preview_config.size = (800, 600) preview_config.format = 'XRGB8888' #. Inicia la vista previa de la cámara en modo QTGL, un modo gráfico de visualización. .. code-block:: python try: ... # Iniciar la vista previa en modo QTGL camera.start_preview(Preview.QTGL) ... #. Define la configuración de video con un tamaño de cuadro de 800x600 píxeles y una tasa de 40 fotogramas por segundo. .. code-block:: python 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) ... #. 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. .. code-block:: python 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') ... #. 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. .. code-block:: python 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() #. 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. .. code-block:: python except KeyboardInterrupt: # Detener la vista previa si ocurre un KeyboardInterrupt (ej., Ctrl+C) camera.stop_preview() pass