Mit diesem Plugin kann man Aufnahmen und andere Filme ganz einfach über den Streamserver schauen und diese Steuern. Weiterhin bringt die Benutzung des integrierten Reverse-Proxies einen Geschwindigkeitsvorteil, wenn man per HLS in langsamen Netzen streamed (bspw. über das Internet).
Um Aufnahmen/Filmen per Browser, abzuspielen einfach im Web-Interface unter "Filme" auf den Play-Button klicken.
Im Moment muss man noch manuell libsss-segment installieren. Ab dem nächsten Update liegt diese aber auch auf dem DMM-Feed.
Da eine alte Version von StreamServerSeek auf dem Feed liegt, sollte man nach der Installation folgenden Befehl ausführen, damit eine Version aus diesem Thread bei einer System-Aktualisierung nicht überschrieben wird:
apt-mark hold enigma2-plugin-extensions-streamserverseek
Um das später wieder rückgängig zu machen und Versionen über den Feed zu aktualisieren:
apt-mark unhold enigma2-plugin-extensions-streamserverseek
Zum Streamen von Aufnahmen/Filmen in einem anderen beliebigen Clients ruft man nicht mehr den Streamserver direkt auf, sondern http://[IP]/streamserverseek/stream/[PROTOCOL][FILENAME]
PROTOCOL ist dabei entweder "rtsp" oder "hls". [FILENAME] entspricht dem Pfad zum Film.
Möchte man also bspw. den Film /media/hdd/movie/dateiname.ts per RTSP streamen, ist die Url: http://[IP]/streamserverseek/stream/rtsp/media/hdd/movie/dateiname.ts
Wenn man direkt zu einer bestimmten Minute springen, hängt man an die URL einfach "?min=X" an. Wobei X der gewünschten Minute entspricht.
Möchte man also bspw. den Film /media/hdd/movie/MeinFilm.mkv per HLS streamen und direkt zu Minute 30 springen, ist die Url: http://[IP]/streamserverseek/stream/hls/media/hdd/movie/MeinFilm.mkv?min=30
Analog dazu kann direkt in den Web-Player springen, indem man http://[IP]/streamserverseek/stream/player/media/hdd/movie/MeinFilm.mkv aufruft. Am einfachsten ist es, den gewünschten Film einfach in der Standard Film-Liste unter http://[IP]/#!/movies/list/filter// zu starten. Der Play-Button startet automatisch Dreambox TV und spielt den gewünschten Film ab.
Ein über /streamserverseek/stream/hls/... oder /streamserverseek/stream/player/... gestarteter Film läuft automatisch über den integrierten Reverse-Proxy!
StreamServerSeek kann leider aktuell nur Aufnahmen (.ts Dateien) im Hintergrund abspielen. Um auch .avi/.mkv/usw. im Hintergrund über den Streamserver streamen zu können, fehlt noch eine Funktionalität im enigma2-core. Einen Feature Request dafür habe ich erstellt Mit gstreamer decodete Filme an encoder - aber ob und wann dieser umgesetzt wird, ist ungewiss. Trotzdem können solche Filme mit StreamServerSeek abgespielt werden:
In StreamServerSeek ist ein "temporärer Live-Mode" enthalten, der die Server-Box temporär aus dem Idle aufweckt, den Film startet und im Anschluss wieder in den Idle wechselt. StreamServerSeek achtet dabei darauf, dass der normale Betrieb der Box durch den temporären Live-Mode nicht gestört wird. D.h. das Abspielen solcher Filme funktioniert nur, wenn die Box gerade im Idle ist. Außerdem wird der temporäre Live-Mode sofort beendet, wenn jemand an der Server-Box manuell den Service wechselt, oder diese in Idle versetzt. Andernfalls wird der Film bis zum Ende gespielt und danach automatisch der temporäre Live-Mode beendet und die Box wieder in den Idle geschickt. Auch wenn 30 Sekunden lang keine Clients mehr mit dem Streamserver verbunden sind, wird der temporäre Live-Mode automatisch beendet und die Box wieder in Idle versetzt.
Während des temporären Live-Modes wird HDMI-CEC deaktiviert. Der TV sollte also nicht automatisch mit angehen!
StreamServerSeek erkennt automatisch, ob es sich um eine Aufnahme oder um einen Film handelt, für den der temporäre Live-Mode erforderlich ist. Handelt es sich lediglich um eine Aufnahme (.ts Datei), dann kann diese im Hintergrund gestreamed werden und die Box somit während dessen normal benutzt werden.
Der Reverse-Proxy kann auch zum Streamen von normalen TV-Kanälen benutzt werden. Hierzu benutzt man statt http://[IP]:8080/stream.m3u8?ref=... einfach die URL http://[IP]/streamserverseek/proxy/stream.m3u8?ref=...
Um den Stream zu steuern, stellt StreamServerSeek neben der normalen Seek-Bar im Web-Player sowie anderen HLS-Clients ein Web-Interface und eine Web-API bereit.
Das Web-Interface befindet sich unter http://[IP]/streamserverseek/ und enthält (noch) nur einen Slider zum Ändern der PlayPosition.
Die Web-API, die unter http://[IP]/streamserverseek/web/[FUNKTION]?[PARAMETER] zu finden ist, stellt deutlich mehr Funktionen bereit:
-
getinfo
- Liefert state (0 = INACTIVE, 1=BACKGROUND, 2=LIVE), statetext, servicename, servicereference, moviepath, pausable, seekable, length, playposition
- Parameter:
- unit (optional): "min" oder "sec"
-
getlength
- Länge der Aufnahme
- Parameter:
- unit (optional): "min" oder "sec"
-
getplayposition
- Aktuelle Position in der Aufnahme
- Parameter:
- unit (optional): "min" oder "sec"
-
pause
- Pausiert die Wiedergabe
-
unpause
- Startet die Wiedergabe
-
play
- Macht das gleiche wie "unpause"
-
seekto
- Springt zu einer absoluten Position
- Parameter:
- pos: Position, zu der gesprungen werden soll
- unit (optional): "min" oder "sec"
-
seekrelative
- Springt relativ zur aktuellen Position vor oder zurück.
- Parameter:
- pos: Position, zu der gesprungen werden soll. Ein negativer Wert führt zu einem Rückwärtssprung.
- unit (optional): "min" oder "sec"
-
seekchapter
- Springt zu einem bestimmten Chapter
- Parameter:
- number: Nummer des Chapters
-
fastforward
- Spult vor
- Parameter:
- speed: Geschwindigkeits-Multiplikator
- fastbackward
- Spult zurück
- Parameter:
- speed: Geschwindigkeits-Multiplikator
-
slowmotion
- Spielt die Aufnahme langsamer ab
- Parameter:
- speed: Geschwindigkeits-Multiplikator
Beispiele:
- Zu Minute 60 springen
- [IP]/streamserverseek/web/seekto?unit=min&pos=60
- 5 Minuten vorwärts springen
- [IP]/streamserverseek/web/seekrelative?unit=min&pos=5
- Video pausieren
- [IP]/streamserverseek/web/pause
- Länge in Sekunden ausgeben
- [IP]/streamserverseek/web/getlength?unit=sec
- Aktuelle Position in Minuten
- [IP]/streamserverseek/web/getplayposition?unit=min
- Mit fünffacher Geschwindigkeit vorspulen
- [IP]/streamserverseek/web/fastforward?speed=5
- Video wieder normal abspielen
- [IP]/streamserverseek/web/unpause oder [IP]/streamserverseek/web/play
Damit die Api-Funktionen manuell im Browser aufgerufen werden können, müssen folgende Einstellungen unter Einstellungen -> Netzwerk -> Webinterface auf "aus" gestellt werden:
- Einfache Anti-Hijack Maßnahmen
- Token-basierte Sicherheit
Das sollte man aber nur machen, wenn das Webinterface definitiv nicht von außen zu erreichen ist. Zur Sicherheit im internen Netzwerk sollte man dann evtl. über ein Passwort für das Webinterface nachdenken. Wenn ich dazu komme, erstelle ich noch eine einfache Weboberfläche, damit die Api auch ohne die Deaktivierung der Sicherheits-Funktionen im Browser benutzbar ist.