Moteur Ultra-Performance

Oryon StreamCore

Oryon StreamCore est un moteur de diffusion asynchrone propriétaire écrit en pure Rust, conçu pour remplacer l'infrastructure standard MediaMTX. Il permet une ingestion multi-protocoles ultra-rapide avec un routage intelligent à latence ultra-faible pour vos productions esport de niveau professionnel.

Pourquoi StreamCore ?

Contrairement aux serveurs classiques, StreamCore allie la puissance d'un serveur asynchrone natif à une passerelle UDP dynamique capable de décoder les handshakes SRT à la volée, de déclencher des transcodeurs FFmpeg éphémères et de gérer automatiquement la mémoire via un Janitor asynchrone.

Architecture Technique

StreamCore combine plusieurs modules pour orchestrer la réception et la redistribution de vos flux vidéo :

Pipeline de Routage Oryon StreamCore

Découvrez comment vos flux passent de la source au spectateur de manière transparente :

1. Gateway SRT
UDP:9000. Réception du flux, extraction dynamique de la clé via handshake.
2. Relay Engine
FFmpeg asynchrone. Conversion instantanée et injection directe vers le Core.
3. Xiu Core
Rust Engine. Routage RTMP (1935), génération HLS (8888) et REST API (9997).

Les fonctionnalités clés :

  • Passerelle Ingest SRT Native (Port 9000) : Écoute en UDP, gère le multiplexage des paquets SRT et alloue dynamiquement des ports internes libres.
  • Relais FFmpeg asynchrones et éphémères : Instancie automatiquement un processus de transcodage léger pour chaque flux SRT entrant, convertissant le conteneur en FLV pour le router vers l'injecteur RTMP.
  • Janitor de Nettoyage Automatique : Scanne activement l'état des sessions toutes les 10 secondes et met fin de manière agressive aux processus FFmpeg zombies et aux sessions inactives après 45 secondes de silence.
  • Serveur Xiu RTMP & HLS : Distribue les flux RTMP et compile à la volée les fichiers HLS (index manifestes `.m3u8` et segments `.ts`).

1 Pré-requis d'Installation

Pour faire tourner Oryon StreamCore en production, votre machine (serveur Ubuntu 22.04 LTS ou supérieur recommandé) doit posséder les paquets fondamentaux suivants :

1. Outils Système & Transcodage :

Assurez-vous d'avoir FFmpeg pour la conversion de flux et curl pour les tests de télémétrie.

Copier
sudo apt update
sudo apt install -y ffmpeg curl nodejs npm

2. Gestionnaire de processus PM2 :

PM2 permet de lancer le serveur en arrière-plan et de le redémarrer automatiquement en cas de crash ou de reboot de la machine.

Copier
sudo npm install -g pm2

2 Déploiement du Service

Suivez les étapes ci-dessous pour déployer et activer le moteur StreamCore sur votre serveur distant.

1. Installation du Binaire

Téléchargez et donnez les droits d'exécution au binaire compilé de StreamCore :

Copier
# Téléchargement du binaire
wget -O oryon-streamcore https://oryonstudio.fr/downloads/oryon-streamcore

# Attribution des permissions d'exécution
chmod +x oryon-streamcore

2. Démarrage avec PM2

Enregistrez le binaire dans le gestionnaire PM2 pour activer la surveillance :

Copier
pm2 start ./oryon-streamcore --name "oryon-streamcore"
pm2 save
Lancement réussi

Une fois lancé, StreamCore ouvre instantanément ses ports d'écoute : 9000 (SRT Ingest), 1935 (RTMP Ingest), 8888 (HLS Port) et 9997 (REST Telemetry API).

3 Nginx Reverse Proxy

Pour assurer la distribution sécurisée et compatible CORS de vos flux HLS vers l'application Electron et le web, configurez votre serveur Nginx avec le bloc suivant :

Copier
server {
    listen 80;
    server_name votre-domaine.com;

    # Ingest / Telemetry Proxy
    location /api/mtx/ {
        proxy_pass http://127.0.0.1:9997/;
    }

    # HLS Stream Delivery with CORS
    location /live-hls/ {
        rewrite ^/live-hls/(.*) /$1 break;
        proxy_pass http://127.0.0.1:8888;
        proxy_set_header Host $host;

        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
        
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Max-Age' 1728000;
            return 204;
        }
    }
}

Configuration dans OBS : Ingestion SRT

Le protocole SRT est idéal pour l'ingestion mobile ou les connexions hautement instables.

  1. Dans OBS, ouvrez les Paramètres -> Flux.
  2. Sélectionnez le service **Personnalisé**.
  3. Dans la case **Serveur**, renseignez l'URL suivante :
    Copier
    srt://IP_DU_VPS:9000?streamid=publish:live/VOTRE_CLE
  4. Laissez la case **Clé de flux** entièrement **vide**.
  5. Cliquez sur **Appliquer** et lancez le streaming !
Important : Format du StreamID

Oryon StreamCore extrait la clé de stream du paramètre streamid. Il doit impérativement commencer par le préfixe publish:live/ (par exemple : publish:live/kaiser_4834).

Configuration dans OBS : Ingestion RTMP

Le protocole RTMP est le standard classique, reconnu par tous les encodeurs.

  1. Dans OBS, ouvrez les **Paramètres** -> **Flux**.
  2. Sélectionnez le service **Personnalisé**.
  3. Dans la case **Serveur**, entrez :
    Copier
    rtmp://IP_DU_VPS:1935/live
  4. Dans la case **Clé de flux**, entrez votre clé unique de stream (par exemple : kaiser_4834).
  5. Enregistrez et lancez votre live !

REST Télémétrie & API

StreamCore possède son propre serveur API REST ultra-léger (port 9997) pour monitorer l'état des flux et la santé du serveur en temps réel.

1. Liste des flux actifs :

Retourne l'ensemble des clés de streams en cours de diffusion sur la passerelle.

Copier
GET http://IP_DU_VPS:9997/v3/paths/list

Exemple de réponse :

Copier
{
  "items": [
    {
      "name": "kaiser_4834",
      "source": { "type": "rtmpConn" },
      "readers": [],
      "tracks": ["video", "audio"]
    }
  ]
}

2. Métriques Système (CPU & RAM) :

Renvoie les données hardware du serveur (pourcentage CPU, Uptime de la machine et RAM).

Copier
GET http://IP_DU_VPS:9997/v3/metrics

Exemple de réponse :

Copier
{
  "cpu_usage_pct": 8.42,
  "ram_total_gb": 16.0,
  "ram_used_gb": 3.14,
  "server_name": "Oryon StreamCore Primary",
  "uptime_secs": 86400
}