Note

Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.

  • Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.

👉 Prêt à explorer et à créer avec nous ? Cliquez [Ici] et rejoignez-nous aujourd’hui !

3.1.2 Module Vidéo

Introduction

En plus de prendre des photos, le module caméra peut également être utilisé pour enregistrer des vidéos.

Composants nécessaires

Dans ce projet, nous avons besoin des composants suivants.

../_images/3.3.2_photograph_list.png

Il est certainement pratique d’acheter un kit complet, voici le lien :

Nom

ARTICLES DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DU COMPOSANT

LIEN D’ACHAT

Module de Caméra

ACHETER

Procédures expérimentales

Étape 1 : Accédez au bureau du Raspberry Pi. Vous aurez peut-être besoin d’un écran pour une meilleure expérience, référez-vous à : Connecter votre Raspberry Pi. Ou accédez au bureau du Raspberry Pi à distance, pour un tutoriel détaillé veuillez consulter Bureau à distance.

Étape 2 : Ouvrez un Terminal et accédez au dossier du code.

cd ~/raphael-kit/python-pi5

Étape 3 : Exécutez.

sudo python3 3.1.2_VideoModule_zero.py

Exécutez le code pour commencer l’enregistrement. Appuyez sur Ctrl+C pour terminer l’enregistrement. Nommez la vidéo my_video.h264 et enregistrez-la dans le répertoire ~.

Note

Vous pouvez également ouvrir 3.1.2_PhotographModule_zero.py dans le chemin ~/raphael-kit/python-pi5 avec un IDE Python, cliquer sur le bouton Exécuter pour exécuter et arrêter le code avec le bouton Stop.

Si vous souhaitez envoyer des photos vers votre PC, veuillez vous référer à Logiciel FileZilla.

Avertissement

Si vous recevez le message d’erreur RuntimeError: Cannot determine SOC peripheral base address, veuillez consulter Si « gpiozero » ne fonctionne pas.

Code

#!/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

Explication du Code

  1. Importe les bibliothèques et les classes nécessaires. La bibliothèque picamera2 est utilisée pour le contrôle de la caméra, H264Encoder pour l’encodage vidéo, et FfmpegOutput pour définir le fichier de sortie vidéo.

    #!/usr/bin/env python3
    
    import time
    from picamera2 import Picamera2, Preview
    from picamera2.encoders import H264Encoder
    from picamera2.outputs import FfmpegOutput
    import os
    
  2. Récupère le nom de connexion de l’utilisateur actuel et le chemin de son répertoire personnel.

    # 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}')
    
  3. Crée une instance de la classe Picamera2 et récupère la configuration de prévisualisation par défaut.

    # Create a Picamera2 instance
    camera = Picamera2()
    # Retrieve the default preview configuration
    preview_config = camera.preview_configuration
    
  4. Définit la taille et le format de la prévisualisation de la caméra. La taille est définie à 800x600 pixels, et le format est défini à XRGB8888.

    try:
        # Configure preview size and format
        preview_config.size = (800, 600)
        preview_config.format = 'XRGB8888'
    
  5. Démarre la prévisualisation de la caméra en mode QTGL, un mode de prévisualisation graphique.

    try:
        ...
    
        # Start the camera preview in QTGL mode
        camera.start_preview(Preview.QTGL)
    
        ...
    
  6. Définit la configuration vidéo avec une taille de cadre de 800x600 pixels et un taux de trame de 40 images par seconde.

    try:
        ...
    
        # 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)
    
        ...
    
  7. Crée un encodeur vidéo avec un débit binaire spécifié de 10 Mbps, utilisant le format d’encodage H.264. Définit le chemin du fichier de sortie pour la vidéo, en l’enregistrant sous my_video.mp4 dans le répertoire personnel de l’utilisateur.

    try:
        ...
    
        # 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')
    
        ...
    
  8. Configure la caméra avec les paramètres vidéo définis, commence l’enregistrement en utilisant l’encodeur et le fichier de sortie spécifiés, enregistre pendant 10 secondes, puis arrête l’enregistrement.

    try:
        ...
    
        # 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()
    
  9. Ce bloc de code gère une interruption clavier (comme Ctrl+C) en arrêtant la prévisualisation de la caméra. L’instruction pass est utilisée pour gérer l’exception sans rien faire d’autre.

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