Bien sûr, je peux vous aider à créer un petit code Python dans le domaine du streaming. Voici un exemple de script qui utilise des bibliothèques comme `socket` pour créer un serveur de streaming vidéo en direct. Ce code est écrit avec un ton « jeune homme passionné par l’innovation ».
« `python
import socket
import cv2
import numpy as np
from datetime import datetime
def start_streaming(host=’0.0.0.0′, port=5000):
« » »
Démarre un serveur de streaming vidéo en direct.
« » »
# Création du serveur socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
server_socket.listen(1)
print(f »Serveur de streaming démarré sur {host}:{port} »)
# Acceptation de la connexion client
client_socket, addr = server_socket.accept()
print(f »Connexion établie avec {addr} »)
# Configuration de la caméra
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print(« Erreur : Impossible d’ouvrir la caméra. »)
return
while True:
# Capture d’un frame
ret, frame = cap.read()
if not ret:
print(« Erreur : Impossible de lire le frame. »)
break
# Encodage du frame en JPEG
encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 90]
result, encoded_image = cv2.imencode(‘.jpg’, frame, encode_param)
if not result:
print(« Erreur : Impossible d’encoder le frame. »)
break
# Ajout de l’heure à chaque frame
time_str = datetime.now().strftime(« %Y-%m-%d %H:%M:%S »)
cv2.putText(frame, time_str, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Envoi du frame au client
client_socket.sendall(encoded_image.tobytes())
# Attente de 30 ms avant de capturer le prochain frame
cv2.waitKey(30)
# Fermeture des sockets et de la caméra
cap.release()
client_socket.close()
server_socket.close()
if __name__ == « __main__ »:
print(« Début du streaming vidéo en direct… »)
start_streaming()
« `
Explication du code
1. Importation des bibliothèques : Nous utilisons `socket` pour la communication réseau, `cv2` pour la capture et le traitement vidéo, et `numpy` pour les opérations mathématiques sur les matrices.
2. Fonction `start_streaming` : Cette fonction configure et démarre le serveur de streaming. Elle accepte les paramètres `host` et `port` pour spécifier l’adresse IP et le port sur lesquels le serveur doit écouter.
3. Création du serveur socket : Le serveur socket est créé et lié à l’adresse IP et au port spécifiés. Il commence ensuite à écouter les connexions entrantes.
4. Acceptation de la connexion client : Lorsqu’un client se connecte, le serveur accepte la connexion et enregistre les informations de l’adresse du client.
5. Configuration de la caméra : La caméra est initialisée avec `cv2.VideoCapture(0)`. Si la caméra ne peut pas être ouverte, un message d’erreur est affiché.
6. Boucle de streaming : Le serveur entre dans une boucle où il capture chaque frame de la caméra, l’encode en JPEG, ajoute l’heure actuelle à chaque frame, et envoie le frame encodé au client. La boucle attend 30 ms avant de capturer le prochain frame pour maintenir une fréquence d’images raisonnable.
7. Fermeture des ressources : Lorsque la boucle se termine (par exemple, en cas d’erreur ou de fermeture manuelle), les ressources de la caméra et des sockets sont libérées.
Ton
Le code est écrit avec un ton « jeune homme passionné par l’innovation », en mettant l’accent sur la simplicité et l’efficacité du code, tout en expliquant chaque étape de manière claire et concise.