Ports

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
jmittelst
Tuxboxer
Tuxboxer
Beiträge: 6044
Registriert: Montag 17. November 2003, 06:48

Ports

Beitrag von jmittelst »

Hallo,
man kann ja diverse Player z.B. mit dem Befehl Player.exe http://box-ip:Portnr/Vpid,Apid starten, die dann einen mehr oder weniger guten Stream von der Box abspielen.
Welche Portadressen stehen hier eigentlich zur Verfügung und wie unterscheiden sich die Streams der unterschiedlichen Portnummern?
Mir ist z.B. aufgefallen, das Winamp auf Port 31338 einen ruckeligen Audiostream vom Radiomodus abgreifen kann, Mplayer vom Port 31337 einen kompletten Videostream mit Audioausgabe während VLC auf Port 31337 nur einen Videostream darstellt.
Was steckt da also hinter?
cu
Jens
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

Beitrag von Npq »

/etc/services

Code: Alles auswählen

# Local services
streamsec       31335/tcp
streamavpes     31336/tcp
streamps        31337/tcp
streampes       31338/tcp
streamts        31339/tcp
udpstreampes    31340/tcp
udpstreampes    31341/udp
/etc/inetd.conf

Code: Alles auswählen

# own services
streamsec       stream  tcp     nowait  root    /sbin/streamsec         streamsec
streamavpes     stream  tcp     nowait  root    /sbin/streamts          streamts -pes
streamps        stream  tcp     nowait  root    /sbin/streamts          streamts -ps
streampes       stream  tcp     nowait  root    /sbin/streampes         streampes
streamts        stream  tcp     nowait  root    /sbin/streamts          streamts -ts
udpstreampes    stream  tcp     nowait  root    /sbin/udpstreampes      udpstreampes
Naja, und die eingetragenen Programme liefern dann auf die GET-Abfrage die PIDs zurück, die man gerne hätte. Steckt also eigentlich nicht viel dahinter.
jmittelst
Tuxboxer
Tuxboxer
Beiträge: 6044
Registriert: Montag 17. November 2003, 06:48

Beitrag von jmittelst »

Danke, das grenzt jetzt mal die Suche etwas ein.
cu
Jens
jmittelst
Tuxboxer
Tuxboxer
Beiträge: 6044
Registriert: Montag 17. November 2003, 06:48

Beitrag von jmittelst »

Grr. - Alle Tests mit VLC negativ. Auf keinem Port liefert die Box Daten, die VLC für Bild und Ton nutzen kann. Winamp empfängt auf Port 31338, aber der Sound ruckelt ohne Ende.
Jemand irgendwelche Tips?
cu
Jens
LazyT
Senior Member
Beiträge: 1260
Registriert: Samstag 6. Oktober 2001, 00:00

Beitrag von LazyT »

IP:31339/0,PMT,VPID,APID1,...,APIDn
jmittelst
Tuxboxer
Tuxboxer
Beiträge: 6044
Registriert: Montag 17. November 2003, 06:48

Beitrag von jmittelst »

@LazyT
Wie bekomme ich die PMT raus?
Gibt es ähnliche Tips auch für andere Ports? Wenn ich Mplayer auf Port 31339 starte, läßt meine Firewall nix durch.
cu
Jens
RyoBerlin
Beiträge: 2
Registriert: Samstag 25. Dezember 2004, 17:48

Beitrag von RyoBerlin »

Also bei mir läuft Bild und Ton.. aber das bild sieht kacke aus siehe hoer am ende des Textes
13:16:12 ERROR - VLC media player 0.7.1 Bond
13:16:12 ERROR - [00000214] main input: playlist item `http://192.168.0.35:31337/0x259,0x25a'
13:16:13 ERROR - [00000223] mpeg_audio decoder: MPGA channels:2 samplerate:48000 bitrate:192
Bild
später
LazyT
Senior Member
Beiträge: 1260
Registriert: Samstag 6. Oktober 2001, 00:00

Beitrag von LazyT »

Wie bekomme ich die PMT raus?
Aus der Streaminfo, wird's bei Neutrino doch sicher auch geben.
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Gibt es noch mehr Infos ausser dieser hier?
Wenn nicht, könnte man diesen Aufruf erweiterm, damit die PMT zurückgegeben wird?
Handler: http://dbox/control/info

Parameter: streaminfo
Rückgabe:

Es werden Streaminfos zurückgegeben. Die Werte sind durch Enter (\n) getrennt

Rückgabe-Format: X_res Y_res Bitrate VideoFormat Framerate AudioFormat

Beispiel:

>>>http://dbox/control/info?streaminfo
480
576
997500
4:3
25
joint stereo
Ryker
Image-Team
Beiträge: 554
Registriert: Montag 2. Juni 2003, 10:38

Beitrag von Ryker »

Die PMT braucht man nicht unbedingt.

Folgendes holt mir die Pids:

Code: Alles auswählen

PIDS=`GET http://dbox/control/zapto?getpids` 2>/dev/null
set $PIDS
vpid=`printf %0x $1`
apid=`printf %0x $2`
Dieser Aufruf holt mir den Stream dann aufm PC.

