Nota

Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché Unirsi?

  • Supporto Tecnico Esperto: Risolvi i problemi post-vendita e affronta le sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e Condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni festive.

👉 Sei pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!

3.1.2 Modulo Video

Introduzione

Oltre a scattare foto, il Modulo Fotocamera può essere utilizzato anche per registrare video.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/3.3.2_photograph_list.png

È decisamente conveniente acquistare un kit completo, ecco il link:

Nome

COMPONENTI NEL KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Modulo Fotocamera

ACQUISTA

Procedure Sperimentali

Passo 1: Accedi al desktop di Raspberry Pi. Potresti aver bisogno di uno schermo per un’esperienza migliore, fai riferimento a: Collega il tuo Raspberry Pi. Oppure accedi al desktop di Raspberry Pi da remoto, per un tutorial dettagliato consulta Desktop Remoto.

Passo 2: Apri un Terminale e vai nella cartella del codice.

cd ~/raphael-kit/python-pi5

Passo 3: Esegui il comando.

sudo python3 3.1.2_VideoModule_zero.py

Esegui il codice per avviare la registrazione. Premi Ctrl+C per terminare la registrazione. Il video verrà chiamato my_video.h264 e salvato nella directory ~.

Nota

Puoi anche aprire 3.1.2_PhotographModule_zero.py nel percorso ~/raphael-kit/python-pi5 con un IDE Python, fare clic sul pulsante Esegui per avviare e utilizzare il pulsante Stop per interrompere il codice.

Se desideri inviare le foto al tuo PC, fai riferimento a Software FileZilla.

Avvertimento

Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..

Code

#!/usr/bin/env python3

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

# Ottieni il nome dell'utente attualmente connesso
user = os.getlogin()
# Ottieni il percorso della directory home dell'utente
user_home = os.path.expanduser(f'~{user}')

# Crea un'istanza di Picamera2
camera = Picamera2()
# Recupera la configurazione di anteprima predefinita
preview_config = camera.preview_configuration

try:
    # Configura la dimensione e il formato dell'anteprima
    preview_config.size = (800, 600)
    preview_config.format = 'XRGB8888'
    # Avvia l'anteprima della fotocamera in modalità QTGL
    camera.start_preview(Preview.QTGL)

    # Definisci la configurazione video con dimensioni, frame rate e buffer
    conf = {'size': (800, 600)}
    controls = {'FrameRate': 40}
    config = camera.create_video_configuration(main=conf, controls=controls, buffer_count=12)
    # Crea un codificatore video con un bitrate specificato
    encoder = H264Encoder(bitrate=10000000)
    # Definisci il file di output per il video
    output = FfmpegOutput(f'{user_home}/my_video.mp4')
    # Configura e avvia la registrazione
    camera.configure(config)
    camera.start_recording(encoder, output)
    # Registra per 10 secondi
    time.sleep(10)
    # Interrompi la registrazione
    camera.stop_recording()

except KeyboardInterrupt:
    # Interrompe l'anteprima della fotocamera se si verifica un'interruzione da tastiera (ad esempio, Ctrl+C)
    camera.stop_preview()
    pass

Spiegazione del Codice

  1. Importa le librerie e le classi necessarie. La libreria picamera2 viene utilizzata per il controllo della fotocamera, H264Encoder per la codifica video e FfmpegOutput per definire il file di output 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 il nome dell’utente attualmente connesso e il percorso della sua directory home.

    # Ottieni il nome dell'utente attualmente connesso
    user = os.getlogin()
    # Ottieni il percorso della directory home dell'utente
    user_home = os.path.expanduser(f'~{user}')
    
  3. Crea un’istanza della classe Picamera2 e recupera la configurazione di anteprima predefinita.

    # Crea un'istanza di Picamera2
    camera = Picamera2()
    # Recupera la configurazione di anteprima predefinita
    preview_config = camera.preview_configuration
    
  4. Imposta la dimensione e il formato dell’anteprima della fotocamera. La dimensione è impostata su 800x600 pixel e il formato è impostato su XRGB8888.

    try:
        # Configura la dimensione e il formato dell'anteprima
        preview_config.size = (800, 600)
        preview_config.format = 'XRGB8888'
    
  5. Avvia l’anteprima della fotocamera in modalità QTGL, una modalità di anteprima grafica.

    try:
        ...
    
        # Avvia l'anteprima della fotocamera in modalità QTGL
        camera.start_preview(Preview.QTGL)
    
        ...
    
  6. Definisce la configurazione video con una dimensione del frame di 800x600 pixel e un frame rate di 40 fotogrammi al secondo.

    try:
        ...
    
        # Definisci la configurazione video con dimensioni, frame rate e buffer
        conf = {'size': (800, 600)}
        controls = {'FrameRate': 40}
        config = camera.create_video_configuration(main=conf, controls=controls, buffer_count=12)
    
        ...
    
  7. Crea un codificatore video con un bitrate specificato di 10 Mbps, utilizzando il formato di codifica H.264. Configura il percorso del file di output per il video, salvandolo come my_video.mp4 nella directory home dell’utente.

    try:
        ...
    
        # Crea un codificatore video con un bitrate specificato
        encoder = H264Encoder(bitrate=10000000)
        # Definisci il file di output per il video
        output = FfmpegOutput(f'{user_home}/my_video.mp4')
    
        ...
    
  8. Configura la fotocamera con le impostazioni video definite, avvia la registrazione utilizzando il codificatore e il file di output specificato, registra per 10 secondi e poi interrompe la registrazione.

    try:
        ...
    
        # Configura e avvia la registrazione
        camera.configure(config)
        camera.start_recording(encoder, output)
        # Registra per 10 secondi
        time.sleep(10)
        # Interrompi la registrazione
        camera.stop_recording()
    
  9. Questo blocco di codice gestisce un’interruzione da tastiera (come Ctrl+C) interrompendo l’anteprima della fotocamera. L’istruzione pass viene utilizzata per gestire l’eccezione senza fare nulla.

    except KeyboardInterrupt:
        # Interrompe l'anteprima della fotocamera se si verifica un'interruzione da tastiera (ad esempio, Ctrl+C)
        camera.stop_preview()
        pass