.. note:: 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 [|link_sf_facebook|] e unisciti oggi stesso! .. _3.1.2_py_pi5: 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. .. image:: ../python_pi5/img/3.3.2_photograph_list.png :width: 800 È decisamente conveniente acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - COMPONENTI NEL KIT - LINK * - Raphael Kit - 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| 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 :ref:`remote_desktop`. **Passo 2:** Apri un Terminale e vai nella cartella del codice. .. code-block:: cd ~/raphael-kit/python-pi5 **Passo 3:** Esegui il comando. .. code-block:: 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 ``~``. .. note:: 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 :ref:`filezilla`. .. warning:: Se viene visualizzato l'errore ``RuntimeError: Cannot determine SOC peripheral base address``, fare riferimento a :ref:`faq_soc`. **Code** .. 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 # 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** #. 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 dell'utente attualmente connesso e il percorso della sua directory home. .. code-block:: python # 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 della classe ``Picamera2`` e recupera la configurazione di anteprima predefinita. .. 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 è impostata su 800x600 pixel e il formato è impostato su ``XRGB8888``. .. code-block:: python 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, una modalità di anteprima grafica. .. code-block:: python try: ... # Avvia l'anteprima della fotocamera in modalità QTGL camera.start_preview(Preview.QTGL) ... #. Definisce la configurazione video con una dimensione del frame di 800x600 pixel e un frame rate di 40 fotogrammi al secondo. .. code-block:: python 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) ... #. 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. .. code-block:: python 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') ... #. 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. .. 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 fare nulla. .. code-block:: python except KeyboardInterrupt: # Interrompe l'anteprima della fotocamera se si verifica un'interruzione da tastiera (ad esempio, Ctrl+C) camera.stop_preview() pass