2016-07-20 28 views
0

Ich verwende das nginx RTMP-Modul zum Senden von Videostreams. Die Daten werden von entfernten Geräten auf den nginx/RTMP-Server gepusht, die über 3G-Verbindungen verbunden sind, wobei wir pro übertragenem MB bezahlen, so dass es in meinem Interesse liegt, Video nur dann in den Server zu streamen, wenn es Zuhörer/Spieler gibt.Auslösen eines Ereignisses in nginx, wenn eine Verbindung zum RTMP-Modul hergestellt oder unterbrochen wird

(Leider, für diejenigen, die nicht mit RTMP vertraut sind, "schluckt" der Server immer Daten, auch wenn es keine Zuhörer gibt, die den Livestream anschauen).

Ich habe einen Weg gefunden, Streaming in den Nginx/RTMP-Server zu starten, so kann ich die Daten über 3G (einfache Umleitung von Web-Link zu rtmp Link, kein Problem), aber ich kann keinen zuverlässigen Weg zu erkennen finden Wenn der RTMP-Client (Player) eine Verbindung beendet, werden die Geräte daran gehindert, in nginx zu streamen.

Also meine Frage ist: gibt es eine Möglichkeit, Nginx (oder seine RTMP-Modul) anweisen, ein Ereignis, ein Signal, erstellen/löschen eine Datei auszulösen, wenn eine Verbindung zu bestimmten RTMP URL gemacht wird? Ich könnte leben, indem ich die Erstellung/Löschung von Dateien über Incron beobachte, also wäre das ganz in Ordnung.

Oder muss ich auf API-Ebene oder noch tiefer in die Quelle gehen?

Antwort

0

Hoffe, du hast schon eine Antwort dafür. So oder so würde ich vorschlagen, Header wie exec_publish, exec_record_done, on_play und on_publish Ereignisse in den Richtlinien von https://github.com/arut/nginx-rtmp-module/wiki/Directives

on_publish suchen könnte helfen, den Status zu überprüfen und zulassen oder ablehnen Strom