Un script Python qui surveille le flux vidéo d'OBS pour détecter des problèmes (flux gelé, faible débit) et change automatiquement les scènes en fonction de l'état du flux.
A Python script that monitors OBS video streams to detect issues (frozen stream, low bitrate) and automatically switches scenes based on the stream's status.
- Détection des scènes gelées via le WebSocket d'OBS (v5+).
- Nouveau : Surveillance du débit (bitrate) du stream.
- Changement automatique de scène vers une scène "BRB" si un problème est détecté, et retour automatique à la scène principale lorsque le problème est résolu.
- Endpoints API pour démarrer (
/start) et arrêter (/stop) le stream OBS. - Endpoint API (
/health) pour vérifier l'état de la connexion au WebSocket d'OBS. - Configuration simplifiée via un fichier
.env. - Serveur web robuste (Waitress) prêt pour une utilisation en production.
- Detects frozen scenes using OBS WebSocket (v5+).
- New: Monitors the stream's bitrate.
- Automatically switches to a "BRB" scene if an issue is detected, and automatically returns to the main scene when the issue is resolved.
- API endpoints to start (
/start) and stop (/stop) the OBS stream. - API endpoint (
/health) to check the connection status to the OBS WebSocket. - Simplified configuration via a
.envfile. - Robust, production-ready web server (Waitress).
- Python 3.
- OBS avec WebSocket v5+ activé.
- (C'est généralement inclus par défaut dans les versions récentes d'OBS. Allez dans
Outils->Paramètres du WebSocketpour l'activer et définir un mot de passe).
- (C'est généralement inclus par défaut dans les versions récentes d'OBS. Allez dans
- Les modules Python listés dans
requirements.txt.
- Python 3.
- OBS with WebSocket v5+ enabled.
- (This is usually included by default in recent OBS versions. Go to
Tools->WebSocket Settingsto enable it and set a password).
- (This is usually included by default in recent OBS versions. Go to
- The Python modules listed in
requirements.txt.
- Clonez ce dépôt ou téléchargez
app.py,requirements.txtet créez un fichier.env. - Installez les dépendances :
pip install -r requirements.txt
- Créez un fichier
.envà la racine du projet (vous pouvez copier/renommer le fichier.env.examples'il existe) et remplissez-le avec vos informations :# Configuration de l'application APP_PORT=5987 # Configuration OBS WebSocket OBS_HOST=127.0.0.1 OBS_PORT=4455 OBS_PASSWORD=votremotdepasseobs # Noms des scènes et sources BRB_SCENE=BRB MAIN_SCENE=MAIN CAMERA_SOURCE_NAME=Flux # Seuil de débit en Kbps BITRATE_THRESHOLD=1000
- Assurez-vous que les scènes (
BRB_SCENE,MAIN_SCENE) et la source média (CAMERA_SOURCE_NAME) existent dans votre OBS. - Lancez le script Python :
python app.py
- OPTIONNEL : Si vous souhaitez utiliser le serveur à distance, ouvrez le port
APP_PORTsur votre pare-feu.
- Clone this repository or download
app.py,requirements.txt, and create a.envfile. - Install the dependencies:
pip install -r requirements.txt
- Create a
.envfile in the project root (you can copy/rename an.env.examplefile if one exists) and fill it with your information:# Application Config APP_PORT=5987 # OBS WebSocket Config OBS_HOST=127.0.0.1 OBS_PORT=4455 OBS_PASSWORD=yourobs_password # Scene and Source Names BRB_SCENE=BRB MAIN_SCENE=MAIN CAMERA_SOURCE_NAME=Flux # Bitrate threshold in Kbps BITRATE_THRESHOLD=1000
- Ensure the scenes (
BRB_SCENE,MAIN_SCENE) and the media source (CAMERA_SOURCE_NAME) exist in your OBS. - Run the Python script:
python app.py
- OPTIONAL: If you want to use the server remotely, open the
APP_PORTin your firewall.
flask
obs-websocket-py
python-dotenv
waitresspython app.pyLe serveur se lancera sur http://0.0.0.0:5987 (ou le port défini dans votre .env)
GET http://<server-ip>:<port>/startGET http://<server-ip>:<port>/stopVérifie si le script peut se connecter à OBS WebSocket.
GET http://<server-ip>:<port>/healthRéponse (Succès) :
{
"status": "ok",
"message": "Connecté à OBS WebSocket."
}Réponse (Erreur) :
{
"status": "error",
"message": "Déconnecté d'OBS: [Raison de l'erreur]"
}