2016-04-06 9 views
2

Ich lese ein dynamicly m3u8 HLS Playlist erzeugt von ffmpegoutputing HLS m3u8 Segment TS PHP-FPM Nginx

im Grunde die Datei aussehen

#EXTM3U 
#EXT-X-VERSION:3 
#EXT-X-TARGETDURATION:11 
#EXT-X-MEDIA-SEQUENCE:3 
#EXTINF:11.000000, 
2_3.ts 
#EXTINF:8.000000, 
2_4.ts 
#EXTINF:11.000000, 
2_5.ts 
#EXTINF:11.000000, 
2_6.ts 
#EXTINF:8.000000, 
2_7.ts 
#EXTINF:11.000000, 
2_8.ts 

Ich versuche, einen Weg zu finden, zu begrenzen, die Verbindung zu einer einzelnen Verbindung. Ich habe eine Tabelle namens Anschluss: es die Stream-ID + Benutzer-ID speichern + DATE_START & date_end & Status

Sobald ein Benutzer beobachten den Strom begann es neue Daten hinzufügen: Beispiel

(StreamID : (2) , userID : (3) , Date_Start : Now() , Date_end : Null , status : ON) 

, sobald er die geschlossen Anschluss ich möchte die date_end mit Now() & Status

Environnement auf OFF aktualisieren: Nginx, PHP-FPM & FFmpeg

i the register_shutdown_function('shutdown') bin mit dem letzten Update schreiben

aber das Problem ist, wenn die Playlist des Shutdown gespielt wird oft Duo der m3u8 enthält sechs Segmente ausgeführt, die jeweils einige Sekunden die Abschaltung oft wieder ausgeführt wird (Duo die Chunk-Liste aktualisiert), während ich noch nicht die Verbindung geschlossen habe.

Ich suche einen Weg, um die Playlist zu handhaben als eine Verbindung keeped werden, so dass die Funktion Abschaltung wird nur dann ausgeführt, wenn der Client die Verbindung abbrechen und nicht während der Playlist

Grüße

Antwort

0

neu geladen worden Selbst wenn Sie eine einzelne dauerhafte Verbindung verwenden, wird das PHP-Skript für jede Wiedergabelistenanforderung ausgeführt, und wie Sie bemerkt haben, wird die registrierte Abschaltfunktion an jedem Ende des Laufs aufgerufen.

Statt Date_end sofort die Aktualisierung zusammen mit den Benutzern und Stream-IDs, die HTTP-Anfragen protokollieren und in regelmäßigen Abständen die Statistik berechnen. Z.B. Wenn eine Wiedergabeliste nicht für T Zeit neu geladen wurde, ist es eine neue Ansichtssitzung.

Auch ich weiß nicht, wie Sie den Überblick über den Benutzer-ID zu halten ist, aber denken Sie daran, dass die Player-Software wird wahrscheinlich nicht eine Sitzung erhalten und die Daten werden nicht über Anfragen gespeichert werden. Sie könnten Tracking-Variablen in den Playlist- und Segment-URLs hinzufügen.

Dies funktioniert nur für Live-Wiedergabelisten, weil für VOD die Wiedergabeliste nur einmal geladen wird.

Wenn Sie einen Web-basierten Player verwenden, können Sie hoffentlich den Benutzer auf der Client-Seite über einige Rückrufe verfolgen können.

+0

Salut aergistral, halte ich tatsächlich die Benutzer-ID Benutzer Statistiken zu halten, wenn Ende & doppelte Verbindung, ich nicht genau verstehen, was meinst du mit: „Wenn eine Wiedergabeliste nicht für T Zeit neu geladen wurde betrachten, es ist eine neue Ansicht session“ Ich kann keinen guten Weg finden, das zu lösen – Krasic

+0

hier ist ein Beispiel für die Ausgabe (Typ + PID + Zeit + Segment), http://pastebin.com/9mkuNjDz – Krasic

+0

Wenn Sie mehrere gleichzeitige Benutzer haben, die die gleiche Wiedergabeliste gleichzeitig anfordern Zeit woher weißt du welches ist was? Sie benötigen eine Möglichkeit, jede Anfrage/jeden Benutzer zu verfolgen. Wenn die Wiedergabeliste für eine längere Zeit als "TARGETDURATION" angefragt wird, können Sie davon ausgehen, dass die Sitzung beendet wurde, und Sie müssen das "Date_end" mit dem Zeitpunkt der letzten Anfrage aktualisieren. – aergistal