.. note::
Bonjour, bienvenue dans la communauté des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder sur Facebook ! Explorez en profondeur le 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 grâce à 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 nouvelles annonces de produits et à des aperçus exclusifs.
- **Réductions spéciales** : Bénéficiez de réductions exclusives sur nos derniers produits.
- **Promotions et concours festifs** : Participez à des concours et promotions spéciales pendant les fêtes.
👉 Prêt à explorer et créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui !
.. _py_video:
9. Enregistrer une vidéo
=============================
Cet exemple vous guidera dans l'utilisation de la fonction d'enregistrement.
**Exécuter le code**
.. raw:: html
.. code-block::
cd ~/picar-x/example
sudo python3 9.record_video.py
Après l'exécution du code, vous pouvez entrer ``http://:9000/mjpg`` dans le navigateur pour voir l'écran vidéo, par exemple : ``http://192.168.18.113:9000/mjpg``.
.. image:: img/display.png
L'enregistrement peut être démarré ou arrêté en appuyant sur les touches du clavier.
* Appuyez sur ``q`` pour commencer à enregistrer, mettre en pause ou continuer, ``e`` pour arrêter l'enregistrement ou sauvegarder.
* Si vous souhaitez quitter le programme, appuyez sur ``ctrl+c``.
**Code**
.. code-block:: python
from time import sleep,strftime,localtime
from vilib import Vilib
import readchar
import os
manual = '''
Press keys on keyboard to control recording:
Q: record/pause/continue
E: stop
Ctrl + C: Quit
'''
def print_overwrite(msg, end='', flush=True):
print('\r\033[2K', end='',flush=True)
print(msg, end=end, flush=True)
def main():
rec_flag = 'stop' # start,pause,stop
vname = None
username = os.getlogin()
Vilib.rec_video_set["path"] = f"/home/{username}/Videos/" # set path
Vilib.camera_start(vflip=False,hflip=False)
Vilib.display(local=True,web=True)
sleep(0.8) # wait for startup
print(manual)
while True:
# read keyboard
key = readchar.readkey()
key = key.lower()
# start,pause
if key == 'q':
key = None
if rec_flag == 'stop':
rec_flag = 'start'
# set name
vname = strftime("%Y-%m-%d-%H.%M.%S", localtime())
Vilib.rec_video_set["name"] = vname
# start record
Vilib.rec_video_run()
Vilib.rec_video_start()
print_overwrite('rec start ...')
elif rec_flag == 'start':
rec_flag = 'pause'
Vilib.rec_video_pause()
print_overwrite('pause')
elif rec_flag == 'pause':
rec_flag = 'start'
Vilib.rec_video_start()
print_overwrite('continue')
# stop
elif key == 'e' and rec_flag != 'stop':
key = None
rec_flag = 'stop'
Vilib.rec_video_stop()
print_overwrite("The video saved as %s%s.avi"%(Vilib.rec_video_set["path"],vname),end='\n')
# quit
elif key == readchar.key.CTRL_C:
Vilib.camera_close()
print('\nquit')
break
sleep(0.1)
if __name__ == "__main__":
main()
**Comment ça fonctionne ?**
Les fonctions liées à l'enregistrement incluent les suivantes :
* ``Vilib.rec_video_run(video_name)`` : Lance le thread pour enregistrer la vidéo. ``video_name`` est le nom du fichier vidéo, qui doit être une chaîne de caractères.
* ``Vilib.rec_video_start()`` : Démarrer ou continuer l'enregistrement vidéo.
* ``Vilib.rec_video_pause()`` : Mettre en pause l'enregistrement.
* ``Vilib.rec_video_stop()`` : Arrêter l'enregistrement.
``Vilib.rec_video_set["path"] = f"/home/{username}/Videos/"`` définit l'emplacement de stockage des fichiers vidéo.