Edit:
Da ich nur in einem Raum Kabelanschluß habe, war das Anschauen von digitalen FTA Kanälen auf einem 2ten
TV in einem anderen Raum bisher nur möglich mit Hilfe einer analogen Funkübertragung, aber mit den üblichen
Komforteinbussen.
Glücklicherweise sieht's mit der Netzwerkverkabelung besser aus - die ist in jedem Raum verfügbar .
Edit:
Deshalb hab ich mir ne 2te Box (Sagem Kabel) zugelegt, die das Anzeigen des Live-Programm übernehmen soll.
Nun leider bietet die Tuxbox-Software bisher nicht die Möglichkeit eine DBox als Live-Streaming Client für ne andere
DBox zu benutzen.
Aber dem ließ sich ja abhelfen ...
Habe zu diesem Thema den movieplayer modifiziert und eine erste Version mit folgendem Lösungsansatz erstellt:
Der Zugriff auf die Live-Daten erfolgt über die grab Schnittselle am Port 31339 (streamts) der "Server-DBox" mittels
eines per popen() gestarteten "wget -O - ..." auf der Client-DBox.
Im movieplayer werden diese Daten in eine speziellen Puffer eingelesen aus dem dann ein weiterer Thread
paralell die Daten abholt und an das DVR device weitergibt ...
Damit nun der Movieplayer weiß, welche PIDs (welchen Kanal) er streamen soll, wurde das TS Fileplayback
aufgebohrt -> Neben "plain" TS Files können nun auch spezielle Files (erkennbar durch ein magic am File-Anfang)
benutzt werden, deren Inhalt den gewünschten Server sowie die PIDs genauer spezifiziert, d.h sie entält Daten mit
denen der wget-Aufruf zur Laufzeit entsprechend zusammengestellt wird.
Also nach dem "Probing" des Input-Files wird die entsprechende Zugriffsstrategie gewählt - entweder Lesen aus
der Datei direkt oder Lesen von der popen() Pipe. Dies läßt sich mit der gleichen "Engine" lösen, da nach
dem Öffnen der Quelle das Füllen und Auslesen des Puffers in gleicher Weise erfolgen kann (macht die Sache
auch übersichtlicher).
Leider mußte der TS Fileplayback Teil im movieplayer stark umgestrickt werden, da sowohl das Füllen als auch
das Auslesen des Puffers in zwei separaten Threads mit entsprechender Synchronisation erfolgt, damit
ruckelfreies Abspielen gewährleistet ist. In diesem Zusamenhang hab ich auch erstmal das PES Abspielen abge-
zwackt.
Beim Abspielen von "plain" TS Files hat sich aber im Prinzip nix geändert, bis auf die FF und REW Funktionalität,
die noch nicht wieder implementiert ist. Pause und Springen gehen aber.
Beim Live.-Streaming sind natürlich Pause und Springen nicht möglich.
Da im Original movieplayer die Auswahl von Audiospuren ein recht neues Feature ist, hab ich das auch noch nicht
integriert ...
Für das Livestreaming wird im Normalfall nun für jeden Kanal ein entspr. File angelegt, so daß das "Zappen" über die
Home-Taste und dem Filebrowser wie üblich funktioniert. Diese Funktionalität geht dato heute schon prima
ohne Ruckeln.
Zusätzlich sollte auch das Zappen per Up/Down-Taste funktionieren, da alternativ zu je einem File pro Kanal auch
nur ein File mit einer Liste aller zu streamenden Kanäle verwendet werden kann...
Leider gibt's damit aber noch einige Probleme.
Trotzdem, die Infrastruktur dafür ist schon mal vorbereitet, was dann auch später genauso verwendet werden kann
zum Verarbeiten von "Playlisten", d.h. Files die selbst eine Liste von zu spielenden TS-Files enthalten, wobei auch
hier die Navigation per Up/down möglich wäre, bzw. das "nahtlose" Abspielen von mehreren TS-Files hintereinander ohne
Benutzereingriff.
Insgesamt hab ich aber ein paar Sachen noch nicht optimal im Griff. So reicht es für einen Kanalwechsel (Zappen)
nicht, daß ich ein neues wget nur mit anderen PIDs aufsetzte, sondern ich muß vorher auf der Server-DBox via
HTTP-Interface ein "zapto?..." auf den entspr. Kanal machen. Logisch ist das ja nur, wenn ein Kanal in einem
anderen Transponder liegt, aber bei gleichem Transponder sollte dies nicht nötig sein -> wer weiß dazu was ?
Folge davon: die Reaktion auf das "zapto?..." benötigt ein wenig Zeit, so daß der neue Kanal auf der Client-DBox
erst mehrer Sekunden verzögert gewechselt werden kann, jedenfalls laß ich den Client mit "sleep(2)" ein
wenig warten, bevor er mit dem neuen wget grab beginnt.
Oder kann ich gefahrlos sofort nach dem "zapto?..." ein grab aufsetzen ohne das die Server-DBox ins
Straucheln gerät ?
Nun, das war's erstmal was ich grob vorstellen wollte. Vielleicht hat jemand ja Interesse daran. Deshalb hier
auch die Sourcen (movieplayer.cpp/.h) für diejenigen, die sich das mal genauer anschauen wollen:
http://lvempeg.sourceforge.net/test/movieplayer-new.tar
Achso, so sollte eine Streaming File aussehen:
Code: Alles auswählen
#DBOXSTREAM X1=wget -q -O - http://192.168.xxx.xxx:31339/;0x100;0x101;0x1002300a1
der Server-DBox verwendet wird, also mit "wget .../control/zapto?0x1002300a1".
... und wichtig jede Zeile mit '\n' abgeschlossen.
oh je, fällt mir noch ein -> das zapto ist noch hardverdrahtet im Source. Aber das mach ich noch im Laufe
des Tages ...
- GMo -