.. note:: Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci l'esplorazione del Raspberry Pi, Arduino ed ESP32 con altri appassionati. **Perché unirti a noi?** - **Supporto esperto**: Risolvi i problemi post-vendita e le sfide tecniche con l'aiuto della nostra comunità e del nostro team. - **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Accedi in anteprima agli annunci di nuovi prodotti e alle anticipazioni esclusive. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni e omaggi festivi**: Partecipa a omaggi e promozioni speciali durante le festività. 👉 Sei pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso! .. _3.1.2_py: 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 avremo bisogno dei seguenti componenti. .. image:: ../img/photo1.png :width: 800 È sicuramente conveniente acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - ELEMENTI IN QUESTO KIT - LINK * - Kit Raphael - 337 - |link_Raphael_kit| Puoi anche acquistarli separatamente dai link sottostanti. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUZIONE AI COMPONENTI - LINK PER L'ACQUISTO * - :ref:`cpn_camera_module` - |link_camera_buy| Procedura sperimentale ------------------------------ **Passo 1:** Accedi al desktop del Raspberry Pi. Potresti aver bisogno di uno schermo per un'esperienza migliore, fai riferimento a: `Collega il tuo Raspberry Pi `_. Oppure accedi al desktop del Raspberry Pi da remoto, per un tutorial dettagliato fai riferimento a :ref:`remote_desktop`. **Passo 2:** Apri un terminale e accedi alla cartella del codice. .. code-block:: cd ~/raphael-kit/python/ **Passo 3:** Esegui. .. code-block:: sudo python3 3.1.2_VideoModule.py Esegui il codice per avviare la registrazione. Premi ``Ctrl+C`` per terminare la registrazione. Assegna al video il nome ``my_video.h264`` e memorizzalo nella directory ``~``. .. note:: Puoi anche aprire ``3.1.2_PhotographModule.py`` nel percorso ``~/raphael-kit/python/`` con un IDE Python, clicca sul pulsante Run per eseguire e sul pulsante Stop per fermare il codice. Se desideri inviare le foto al tuo PC, fai riferimento a :ref:`filezilla`. **Codice** .. 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 **Spiegazione del Codice** #. 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. .. 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 #. Recupera il nome utente corrente e il percorso della sua directory home. .. code-block:: python # Ottieni il nome utente corrente user = os.getlogin() # Ottieni il percorso della directory home dell'utente user_home = os.path.expanduser(f'~{user}') #. Crea un'istanza della classe ``Picamera2`` e recupera la configurazione predefinita dell’anteprima. .. code-block:: python # Crea un'istanza di Picamera2 camera = Picamera2() # Recupera la configurazione di anteprima predefinita preview_config = camera.preview_configuration #. Imposta la dimensione e il formato dell’anteprima della fotocamera. La dimensione viene impostata a 800x600 pixel e il formato a ``XRGB8888``. .. code-block:: python try: # Configura dimensioni e formato dell’anteprima preview_config.size = (800, 600) preview_config.format = 'XRGB8888' #. Avvia l’anteprima della fotocamera in modalità QTGL, una modalità grafica di anteprima. .. code-block:: python try: ... # Avvia l’anteprima della fotocamera in modalità QTGL camera.start_preview(Preview.QTGL) ... #. Definisce la configurazione video con una dimensione di 800x600 pixel e una frequenza di 40 fotogrammi al secondo. .. code-block:: python try: ... # Definisci la configurazione video con dimensioni, frame rate e numero di 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 di 10 Mbps usando il formato di codifica H.264. Imposta il percorso del file di output salvandolo come ``my_video.mp4`` nella directory home dell’utente. .. code-block:: python try: ... # Crea un codificatore video con un bitrate specifico encoder = H264Encoder(bitrate=10000000) # Definisci il file di output del video output = FfmpegOutput(f'{user_home}/my_video.mp4') ... #. Configura la fotocamera con le impostazioni video definite, avvia la registrazione usando il codificatore e il file di output specificati, registra per 10 secondi e poi interrompe la registrazione. .. code-block:: python 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() #. 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 eseguire altre azioni. .. code-block:: python except KeyboardInterrupt: # Ferma l’anteprima della fotocamera in caso di interruzione (es. Ctrl+C) camera.stop_preview() pass