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/photo1.png

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

Nom

ÉLÉMENTS DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

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

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

Module de Caméra

ACHETER

Procédures Expérimentales

Étape 1 : Accédez au bureau de la Raspberry Pi. Vous pouvez avoir besoin d’un écran pour une meilleure expérience, consultez : Connectez votre Raspberry Pi. Ou accédez à distance au bureau Raspberry Pi, 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/

Étape 3 : Exécutez le code.

sudo python3 3.1.2_VideoModule.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 stockez-la dans le répertoire ~.

Note

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

Si vous souhaitez envoyer des photos sur votre PC, veuillez consulter : Logiciel FileZilla.

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 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 d’utilisateur actuel ainsi que le chemin vers son répertoire personnel.

    # Obtenir le nom de connexion de l'utilisateur actuel
    user = os.getlogin()
    # Obtenir le chemin du répertoire personnel de l'utilisateur
    user_home = os.path.expanduser(f'~{user}')
    
  3. Crée une instance de la classe Picamera2 et récupère la configuration d’aperçu par défaut.

    # Créer une instance de Picamera2
    camera = Picamera2()
    # Récupérer la configuration d'aperçu par défaut
    preview_config = camera.preview_configuration
    
  4. Définit la taille et le format de l’aperçu de la caméra. La taille est définie à 800x600 pixels et le format à XRGB8888.

    try:
        # Configurer la taille et le format de l'aperçu
        preview_config.size = (800, 600)
        preview_config.format = 'XRGB8888'
    
  5. Démarre l’aperçu de la caméra en mode QTGL, un mode d’aperçu graphique.

    try:
        ...
    
        # Démarrer l'aperçu de la caméra en mode QTGL
        camera.start_preview(Preview.QTGL)
    
        ...
    
  6. Définit la configuration vidéo avec une résolution de 800x600 pixels et une fréquence de 40 images par seconde.

    try:
        ...
    
        # Définir la configuration vidéo avec taille, fréquence d'image et nombre de tampons
        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 de 10 Mbps en utilisant le format H.264. Définit le chemin du fichier de sortie vidéo, enregistré sous my_video.mp4 dans le répertoire personnel de l’utilisateur.

    try:
        ...
    
        # Créer un encodeur vidéo avec un débit spécifié
        encoder = H264Encoder(bitrate=10000000)
        # Définir le fichier de sortie pour la vidéo
        output = FfmpegOutput(f'{user_home}/my_video.mp4')
    
        ...
    
  8. Configure la caméra avec les paramètres vidéo définis, démarre l’enregistrement avec l’encodeur et le fichier de sortie, enregistre pendant 10 secondes, puis arrête l’enregistrement.

    try:
        ...
    
        # Configurer et démarrer l'enregistrement
        camera.configure(config)
        camera.start_recording(encoder, output)
        # Enregistrer pendant 10 secondes
        time.sleep(10)
        # Arrêter l'enregistrement
        camera.stop_recording()
    
  9. Ce bloc de code gère une interruption clavier (comme Ctrl+C) en arrêtant l’aperçu de la caméra. L’instruction pass permet de traiter l’exception sans effectuer d’action supplémentaire.

    except KeyboardInterrupt:
        # Arrêter l'aperçu de la caméra si une interruption clavier (ex : Ctrl+C) survient
        camera.stop_preview()
        pass