Wie streame ich am besten TS ?

Digital Recording
klez
Einsteiger
Einsteiger
Beiträge: 112
Registriert: Sonntag 15. Dezember 2002, 17:43

Wie streame ich am besten TS ?

Beitrag von klez »

Hallo an alle :)

Erstmal ein großes Danke und meinen Respekt an alle Leute die Neutrino, den MoviePlayer und auch die Streaming Tools entwickelt haben. Wirklich erstklassige Arbeit :)

Nun meine 1. Frage:

Ich habe hier zuhause einen etwas älteren Rechner zum Linuxserver gemacht (PII-266) und wollte diesen nun als Videorekorder für die Dbox verwenden. Da ich nur TS Streamen will (eventuelles DVD erstellen mache ich dann auf meinem Haup-PC), wollte ich nun fragen, was dafür die beste Kombination ist.
Ich denke mal das werden sserver und udrec sein.

Auf meinem Server läuft Mandrake 9.2.
Nun noch eine 2te Frage. Könnte mir jemand die entsprechend nötigen Tools irgendwie zukommen lassen ?

Mit Kompilieren habe ich bisher keine großen Erfahrungen gemacht (wenn dann schlechte weil irgendwas nicht durchlief). Das einzige was ich bisher ohne Probleme hinbekommen habe war einen Kernel zu Kompilieren...

Dafür wäre ich euch wirklich SEHR dankbar :)

Mit freundlichen Grüßen
klez
Einsteiger
Einsteiger
Beiträge: 112
Registriert: Sonntag 15. Dezember 2002, 17:43

Beitrag von klez »

Ok.

Hab mich jetzt nochmal hingesetzt und den Compiler installiert.
Nun mein Problem (mit nichts anderem hatte ich gerechnet):

/usr/bin/ld: cannot find -lpthread
collect2: ld returned 1 exit status

Mit der fehlermeldung hört er auf. Ich habe schon versucht /usr/lib in den PAth zu setzen, allerdings ohne Wirkung. Hat da vielleicht jemand einen Tip ?

**update**
Bitte nicht alle auf einmal versuchen zu helfen...

P.S.: Hab Kompiliert bekommen, aber diese alte Version kann noch kein TS Streamen...
sir-zock-a-lot
Einsteiger
Einsteiger
Beiträge: 131
Registriert: Mittwoch 15. Oktober 2003, 16:33

Beitrag von sir-zock-a-lot »

P.S.: Hab Kompiliert bekommen, aber diese alte Version kann noch kein TS Streamen...
Stimmt, aber die neue Version kann das sehr wohl. Die ist zur Zeit nur in einer alpha-Version zu haben, mit der ich aber seit Wochen problemlos streame.

Gruss,
Patrick
klez
Einsteiger
Einsteiger
Beiträge: 112
Registriert: Sonntag 15. Dezember 2002, 17:43

Beitrag von klez »

Die neue Version ist nicht zufällig die 0.11 ?

Diese braucht doch soviel ich weiß das "mono" Runtime Environment um C# Anwendungen unter Linux laufen zu lassen oder ?

Wenn es so ist und ich diese per mono starte; kann ich dann weiterhin den sserver zum starten von der Box aus verwenden ?
tonsel
Erleuchteter
Erleuchteter
Beiträge: 536
Registriert: Freitag 21. September 2001, 00:00

Beitrag von tonsel »

Der sserver ist in udrec 0.11 schon drin.

tonsel
klez
Einsteiger
Einsteiger
Beiträge: 112
Registriert: Sonntag 15. Dezember 2002, 17:43

Beitrag von klez »

Hmm. Eigentlich hat es sich damit schon für mich erledigt, weil mono will ich eigentlich nicht installieren :(
Alleine schon, weil es keine Pakete für Mandrake gibt. Eventuell würden die von RedHat auch funktioneren, aber das habe ich nicht getestet.

Aber EINE Frage hätte ich dann noch. Ich konnte zwar udrec und ggrab letztendlich Kompilieren, aber dafür musste ich aus den Makefiles den Parameter -static bei den Linker Optionen rausnehmen.

Ansonsten taucht der oben genannte Fehler mit: cannot find: -lpthread auf. Weis da jemand rat, wie ich das lösen kann ?
tonsel
Erleuchteter
Erleuchteter
Beiträge: 536
Registriert: Freitag 21. September 2001, 00:00

Beitrag von tonsel »

Keine Angst vorm kompilieren von mono. Ich hab's gestern mit Knoppix-3.4 (c't-Edition) gemacht. Ging relativ problemlos - ich musste nur die libglib-dev nachinstallieren.