Code: Alles auswählen

mplayer -cache 8192 http://dbox:31339/$vpid,$apid
Dabei sorgt der Cache-Parameter dafür, daß die Wiedergabe ruckelfrei ist.

Aber ich würde mir mal eine Funtion "getpidshex" wünschen, die dann die pids gleich hexadezimal liefert, damit man sich die konvertierei spart.


Ryker
Zuletzt geändert von Ryker am Sonntag 2. Januar 2005, 18:30, insgesamt 1-mal geändert.
D-Box2 (Nokia; Kabel; 2xINTEL; AVIA500) - aktuelles JtG-Image
davidz
Neugieriger
Neugieriger
Beiträge: 3
Registriert: Freitag 31. Dezember 2004, 03:30

Beitrag von davidz »

habe mit den angegebenen befehlen mal versucht mir das bild in den vlc zu holen.
leider passiert da bei mir garnichts.
muss ich auf der box noch irgendwas einstellen?!?

vielen dank schonmal
Ryker
Image-Team
Beiträge: 554
Registriert: Montag 2. Juni 2003, 10:38

Beitrag von Ryker »

davidz hat geschrieben:habe mit den angegebenen befehlen mal versucht mir das bild in den vlc zu holen....
Mit vlc habe ich es auch nicht hinbekommen, aber der mplayer machts sowohl unter Windows als auch unter Linux. Nur habe ich jetzt keine Idee, wie man sich mit Windows_Pseudo_Scripting_Fahigkeiten die Pids liefern lassen kann. Da wird man warscheinlich um eine Cygwin-Bash nicht herumkommen.
davidz hat geschrieben:...
muss ich auf der box noch irgendwas einstellen?!?
Im Prinzip nicht, nur wenn man streamts nutzt muß die dbox auch im SPTS-Mode laufen.


Ryker
D-Box2 (Nokia; Kabel; 2xINTEL; AVIA500) - aktuelles JtG-Image
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Klar geht es mit MPlayer. Hier geht es aber um VLC. VLC wuerde(tut es auch) den Stream problemlos abspielen, wenn es die PMT haette.

Ich habe fuer JackTheJGrabber testweise eine Routine geschrieben (bzw. von udrec geklaut), die eine PMT ermittelt und dann den Stream mit VLC startet. Komfortabel Glotzen ist das aber nicht gerade. Das Ermitteln der PMT dauert 3 Sekunden. Hinzu kommt noch, das ich VLC nicht gleich starten darf, sondern weitere 5 Sekunden warten muss, da sonst VLC kein Bild herbringt.

Mein Vorgehen sieht momentan also so aus
1. PMT ermitteln
2. 5 Sekunden warten
3. VLC starten

Die einfachste Lösunge waere meiner Meinung nach die Erweiterung des nhttpd um einen Aufruf, der die PMT zurückgibt. Damit laesst sich VLC in einer Sekunde starten, und bringt ein einwandfreies Bild.
HEAD
Einsteiger
Einsteiger
Beiträge: 313
Registriert: Freitag 14. Februar 2003, 15:59

Beitrag von HEAD »

z3r0 hat geschrieben:wenn es die PMT haette.
bitte , kannst an das DEVs-Amt weiterleiten. ;)

Code: Alles auswählen

diff -Naur cvs/apps/dvb/zapit/include/zapit/client/zapitclient.h cvs_/apps/dvb/zapit/include/zapit/client/zapitclient.h
--- cvs/apps/dvb/zapit/include/zapit/client/zapitclient.h	2004-10-27 18:08:40.000000000 +0200
+++ cvs_/apps/dvb/zapit/include/zapit/client/zapitclient.h	2005-01-03 14:44:52.000000000 +0100
@@ -171,6 +171,7 @@
 		uint		vtxtpid;
 		uint		pcrpid;
 		uint		selected_apid;
+		uint		pmtpid;
 	};
 
 	class CCurrentServiceInfo
@@ -186,6 +187,7 @@
 			unsigned int	tsfrequency;
 			unsigned char	polarisation;
 			unsigned char	diseqc;
+			unsigned short	pmtpid;
 		};
 
 	struct responseGetPIDs
diff -Naur cvs/apps/dvb/zapit/src/zapit.cpp cvs_/apps/dvb/zapit/src/zapit.cpp
--- cvs/apps/dvb/zapit/src/zapit.cpp	2004-10-27 18:08:42.000000000 +0200
+++ cvs_/apps/dvb/zapit/src/zapit.cpp	2005-01-02 23:02:12.000000000 +0100
@@ -656,6 +656,7 @@
 		msgCurrentServiceInfo.vpid = channel->getVideoPid();
 		msgCurrentServiceInfo.apid = channel->getAudioPid();
 		msgCurrentServiceInfo.vtxtpid = channel->getTeletextPid();
