Ports
-
- Tuxboxer
- Beiträge: 6044
- Registriert: Montag 17. November 2003, 06:48
Ports
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
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
-
- Senior Member
- Beiträge: 1339
- Registriert: Donnerstag 24. April 2003, 12:12
/etc/services
/etc/inetd.conf
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.
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
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
-
- Tuxboxer
- Beiträge: 6044
- Registriert: Montag 17. November 2003, 06:48
-
- Tuxboxer
- Beiträge: 6044
- Registriert: Montag 17. November 2003, 06:48
-
- Senior Member
- Beiträge: 1260
- Registriert: Samstag 6. Oktober 2001, 00:00
-
- Tuxboxer
- Beiträge: 6044
- Registriert: Montag 17. November 2003, 06:48
-
- Beiträge: 2
- Registriert: Samstag 25. Dezember 2004, 17:48
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
später
-
- Senior Member
- Beiträge: 1260
- Registriert: Samstag 6. Oktober 2001, 00:00
-
- Einsteiger
- Beiträge: 141
- Registriert: Mittwoch 24. März 2004, 21:32
Gibt es noch mehr Infos ausser dieser hier?
Wenn nicht, könnte man diesen Aufruf erweiterm, damit die PMT zurückgegeben wird?
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
-
- Image-Team
- Beiträge: 554
- Registriert: Montag 2. Juni 2003, 10:38
Die PMT braucht man nicht unbedingt.
Folgendes holt mir die Pids:
Dieser Aufruf holt mir den Stream dann aufm PC.
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
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`
Code: Alles auswählen
mplayer -cache 8192 http://dbox:31339/$vpid,$apid
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
-
- Neugieriger
- Beiträge: 3
- Registriert: Freitag 31. Dezember 2004, 03:30
-
- Image-Team
- Beiträge: 554
- Registriert: Montag 2. Juni 2003, 10:38
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:habe mit den angegebenen befehlen mal versucht mir das bild in den vlc zu holen....
Im Prinzip nicht, nur wenn man streamts nutzt muß die dbox auch im SPTS-Mode laufen.davidz hat geschrieben:...
muss ich auf der box noch irgendwas einstellen?!?
Ryker
D-Box2 (Nokia; Kabel; 2xINTEL; AVIA500) - aktuelles JtG-Image
-
- Einsteiger
- Beiträge: 141
- Registriert: Mittwoch 24. März 2004, 21:32
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.
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.
-
- Einsteiger
- Beiträge: 313
- Registriert: Freitag 14. Februar 2003, 15:59
bitte , kannst an das DEVs-Amt weiterleiten.z3r0 hat geschrieben:wenn es die PMT haette.
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 )
-
- Einsteiger
- Beiträge: 141
- Registriert: Mittwoch 24. März 2004, 21:32