tonsel
klez
Einsteiger
Einsteiger
Beiträge: 112
Registriert: Sonntag 15. Dezember 2002, 17:43

Beitrag von klez »

Wenn alle Stricke reissen, dann wird mir auch wohl nichts anderes übrig bleiben, als mono zu installieren / kompilieren.
Finde es schade, daß dafür keine C++ Version geproggt wurde.

Aber nur aus Eigeninteresse (man will ja immer dazu lernen):

1. Habe immernoch das problem mit dem -lpthread (Will das unbedingt noch mit -static hinbekommen, weil mich solche Probleme im Schlaf verfolgen :D)

2. Wäre es denn (theoretisch) auch möglich eine angepasste Version von udrec zu schreiben, die zwar 2 ES grabt, aber ein TS schreibt ?
wwershofen
Einsteiger
Einsteiger
Beiträge: 314
Registriert: Donnerstag 16. Januar 2003, 23:53

Beitrag von wwershofen »

klez hat geschrieben: 2. Wäre es denn (theoretisch) auch möglich eine angepasste Version von udrec zu schreiben, die zwar 2 ES grabt, aber ein TS schreibt ?
Einfach mit der alten udrec streamen und die ES-Streams per projectX und tcmplex in einen TS konvertieren.

Macht die udrec_suite vollautomatisch.
klez hat geschrieben: 1. Habe immernoch das problem mit dem -lpthread (Will das unbedingt noch mit -static hinbekommen, weil mich solche Probleme im Schlaf verfolgen )
Die fehlt die glibc oder Du hast eine zu alte Version davon auf dem Rechner. Such' mal ob Du irgendwo auf Deinem Rechner eine Datei namens libpthread.so.* findest (meistens unter /lib oder /usr/lib).

hth
wolle
Geek by nature - Linux by choice
tonsel
Erleuchteter
Erleuchteter
Beiträge: 536
Registriert: Freitag 21. September 2001, 00:00

Beitrag von tonsel »

Um TS zu streamen muss in udrec.cpp (0.06c) nur Zeile