+		msgCurrentServiceInfo.pmtpid = channel->getPmtPid();
 		msgCurrentServiceInfo.pcrpid = channel->getPcrPid();
 		msgCurrentServiceInfo.tsfrequency = frontend->getFrequency();
 		if (frontend->getInfo()->type == FE_QPSK)
@@ -1109,6 +1110,7 @@
 			responseGetOtherPIDs.ecmpid = NONE; // TODO: remove
 			responseGetOtherPIDs.vtxtpid = channel->getTeletextPid();
 			responseGetOtherPIDs.pcrpid = channel->getPcrPid();
+			responseGetOtherPIDs.pmtpid = channel->getPmtPid();
 			responseGetOtherPIDs.selected_apid = channel->getAudioChannelIndex();
 			CBasicServer::send_data(connfd, &responseGetOtherPIDs, sizeof(responseGetOtherPIDs));
 			sendAPIDs(connfd);
diff -Naur cvs/apps/tuxbox/neutrino/daemons/nhttpd/controlapi.cpp cvs_/apps/tuxbox/neutrino/daemons/nhttpd/controlapi.cpp
--- cvs/apps/tuxbox/neutrino/daemons/nhttpd/controlapi.cpp	2004-12-26 15:06:19.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/daemons/nhttpd/controlapi.cpp	2005-01-03 15:08:30.000000000 +0100
@@ -986,6 +986,9 @@
 	
 	if(pids.APIDs.empty())
 		request->printf("0\n"); // shouldnt happen, but print at least one apid 
+	if(pids.PIDs.pmtpid)
+		request->printf("%u pmt\n", pids.PIDs.pmtpid);
+
 }
 
 //-------------------------------------------------------------------------
diff -Naur cvs/apps/tuxbox/neutrino/daemons/nhttpd/data/settings.html cvs_/apps/tuxbox/neutrino/daemons/nhttpd/data/settings.html
--- cvs/apps/tuxbox/neutrino/daemons/nhttpd/data/settings.html	2004-05-17 10:18:39.000000000 +0200
+++ cvs_/apps/tuxbox/neutrino/daemons/nhttpd/data/settings.html	2005-01-03 15:23:05.000000000 +0100
@@ -88,6 +88,11 @@
 	<TD> </TD>
 	<TD class="set"><CENTER>%%vtxtpid%%</CENTER></TD>
 </TR>
+<TR>
+	<TD class="set"><B>pmtpid:</B></TD>
+	<TD> </TD>
+	<TD class="set"><CENTER>%%pmtpid%%</CENTER></TD>
+</TR>
 </TABLE></CENTER>
 
 </BODY>
diff -Naur cvs/apps/tuxbox/neutrino/daemons/nhttpd/webapi.cpp cvs_/apps/tuxbox/neutrino/daemons/nhttpd/webapi.cpp
--- cvs/apps/tuxbox/neutrino/daemons/nhttpd/webapi.cpp	2004-12-26 15:06:19.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/daemons/nhttpd/webapi.cpp	2005-01-03 15:11:44.000000000 +0100
@@ -451,6 +451,7 @@
 	params["vpid"] = itoh(serviceinfo.vpid);
 	params["apid"] = itoh(serviceinfo.apid);
 	params["vtxtpid"] = (serviceinfo.vtxtpid != 0)?itoh(serviceinfo.vtxtpid):"nicht verfügbar";
+	params["pmtpid"] = (serviceinfo.pmtpid != 0)?itoh(serviceinfo.pmtpid):"nicht verfügbar";
 	sprintf((char*) buf, "%d.%d MHz", serviceinfo.tsfrequency/1000, serviceinfo.tsfrequency%1000);
 	params["tsfrequency"] = buf;
 	params["polarisation"] = serviceinfo.polarisation==1?"h":"v";
diff -Naur cvs/apps/tuxbox/neutrino/src/gui/streaminfo2.cpp cvs_/apps/tuxbox/neutrino/src/gui/streaminfo2.cpp
--- cvs/apps/tuxbox/neutrino/src/gui/streaminfo2.cpp	2004-06-13 15:42:44.000000000 +0200
+++ cvs_/apps/tuxbox/neutrino/src/gui/streaminfo2.cpp	2005-01-03 15:26:45.627658712 +0100
@@ -476,6 +476,11 @@
 			(si.polarisation == HORIZONTAL) ? 'h' : 'v');
 	g_Font[font_small]->RenderString(xpos, ypos, width-10, buf, COL_MENUCONTENT, 0, true); // UTF-8
 
+	//pmtpid
+	ypos+= sheight;
+	sprintf((char*) buf, "%s: 0x%04x", "PMTpid", si.pmtpid);
+	g_Font[font_small]->RenderString(xpos, ypos, width-10, buf, COL_MENUCONTENT, 0, true); // UTF-8
+
 	//vpid
 	ypos+= sheight;
 	if ( g_RemoteControl->current_PIDs.PIDs.vpid == 0 )
z3r0
Einsteiger
Einsteiger
Beiträge: 141
Registriert: Mittwoch 24. März 2004, 21:32

Beitrag von z3r0 »

Ist erledigt,

Vielen Dank Head & Chakazulu.