sprintf(DBox.String, "VIDEO ....

in

sprintf(DBox.String, "VIDEOTS ....

geändert werden. Dann wird immer TS gestreamt.

tonsel
wwershofen
Einsteiger
Einsteiger
Beiträge: 314
Registriert: Donnerstag 16. Januar 2003, 23:53

Beitrag von wwershofen »

tonsel hat geschrieben:Um TS zu streamen muss in udrec.cpp (0.06c) nur Zeile

sprintf(DBox.String, "VIDEO ....

in

sprintf(DBox.String, "VIDEOTS ....

geändert werden. Dann wird immer TS gestreamt.

tonsel
Aber dann kommen immer noch getrennte Streams für Audio und Video bei raus, oder?

Ich bleib bei udrec 0.11 :wink:

cu
wolle
Geek by nature - Linux by choice
klez
Einsteiger
Einsteiger
Beiträge: 112
Registriert: Sonntag 15. Dezember 2002, 17:43

Beitrag von klez »

wwershofen hat geschrieben:Die fehlt die glibc oder Du hast eine zu alte Version davon auf dem Rechner. Such' mal ob Du irgendwo auf Deinem Rechner eine Datei namens libpthread.so.* findest (meistens unter /lib oder /usr/lib).

hth
wolle
Ja die hab ich. Hatte auch schon versucht den Pfad dorthin in den PATH zu setzen, aber solange ich -static im MakeFile lasse kommt immer als Fehler vom Linker:

cannot find: -lpthread


@tonsel:
Wenn das so Simpel ist, dann bräuchte man ja eigentlich nur eben das ändern und dann noch die beiden Streams mit einem simplen Tool muxen. Leider ist mir keins bekannt, welches das kann ausser ProjectX und das brauch wiederrum das Java Environment...
Dann könnte man auch gleich mono installieren und udrec 0.11 verwenden.

Die udrec_suite ist ja prinzipiell nicht schlecht. Nur leider auch ein wenig "overkill" für diejenigen die lediglich den TS Stream auf der Platte brauchen / haben wollen.

Meiner Meinung nach wäre das simpelste Tool eines, welches völlig normal die beiden ES Streams (audio und video) empfängt, diese Intern muxt und den daraus enstehenden TS Stream auf die Platte schreibt. Das hätte gleichzeitig den Vorteil, daß das Image der Box nicht unbedingt den spts_mode unterstützen müsste...
wwershofen
Einsteiger
Einsteiger
Beiträge: 314
Registriert: Donnerstag 16. Januar 2003, 23:53

Beitrag von wwershofen »

klez hat geschrieben:
wwershofen hat geschrieben:Die fehlt die glibc oder Du hast eine zu alte Version davon auf dem Rechner. Such' mal ob Du irgendwo auf Deinem Rechner eine Datei namens libpthread.so.* findest (meistens unter /lib oder /usr/lib).
Ja die hab ich. Hatte auch schon versucht den Pfad dorthin in den PATH zu setzen, aber solange ich -static im MakeFile lasse kommt immer als Fehler vom Linker:
cannot find: -lpthread
Die Libraries haben mit $PATH nix zu tun, die Directories, in denen nach diesen shared-object-Libraries gesucht wird, werden beim compilieren mit dem Flag -I angegeben, also z.B. "-I/usr/lib". Wo steht denn Deine libpthread.so? Eventuell hilft Dir auch ein "man ldconfig" weiter.
klez hat geschrieben: Meiner Meinung nach wäre das simpelste Tool eines, welches völlig normal die beiden ES Streams (audio und video) empfängt, diese Intern muxt und den daraus enstehenden TS Stream auf die Platte schreibt.
Genau das macht udrec 0.11 doch, bzw. es streamt sogar den native TS-Stream, der auch schon gemuxt ist. mono ist wirklich nicht so schlimm zu installieren...
Eine wirklich absolut einfache Alternative für Dich könnte aber auch das TS-Streaming über den http-Port 31339 der Box sein. Einfach

Code: Alles auswählen

wget -O my_stream.ts http://<dbox>:31339/<vpid>,<apid>
und schon wird das laufende Programm in die Datei my_stream.ts gestreamt. Auf diese Weise schaue ich mir z.B. das laufende TV-Programm auf meinem Rechner an. Dazu benutze ich folgendes Script:

Code: Alles auswählen

#!/bin/bash
#
# Watch tv currently played on dBox
# uses: wget and xine
#
# some things, you may want to change:
#-------------------------------------
dBox=dboxII.wershofen.home
tsport=31339
player="xine"
#
# No changes after this should be neccessary
#-------------------------------------------

#
# Function for Hex Conversion
# Returns hexadecimal representation of a decimal number in variable $hex
#
dec2hex ()
{
dec=$1
hex=""
hexdigit=( 0 1 2 3 4 5 6 7 8 9 A B C D E F )
i=1
while [ $dec -ge 16 ]
 do
   mod16=`expr $dec % 16`
   hex=${hexdigit[mod16]}$hex
   dec=`expr $dec / 16`
 done
hex=${hexdigit[dec]}$hex
return 0
}

#
# get current PIDs and translate to hex
#
set `wget -q -O - http://$dBox/control/zapto?getpids`
vpiddec=$1
apiddec=$2
dec2hex $vpiddec
vpidhex=$hex
echo Video: $vpiddec "($vpidhex)"
dec2hex $apiddec
apidhex=$hex
echo Audio: $apiddec "($apidhex)"

#
# Now, let's watch TV !!!
#
xine http://${dBox}:${tsport}/$vpidhex,$apidhex

exit

hth
wolle
klez
Einsteiger
Einsteiger
Beiträge: 112
Registriert: Sonntag 15. Dezember 2002, 17:43

Beitrag von klez »

Danke für das Script wwershofen !
Sieht schonmal interessant aus.

libpthread.so befindet sich bei mir übrigens in /usr/lib
Zu meinem erstaunen hat er mit dynamischen Binden zur Laufzeit ja auch keine Probleme, sondern nur dann, wenn ich -static in dem Makefile belasse und er die Biblopthek statisch in das Kompilierte Endprodukt binden soll. (ich denke mal dafür ist der Parameter -static da)

Der Parameter -I/usr/lib war schonmal ein heisser Tip, aber gebracht hat es leider nichts. Der Fehler kommt immernoch :cry:


P.S.: Hatte meinen Beitrag oben nochmal editiert wegen TS. Der Vorteil der von mir erwähnten On-The-Fly Umwandlung in TS wäre halt, daß das Image auf der Box nicht unbedingt den spts_mode unterstützen müsste.
wwershofen
Einsteiger
Einsteiger
Beiträge: 314
Registriert: Donnerstag 16. Januar 2003, 23:53

Beitrag von wwershofen »

klez hat geschrieben: P.S.: Hatte meinen Beitrag oben nochmal editiert wegen TS. Der Vorteil der von mir erwähnten On-The-Fly Umwandlung in TS wäre halt, daß das Image auf der Box nicht unbedingt den spts_mode unterstützen müsste.
Tja, dann mach' Dich mal an codieren, sowas gibt es nämlich noch nicht.
IMHO macht das aber keinen Sinn, sich damit weiter zu beschäftigen, weil es sehr gut funktionierende Lösungen dafür gibt - entweder direkt per udrec0.11 per TS streamen, das http-Interface nutzen oder udrec_suite zum umwandeln der PES-Streams in TS.

Und außerdem - nicht böse gemeint - wenn Du es schon nicht schaffst, "Standard-Software" zu kompilieren, dann dürfte es Dir auch schwerfallen, eine solch komplexe Anwendung wie einen On-The-Fly-PES-in-TS-Muxer zu schreiben, falls das überhaupt technisch in einem Schritt möglich ist. Somit reduzieren sich Deine Möglichkeiten auf die verfügbaren Tools.

cu
wolle
tonsel
Erleuchteter
Erleuchteter
Beiträge: 536
Registriert: Freitag 21. September 2001, 00:00

Beitrag von tonsel »

Es kommt EIN TS-Stream heraus der abspielbar ist. Dafür kann man dann keine PES mehr streamen.

tonsel
klez
Einsteiger
Einsteiger
Beiträge: 112
Registriert: Sonntag 15. Dezember 2002, 17:43

Beitrag von klez »

@ wwershofen:
Da magst Du sicher recht haben bzgl. Standard-Software. Allerdings hab ich schon unzählige Möglichkeiten durchprobiert wie z.b. diese hier:

http://students.cs.byu.edu/~cs345ta/lab ... _synch.htm

Aber das funktioniert alles nicht. Ich kann es ja kompilieren: Solange ich -static aus den Makefiles nehme. Soll mir recht sein. Ist zwar ein Workaround aber es geht.

Die Möglichkeit von Tonsel werde ich mal ausprobieren. Hört sich interessant an und ist eigentlich alles was ich brauche.

P.S.: Auch wenn es sich wiederspricht: Programmieren kann ich sicher besser als Compiler-Fehler zu beseitigen :) Ob ich ein On-the-Fly encoding hinbekomme weiss ich nicht, aber ich könnte es ja versuchen. Nur leider habe ich immo wegen Studium wenig Zeit dafür.
wwershofen
Einsteiger
Einsteiger
Beiträge: 314
Registriert: Donnerstag 16. Januar 2003, 23:53

Beitrag von wwershofen »

tonsel hat geschrieben:Es kommt EIN TS-Stream heraus der abspielbar ist. Dafür kann man dann keine PES mehr streamen.
Mit allen Audiotracks? Und ohne spts-Mode?

Warum hast Du Dir dann die Mühe gemacht, die 0.11 unter .NET zu programmieren? SCNR :wink:

Naja, ist müßig, die Diskussion. udrec 0.11 läuft solid as a rock, warum sollte man dann wieder einen Schritt zurück gehen... außer vielleicht wegen der Möglichkeit, alle Audiotracks per sserver zu streamen. :) Aber solange gagga die Multi-Audio-Tracks im movieplayer noch nicht unterstützt, ist das auch noch nicht so wirklich zielführend.

@ gagga:
Gibt's bei dem Thema eigentlich schon was Neues?

cu
wolle
tonsel
Erleuchteter
Erleuchteter
Beiträge: 536
Registriert: Freitag 21. September 2001, 00:00

Beitrag von tonsel »

Es geht natürlich nur mit SPTS-Mode.

Als ich das damals probiert habe ging TS-Streaming noch nicht richtig. Die Treiber wurden ja erst geändert nachdem udrec 0.10 fertig war.

tonsel
gagga
Senior Member
Beiträge: 782
Registriert: Dienstag 25. Februar 2003, 21:35

Beitrag von gagga »

wwershofen hat geschrieben: @ gagga:
Gibt's bei dem Thema eigentlich schon was Neues?
So. Bin mal wieder aus dem Urlaub zurück und hoffe, daß ich die Tage mal Zeit finde um an der Baustelle weiterzubasteln.