noch ein Aufnahmeserver speziell für Linux
-
- Einsteiger
- Beiträge: 311
- Registriert: Freitag 26. Juli 2002, 22:25
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
exact kann ich Dir das nicht sagen, jdenfalls kann man bestimmt alles, was mit GUI zu tun hat, rauslassen.Zaphot hat geschrieben:Läuft auch mit qt-embedded...
Welche qt-module werden eigentlich gebraucht? Is bei mir noch zu groß...
Ich verwende den Standardkram, grob gesagt: strings, threads, process, Netzwerk, xml...
- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
-
- Interessierter
- Beiträge: 78
- Registriert: Mittwoch 29. Dezember 2004, 18:55
Respekt, läuft echt gut bei mir (Gentoo Linux), allerdings sind mir zwei Kleinigkeiten aufgefallen:
* Der eingebaute grabber braucht deutlich mehr bandbreite, als zum beispiel die udrec-engine (deswegen hab ich die conf-datei auch auf udrec geändert).
* Wenn ich die Aufnahme direkt über die Dbox starte (zum Beispiel mitten im Programm), bricht die aufnahme ab, sobald die Zeit der ersten Sendung, die ich angeschaut habe, abgelaufen ist.
Gruß,
ChristophK
* Der eingebaute grabber braucht deutlich mehr bandbreite, als zum beispiel die udrec-engine (deswegen hab ich die conf-datei auch auf udrec geändert).
* Wenn ich die Aufnahme direkt über die Dbox starte (zum Beispiel mitten im Programm), bricht die aufnahme ab, sobald die Zeit der ersten Sendung, die ich angeschaut habe, abgelaufen ist.
Gruß,
ChristophK
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
ist klar, "dboxgrab" arbeitet mit "TCP" und ist nicht "UDP" optimiert wie "udrec".ChristophK hat geschrieben:Respekt, läuft echt gut bei mir (Gentoo Linux), allerdings sind mir zwei Kleinigkeiten aufgefallen:
* Der eingebaute grabber braucht deutlich mehr bandbreite, als zum beispiel die udrec-engine (deswegen hab ich die conf-datei auch auf udrec geändert).
Aber deshalb hab ich's ja konfigurierbar gemacht
meinst Du damit: Aufnahmestart via "blau-rot" Taste oder Timerprogrammierung zur laufenden Sendung ?* Wenn ich die Aufnahme direkt über die Dbox starte (zum Beispiel mitten im Programm), bricht die aufnahme ab, sobald die Zeit der ersten Sendung, die ich angeschaut habe, abgelaufen ist.
- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
-
- Interessierter
- Beiträge: 78
- Registriert: Mittwoch 29. Dezember 2004, 18:55
-
- Interessierter
- Beiträge: 78
- Registriert: Mittwoch 29. Dezember 2004, 18:55
Hi,
ich hab mal ne Kleinigkeit verändert, weil ich es ganz gern gehabt hätte, dass man nach jeder erfolgten Aufnahme ein einstellbares Skript ausführen kann:
Mit dem Patch wird nach jedem Durchlauf das "PostGrabCmd" aus der recorder.conf ausgeführt, wobei die gleichen Variablen verwendet werden können, die auch schon beim Grab-CMd verwendet wurden.
Hoffe, jemand kanns brauchen!
Gruß,
CHristophK
ich hab mal ne Kleinigkeit verändert, weil ich es ganz gern gehabt hätte, dass man nach jeder erfolgten Aufnahme ein einstellbares Skript ausführen kann:
Mit dem Patch wird nach jedem Durchlauf das "PostGrabCmd" aus der recorder.conf ausgeführt, wobei die gleichen Variablen verwendet werden können, die auch schon beim Grab-CMd verwendet wurden.
Hoffe, jemand kanns brauchen!
Gruß,
CHristophK
Code: Alles auswählen
--- dboxcmd.cpp 2005-03-07 11:12:33.000000000 +0000
+++ dboxcmd.cpp 2005-03-12 15:48:42.270674672 +0000
@@ -10,7 +10,7 @@
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
- * lve is distributed in the hope that it will be useful,
+ * lt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
@@ -454,7 +454,12 @@
else
pWarn("slot: record mode couldn't be activated");
- unlockStep();
+
+ if (launchPostProcess()) {
+ pLog(2, "slot: Launched postprocessing.");
+ } else
+ pLog(1, "slot: Error launching postprocessing.");
+ unlockStep();
emit signalAbort();
break;
@@ -570,7 +575,7 @@
bool TDboxCmd::launchProcess(void)
{
- QString cmd = buildGrabCmd();
+ QString cmd = buildGrabCmd(rec->grabCmd);
grabProc = new QProcess(QStringList().split(' ', cmd), this, "dboxgrab");
if (grabProc)
@@ -590,6 +595,28 @@
return false;
}
+bool TDboxCmd::launchPostProcess(void)
+{
+
+ QString cmd = buildGrabCmd(rec->postGrabCmd);
+ postGrabProc = new QProcess(QStringList().split(' ', cmd), this, "dboxpostprocess");
+
+ if (postGrabProc)
+ {
+
+ //connect( grabProc, SIGNAL(processExited()), this, SLOT(slotProcessExited()) );
+
+ if (postGrabProc->start() == true)
+ {
+ pLog(1,"proc: %s", cmd.latin1());
+ return true;
+ }
+ }
+
+ pErr("proc: postgrabber process (%s) won't start", cmd.latin1());
+ return false;
+}
+
void TDboxCmd::abortProcess(TSteps s)
{
if (grabProc->isRunning())
@@ -620,7 +647,7 @@
}
}
-QString TDboxCmd::buildGrabCmd(void)
+QString TDboxCmd::buildGrabCmd(QString command)
{
QString ext = (rec->grabFmt==0)?"ts":"ps";
QString workStr;
@@ -664,7 +691,7 @@
//-- load predefined grab command --
//-- to substitute parameters. --
//----------------------------------
- workStr = rec->grabCmd;
+ workStr = command;
workStr.replace( "$FMT", (rec->grabFmt==0)?"-ts":"-ps" );
workStr.replace( "$HOST", rec->dboxHost );
workStr.replace( "$PORT", QString().sprintf("%d", rec->grabPort) );
@@ -677,6 +704,9 @@
}
+
+
+
void TDboxCmd::adjustName(QString &name)
{
int len;
--- dboxcmd.h 2004-06-02 09:07:59.000000000 +0000
+++ dboxcmd.h 2005-03-12 15:25:54.520604288 +0000
@@ -82,6 +82,7 @@
protected:
QProcess *grabProc;
+ QProcess *postGrabProc;
bool grabRunning;
TRecorder *rec;
@@ -108,8 +109,9 @@
void unlockStep(void);
bool launchProcess(void);
+ bool launchPostProcess(void);
void abortProcess(TSteps s);
- QString buildGrabCmd(void);
+ QString buildGrabCmd(QString command);
void adjustName(QString &name);
virtual void timerEvent(QTimerEvent *ev);
--- recorder.h 2005-03-07 13:30:31.000000000 +0000
+++ recorder.h 2005-03-12 14:48:29.731873312 +0000
@@ -55,6 +55,7 @@
Q_UINT16 grabPort;
QString grabDir;
QString grabCmd;
+ QString postGrabCmd;
Q_UINT32 splitSize;
int startupCheck;
--- recorder/recorder.cpp 2005-03-07 12:12:28.000000000 +0000
+++ myrecorder/recorder.cpp 2005-03-12 15:47:56.485635056 +0000
@@ -106,6 +106,7 @@
grabFmt = 0; // 0=TS, 1=PS,
grabDir = "/video/tmp";
grabCmd = "dboxgrab $FMT -h $HOST -p $PORT -o $OFILE -s $SIZE -v $VPID -a $APID";
+ postGrabCmd = "true"; //Do nothing per default
splitSize = 0;
startupCheck = 1; // try to read channels and(2)/or(1) time from dbox on startup
@@ -209,6 +210,10 @@
{
postDelay = vals[i].toULong();
}
+ else if (keys[i] == "postgrabcmd")
+ {
+ postGrabCmd = vals[i];
+ }
}
-
- Interessierter
- Beiträge: 61
- Registriert: Donnerstag 24. Januar 2002, 22:37
-
- Beiträge: 2
- Registriert: Freitag 25. März 2005, 14:28
Streaming - Server
Hi ...
erst einnmal folgendes : der server läuft exzellent auf meiner SuSE 9.2-Kiste. Habe zwei dBoxen, die wunderbar streamen können und ich bin begeistert, dass die erzeugten TS-Streams sogar mit dem DVR-Studio geschnitten werden können. ALSO EIN DICKES LOB AN DEN ENTWICKLER !!!
Ich habe allerdings noch zwei Kleinigkeiten, die mir das Streaming-Leben ncoh perfekter machen würden :
1. Geht es, dass die Box(en) das Bild nicht abschaltet, während die Aufnahme läuft ? Ich weiss dass das bei anderen Streaming-Servern geht, wenn man KEINE TS-Streams erzeugt, sonder MPEGs oder PES-Streams. Wenn nicht geht ... auch nicht schlimm, wäre aber schöner
In der Config-Datei gibt's zwar 'PlaybackCtrl', aber wenn ich das auf false setze, dann nimmt der Server nicht auf
2. Wie kann ich eine eigene Dateibenennung bestimmen ? Ich splitte in 1GB-Files und es wäre schön wenn die dBox-Streams wie Dreambox-Streams benannt werden würden, (1. File Titel.ts, 2.File Titel.ts.001, 3.File Titel.ts.002 etc.), damit das DVR-Studio sofort mit seiner Arbeit anfagen kann. Im moment benenne ich die Dateien von Hand um.
Gruss ... J.
erst einnmal folgendes : der server läuft exzellent auf meiner SuSE 9.2-Kiste. Habe zwei dBoxen, die wunderbar streamen können und ich bin begeistert, dass die erzeugten TS-Streams sogar mit dem DVR-Studio geschnitten werden können. ALSO EIN DICKES LOB AN DEN ENTWICKLER !!!
Ich habe allerdings noch zwei Kleinigkeiten, die mir das Streaming-Leben ncoh perfekter machen würden :
1. Geht es, dass die Box(en) das Bild nicht abschaltet, während die Aufnahme läuft ? Ich weiss dass das bei anderen Streaming-Servern geht, wenn man KEINE TS-Streams erzeugt, sonder MPEGs oder PES-Streams. Wenn nicht geht ... auch nicht schlimm, wäre aber schöner
In der Config-Datei gibt's zwar 'PlaybackCtrl', aber wenn ich das auf false setze, dann nimmt der Server nicht auf
2. Wie kann ich eine eigene Dateibenennung bestimmen ? Ich splitte in 1GB-Files und es wäre schön wenn die dBox-Streams wie Dreambox-Streams benannt werden würden, (1. File Titel.ts, 2.File Titel.ts.001, 3.File Titel.ts.002 etc.), damit das DVR-Studio sofort mit seiner Arbeit anfagen kann. Im moment benenne ich die Dateien von Hand um.
Gruss ... J.
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
Re: Streaming - Server
'PlaybackCtrl' auf 'false' gesetzt, sollte eigentlich gehn. Die Box muß dann aber in jedem Fall im SPTS Mode laufen !jayzon hat geschrieben:Hi ...
...
1. Geht es, dass die Box(en) das Bild nicht abschaltet, während die Aufnahme läuft ? Ich weiss dass das bei anderen Streaming-Servern geht, wenn man KEINE TS-Streams erzeugt, sonder MPEGs oder PES-Streams. Wenn nicht geht ... auch nicht schlimm, wäre aber schöner
In der Config-Datei gibt's zwar 'PlaybackCtrl', aber wenn ich das auf false setze, dann nimmt der Server nicht auf
Ich hab das jedenfalls bei mir so am Laufen ...
im Moment müsste man halt eben die Quellen entsprechend anpassen. Aber wenn ich mal wieder ans Programmieren komme, kann ich evtl. ein Template für die Dateibenennung als Konfigurationsparameter einbauen, z.B.2. Wie kann ich eine eigene Dateibenennung bestimmen ? Ich splitte in 1GB-Files und es wäre schön wenn die dBox-Streams wie Dreambox-Streams benannt werden würden, (1. File Titel.ts, 2.File Titel.ts.001, 3.File Titel.ts.002 etc.), damit das DVR-Studio sofort mit seiner Arbeit anfagen kann. Im moment benenne ich die Dateien von Hand um.
DateiName=$TITEL.ts.$NR oder ähnlich ...
- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
Die ersten 2 Zeilen des Makfiles sehen so aus:Hai1961 hat geschrieben:Hat das schon jemand mit Debian hinbekommen?
Den Pfad zu "moc" finde ich ja noch, aber dann haperts. Welche qt3 Pakete müssen installiert sein? Wie muss das Makefile aussehen? Die für Suse genannten Pakete kann ich nicht finden.
Code: Alles auswählen
QTPATH = /usr/lib/qt3
INST_DIR = /usr/local/bin
tja, wie das mit QT bei Debian aussieht weiß ich leider nicht. Aber wenn's da Pakete änlich wie bei SuSE gibt, sollte zusätzlich zur "normalen" libqt3 auch ein Paket mit Development-Kram wie Headerfiles etc. installiert werden und außerdem noch die Tools, zu dem dann auch "moc" usw. gehört...
Das ganze ist üblicherweise alles unterhalb eines Folder.z.B. mit Namen "qt3" zu finden (bei SUSE /usr/lib/qt3), wobei dort dann auf jedenfall gefüllte sub-folders "include/" und "bin/" sein müssen.
Wenn's mit Pakten nicht geht, kann man auch die qt-Sourcen selbst kompilieren und mit "make install" installieren ...
- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
-
- Einsteiger
- Beiträge: 338
- Registriert: Sonntag 24. Februar 2002, 10:43
@gmo18t
Ich habe jetzt mal QT/embedded auf meinem PC compiliert, bekomme aber folgenden Fehler:
Wenn ich mit QT-X11 compiliere tritt dieser Fehler nicht auf, nur wird das noch ein größerer Krampf werden, QT-X11 für das NSLU2 umzusetzen. Hast Du ne Idee, bzw. selbst mal mit QT/embedded probiert?
Spooky
Ich habe jetzt mal QT/embedded auf meinem PC compiliert, bekomme aber folgenden Fehler:
Code: Alles auswählen
/home/slug/qt/bin/moc -o recorder.moc recorder.h
/home/slug/qt/bin/moc -o dboxcmd.moc dboxcmd.h
/home/slug/qt/bin/moc -o messages.moc messages.h
g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -I./ -I/home/slug/qt/include -o recorder.o -c recorder.cpp
g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -I./ -I/home/slug/qt/include -o messages.o -c messages.cpp
g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -I./ -I/home/slug/qt/include -o dboxcmd.o -c dboxcmd.cpp
g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -I./ -I/home/slug/qt/include -o debug.o -c debug.cpp
g++ -o recorder recorder.o messages.o dboxcmd.o debug.o -L/home/slug/qt/lib -lqte-mt -lpthread
recorder.o(.gnu.linkonce.r._ZTI6QGList+0x8): undefined reference to `typeinfo for QPtrCollection'
recorder.o(.gnu.linkonce.r._ZTI9TRecorder+0x8): undefined reference to `typeinfo for QObject'
messages.o(.gnu.linkonce.r._ZTI10TCmdSocket+0x8): undefined reference to `typeinfo for QSocket'
messages.o(.gnu.linkonce.r._ZTI10TMsgClient+0x8): undefined reference to `typeinfo for QSocket'
messages.o(.gnu.linkonce.r._ZTI10TMsgServer+0x8): undefined reference to `typeinfo for QServerSocket'
dboxcmd.o(.gnu.linkonce.r._ZTI8TDboxCmd+0x8): undefined reference to `typeinfo for QObject'
collect2: ld returned 1 exit status
make: *** [recorder] Fehler 1
Spooky
-
- Einsteiger
- Beiträge: 311
- Registriert: Freitag 26. Juli 2002, 22:25
Compilier mal mit -fno-rtti. Den gleichen Fehler hatte ich auch.Spooky hat geschrieben:@gmo18t
Ich habe jetzt mal QT/embedded auf meinem PC compiliert, bekomme aber folgenden Fehler:
Wenn ich mit QT-X11 compiliere tritt dieser Fehler nicht auf, nur wird das noch ein größerer Krampf werden, QT-X11 für das NSLU2 umzusetzen. Hast Du ne Idee, bzw. selbst mal mit QT/embedded probiert?Code: Alles auswählen
/home/slug/qt/bin/moc -o recorder.moc recorder.h /home/slug/qt/bin/moc -o dboxcmd.moc dboxcmd.h /home/slug/qt/bin/moc -o messages.moc messages.h g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -I./ -I/home/slug/qt/include -o recorder.o -c recorder.cpp g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -I./ -I/home/slug/qt/include -o messages.o -c messages.cpp g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -I./ -I/home/slug/qt/include -o dboxcmd.o -c dboxcmd.cpp g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -I./ -I/home/slug/qt/include -o debug.o -c debug.cpp g++ -o recorder recorder.o messages.o dboxcmd.o debug.o -L/home/slug/qt/lib -lqte-mt -lpthread recorder.o(.gnu.linkonce.r._ZTI6QGList+0x8): undefined reference to `typeinfo for QPtrCollection' recorder.o(.gnu.linkonce.r._ZTI9TRecorder+0x8): undefined reference to `typeinfo for QObject' messages.o(.gnu.linkonce.r._ZTI10TCmdSocket+0x8): undefined reference to `typeinfo for QSocket' messages.o(.gnu.linkonce.r._ZTI10TMsgClient+0x8): undefined reference to `typeinfo for QSocket' messages.o(.gnu.linkonce.r._ZTI10TMsgServer+0x8): undefined reference to `typeinfo for QServerSocket' dboxcmd.o(.gnu.linkonce.r._ZTI8TDboxCmd+0x8): undefined reference to `typeinfo for QObject' collect2: ld returned 1 exit status make: *** [recorder] Fehler 1
Spooky
-
- Beiträge: 2
- Registriert: Freitag 25. März 2005, 14:28
Aufnahme & Bild
kurzer Nachtrag zu meinen kleinen Problemen ...
Wenn ich in der Config-Datei die PlaybackCtrl auf =0 setze und den STPS-Mode an der Box einschalte , läuft das Bild auch während der Aufnahme. Wenn ich 'FALSE' schreibe geht's nicht !
Egal ... Problem gelöst, bzw. ncht mehr vorhanden.
Nochmals : DICKES LOB !!!
Wenn ich in der Config-Datei die PlaybackCtrl auf =0 setze und den STPS-Mode an der Box einschalte , läuft das Bild auch während der Aufnahme. Wenn ich 'FALSE' schreibe geht's nicht !
Egal ... Problem gelöst, bzw. ncht mehr vorhanden.
Nochmals : DICKES LOB !!!
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
Re: Aufnahme & Bild
ist zwar so geproggt, daß "FALSE, false und 0" als Abschaltwerte gehen sollten, aber vielleicht hab ich was übersehen ...jayzon hat geschrieben:kurzer Nachtrag zu meinen kleinen Problemen ...
Wenn ich in der Config-Datei die PlaybackCtrl auf =0 setze und den STPS-Mode an der Box einschalte , läuft das Bild auch während der Aufnahme. Wenn ich 'FALSE' schreibe geht's nicht !
...
- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
-
- Einsteiger
- Beiträge: 338
- Registriert: Sonntag 24. Februar 2002, 10:43
-
- Einsteiger
- Beiträge: 311
- Registriert: Freitag 26. Juli 2002, 22:25
JapSpooky hat geschrieben:@Zaphot
Danke, für den Tip - da wäre ich nie darauf gekommen ...
Jetzt kann ich es hier mit Qt/embedded compilieren und werde es später auf dem NSLU2 probieren. Für was nutzt Du Qt/embedded eigentlich, für den ALLNET ?
Spooky
Qt/embedded ist aber zu Speicher intensiv fürs allnet...
-
- Einsteiger
- Beiträge: 338
- Registriert: Sonntag 24. Februar 2002, 10:43
@gmo18t & Zaphot
Qt/embedded hab ich jetzt auf dem NSLU2 am laufen. "recorder" konnte ich auch compilieren und läuft.
Während des Compilierens bekam ich aber folgenden Fehler bzw. Hinweis:
Kann ich das ignorieren ?
Nun noch paar Fragen zum eigentlichen Streamingserver...
Wenn ich das richtig gesehen habe, ist streamtsd für Timeshifting gedacht.
Reicht da ein dbox2 yadi Image aus o. muß das Image speziell dafür vorbereitet sein um es zu nutzen?
Dank fehlendem Mono kann ich derzeit "udrec" nicht auf dem NSLU2 laufen lassen. Gibt es für dboxgrab einen Weg auch mehrere APID gleichzeitig aufzunehmen ?
Spooky
Qt/embedded hab ich jetzt auf dem NSLU2 am laufen. "recorder" konnte ich auch compilieren und läuft.
Während des Compilierens bekam ich aber folgenden Fehler bzw. Hinweis:
Code: Alles auswählen
/share/hdd/data/public/qte/bin/moc -o recorder.moc recorder.h
/share/hdd/data/public/qte/bin/moc -o dboxcmd.moc dboxcmd.h
/share/hdd/data/public/qte/bin/moc -o messages.moc messages.h
g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -DQT_QLOCAL_USES_FCVT -fno-rtti -I./ -I/share/hdd/data/public/qte/include -o recorder.o -c recorder.cpp
g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -DQT_QLOCAL_USES_FCVT -fno-rtti -I./ -I/share/hdd/data/public/qte/include -o messages.o -c messages.cpp
g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -DQT_QLOCAL_USES_FCVT -fno-rtti -I./ -I/share/hdd/data/public/qte/include -o dboxcmd.o -c dboxcmd.cpp
dboxcmd.cpp: In member function `void TDboxCmd::adjustName(QString&)':
dboxcmd.cpp:720: warning: comparison is always false due to limited range of
data type
g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -DQT_QLOCAL_USES_FCVT -fno-rtti -I./ -I/share/hdd/data/public/qte/include -o debug.o -c debug.cpp
g++ -o recorder recorder.o messages.o dboxcmd.o debug.o -L/share/hdd/data/public/qte/lib -lqte-mt -lpthread
/share/hdd/data/public/qte/bin/moc -o dboxgrab.moc dboxgrab.h
g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -DQT_QLOCAL_USES_FCVT -fno-rtti -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I./ -I/share/hdd/data/public/qte/include -o dboxgrab.o -c dboxgrab.cpp
g++ -o dboxgrab dboxgrab.o debug.o -L/share/hdd/data/public/qte/lib -lqte-mt -lpthread
g++ -DQT_THREAD_SUPPORT -DQT_LARGEFILE_SUPPORT=64 -D_REENTRANT -DQT_QLOCAL_USES_FCVT -fno-rtti -I./ -I/share/hdd/data/public/qte/include -o streamtsd.o -c streamtsd.c
g++ -o streamtsd streamtsd.o
g++ -o genpsi.o -c genpsi.c
g++ -o genpsi genpsi.o
Nun noch paar Fragen zum eigentlichen Streamingserver...
Wenn ich das richtig gesehen habe, ist streamtsd für Timeshifting gedacht.
Reicht da ein dbox2 yadi Image aus o. muß das Image speziell dafür vorbereitet sein um es zu nutzen?
Dank fehlendem Mono kann ich derzeit "udrec" nicht auf dem NSLU2 laufen lassen. Gibt es für dboxgrab einen Weg auch mehrere APID gleichzeitig aufzunehmen ?
Spooky
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
Hi,
kannst Du bei Gelegnheit auch mal schildern wie man beim Qt/embedded crosscompilieren vorgehen muß ?
'streamtsd' wird dazu auf dem SERVER installiert und verhält sich so wie der Service der DBox auf Port 31339, wobei aber anstelle des Livestreams eben das Aufnahmefile zurückgeliefert wird.
(das ist aber ein Hardware/Treiberphänomen der DBox)
Da bei einem 'normalen' Timer die übergebene APid immer von dem grad zu hörenden Stream ist, wird dann eben nur genau dieser aufgezeichnet.
Wenn man nun aber im Timer noch eine andere (unterschiedliche) APid in dem dafür vorgesehenen Feld eingibt, so wird der entsprechende Audio-Stream noch zusätzlich, d.h. es werden dann 2 Audiospuren aufgezeichnet (mehr geht aber derzeit nicht).
- GMo -
prima !Spooky hat geschrieben: Qt/embedded hab ich jetzt auf dem NSLU2 am laufen. "recorder" konnte ich auch compilieren und läuft
...
kannst Du bei Gelegnheit auch mal schildern wie man beim Qt/embedded crosscompilieren vorgehen muß ?
ja -> sollte erst mal nicht stören (hat mit dem Rausfiltern von "unbrauchbaren" Zeichen im Filenamen für die Aufnahme zu tun ...)...Kann ich das ignorieren ?Code: Alles auswählen
dboxcmd.cpp:720: warning: comparison is always false due to limited range of data type
...
im Prinzip ja, aber ist mehr oder weniger nur ein Behelf, den ich gemacht habe, weil es ruckelt, wenn ich ein Film bei gerade laufender Aufnahme (zeitversetzt) auf einer anderen Box anschauen möchte und dies per 'TS-Abspielen direkt über nfs-share mache.Nun noch paar Fragen zum eigentlichen Streamingserver...
Wenn ich das richtig gesehen habe, ist streamtsd für Timeshifting gedacht.
...
'streamtsd' wird dazu auf dem SERVER installiert und verhält sich so wie der Service der DBox auf Port 31339, wobei aber anstelle des Livestreams eben das Aufnahmefile zurückgeliefert wird.
Bei der Aufnahme im SPTS-Mode (und nur das wird von dboxgrab unterstützt), wird immer der Audiostream zwangsweise aufgenommen, der auch grad zu hören ist - unabhängig davon, welcher dboxgrab als 'apid' mitgegeben wird....
Dank fehlendem Mono kann ich derzeit "udrec" nicht auf dem NSLU2 laufen lassen. Gibt es für dboxgrab einen Weg auch mehrere APID gleichzeitig aufzunehmen ?
...
(das ist aber ein Hardware/Treiberphänomen der DBox)
Da bei einem 'normalen' Timer die übergebene APid immer von dem grad zu hörenden Stream ist, wird dann eben nur genau dieser aufgezeichnet.
Wenn man nun aber im Timer noch eine andere (unterschiedliche) APid in dem dafür vorgesehenen Feld eingibt, so wird der entsprechende Audio-Stream noch zusätzlich, d.h. es werden dann 2 Audiospuren aufgezeichnet (mehr geht aber derzeit nicht).
- GMo -
-
- Einsteiger
- Beiträge: 338
- Registriert: Sonntag 24. Februar 2002, 10:43
@gmo18t
Ich habe Dich doch richtig verstanden, wenn ich unter Plugins mit "GELB" einen Timer hinzufüge, kann ich dort auch eine zweite APID hinzufügen,richtig ? Zwei Spuren würden mir momentan vollkommen reichen für AC3 + Stereo Spur.
Mit dem Crosscompilieren ist gar nicht so einfach. Gleich vorne weg, was mir bis jetzt nicht gelungen ist, ist Dein "recorder" am PC zu crosscompilieren.
Bei meinem Versuch den "recorder" für das NSLU2 umzusetzen hatte ich zwei Wege versucht, Qt/e einmal per Crosscompilierung am PC und einmal native auf dem NSLU2 zu compilieren. Die meiste Zeit habe ich mit "Warten" verbraucht um herauszufinden wie sich Qt/embedded beim compilieren auf dem NSLU2 verhält. Zum Schluß kam heraus , dass ich einen Mittelweg zwischen Crosscompilieren und Native gehen mußte. Erschwerend kam hinzu , dass die Doku für Qt auch etwas unzureichend erscheint. Es ist nämlich zu beachten: Das NSLU2 läuft im big-endian Mode und Qt/embedded nimmt trotz Crosscompilierung den endian Mode der compilierenden Maschine an, wenn man nicht aufpaßt.
Da ich ein absoluter Neuling bin was diese Sache betrifft, bin ich dabei bestimmt nicht unbedingt den Weg gegangen, den ein Developer gegangen wäre. Auf dem Weg zum Ziel habe ich mir einfach die Werkzeuge zu nutze gemacht die schon da waren. Das eigentliche Qt/embedded Paket habe ich dabei wie folgt compiliert.
Danach ganz normal "make". Bevor Du allerdings mit "make" startest, solltest Du aber unbedingt darandenken in das Unterverzeichnis "../bin" eine compilierte Kopie von "uic" hineinzukopieren. Das ist nur beim "Crosscompilieren" notwendig, ansonsten erstellt er sie selbst. Außerdem darf im Suchpfad die "toolchain" für die Zielmaschine nicht fehlen. In diesem Fall gab es die schon und ich habe, der Einfachheit halber, die beiden Dateien "arm-linux-g++" u. "arm-linux-gcc" einfach nach ../bin kopiert.
Parallel dazu, habe ich auf dem NSLU2 Qt/e (zumindest zum Teil) compiliert um an ein binary von "moc" zu gelangen. Zum Schluß habe ich die crosscompilierte Version von Qt/e auf das NSLU2 kopiert und das nativecompilierte "moc" hinzugefügt. Damit konnte ich dann auf dem NSLU2 "recorder" native compilieren, mit der oben genannten Fehlermeldung.
Bei weiteren Fragen und Vorschlägen, melde Dich einfach.
Spooky
Ich habe Dich doch richtig verstanden, wenn ich unter Plugins mit "GELB" einen Timer hinzufüge, kann ich dort auch eine zweite APID hinzufügen,richtig ? Zwei Spuren würden mir momentan vollkommen reichen für AC3 + Stereo Spur.
Mit dem Crosscompilieren ist gar nicht so einfach. Gleich vorne weg, was mir bis jetzt nicht gelungen ist, ist Dein "recorder" am PC zu crosscompilieren.
Bei meinem Versuch den "recorder" für das NSLU2 umzusetzen hatte ich zwei Wege versucht, Qt/e einmal per Crosscompilierung am PC und einmal native auf dem NSLU2 zu compilieren. Die meiste Zeit habe ich mit "Warten" verbraucht um herauszufinden wie sich Qt/embedded beim compilieren auf dem NSLU2 verhält. Zum Schluß kam heraus , dass ich einen Mittelweg zwischen Crosscompilieren und Native gehen mußte. Erschwerend kam hinzu , dass die Doku für Qt auch etwas unzureichend erscheint. Es ist nämlich zu beachten: Das NSLU2 läuft im big-endian Mode und Qt/embedded nimmt trotz Crosscompilierung den endian Mode der compilierenden Maschine an, wenn man nicht aufpaßt.
Da ich ein absoluter Neuling bin was diese Sache betrifft, bin ich dabei bestimmt nicht unbedingt den Weg gegangen, den ein Developer gegangen wäre. Auf dem Weg zum Ziel habe ich mir einfach die Werkzeuge zu nutze gemacht die schon da waren. Das eigentliche Qt/embedded Paket habe ich dabei wie folgt compiliert.
Code: Alles auswählen
./configure -big-endian -embedded arm -thread -DQT_QLOCAL_USES_FCVT
Parallel dazu, habe ich auf dem NSLU2 Qt/e (zumindest zum Teil) compiliert um an ein binary von "moc" zu gelangen. Zum Schluß habe ich die crosscompilierte Version von Qt/e auf das NSLU2 kopiert und das nativecompilierte "moc" hinzugefügt. Damit konnte ich dann auf dem NSLU2 "recorder" native compilieren, mit der oben genannten Fehlermeldung.
Bei weiteren Fragen und Vorschlägen, melde Dich einfach.
Spooky
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
genauso hab ich das gemeint !Spooky hat geschrieben:@gmo18t
Ich habe Dich doch richtig verstanden, wenn ich unter Plugins mit "GELB" einen Timer hinzufüge, kann ich dort auch eine zweite APID hinzufügen,richtig ? Zwei Spuren würden mir momentan vollkommen reichen für AC3 + Stereo Spur.
...
- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
-
- Einsteiger
- Beiträge: 338
- Registriert: Sonntag 24. Februar 2002, 10:43
@gmo18t
Mit der APID muß ich nochmal prüfen, irgendwie ist mir das bis jetzt nicht gelungen zwei APID's aufzunehmen. In den "Technischen Informationen" kann man doch die APID des Senders ablesen z.B: 0x100,101 bei Pro7. Wenn ich dann den Timer bearbeite, trage ich dort "100 101" für die beiden APID's ein,die aufgenommen werden sollen. Laut Info soll doch ein Leerzeichen als Trenner fungieren, was anderes steht ja auch nicht zur Verfügung. Habe ich da irgendwo einen Denkfehler drin ?
Ist es möglich , dass ich irgendetwas im Zusammenhang mit LARGE_FILE_SUPPORT beim QT Compilieren vergessen habe? Momentan nimmt "recorder" nur bis zum Ende auf, wenn SplitSize=2048 gesetzt ist. Oder kann dboxgrab nicht mit Dateien >2GB umgehen?
Spooky
Mit der APID muß ich nochmal prüfen, irgendwie ist mir das bis jetzt nicht gelungen zwei APID's aufzunehmen. In den "Technischen Informationen" kann man doch die APID des Senders ablesen z.B: 0x100,101 bei Pro7. Wenn ich dann den Timer bearbeite, trage ich dort "100 101" für die beiden APID's ein,die aufgenommen werden sollen. Laut Info soll doch ein Leerzeichen als Trenner fungieren, was anderes steht ja auch nicht zur Verfügung. Habe ich da irgendwo einen Denkfehler drin ?
Ist es möglich , dass ich irgendetwas im Zusammenhang mit LARGE_FILE_SUPPORT beim QT Compilieren vergessen habe? Momentan nimmt "recorder" nur bis zum Ende auf, wenn SplitSize=2048 gesetzt ist. Oder kann dboxgrab nicht mit Dateien >2GB umgehen?
Spooky
-
- Erleuchteter
- Beiträge: 553
- Registriert: Freitag 27. Februar 2004, 14:30
...neeeSpooky hat geschrieben:@gmo18t
Mit der APID muß ich nochmal prüfen, irgendwie ist mir das bis jetzt nicht gelungen zwei APID's aufzunehmen. In den "Technischen Informationen" kann man doch die APID des Senders ablesen z.B: 0x100,101 bei Pro7. Wenn ich dann den Timer bearbeite, trage ich dort "100 101" für die beiden APID's ein,die aufgenommen werden sollen. Laut Info soll doch ein Leerzeichen als Trenner fungieren, was anderes steht ja auch nicht zur Verfügung. Habe ich da irgendwo einen Denkfehler drin ?
...
nur EINE Apid in dem entspr. Timerfeld eingeben. Wenn dann der Film aufgenommen wird und vorher nicht mit grüner Taste genau diese Audiospur aktiviert wurde, dann wird sie zusätzlich zur gerade hörbaren aufgenommen ...
Beispiel für Film mit 2 Audiospuren (Stereo=0x101, AC3=0x103):
1. Aktuelle Audioeinstellung prüfen mit grüner Taste (Stereo=0x101 sollte aktiv sein)
2. Timer erstellen und in APid Feld nur "103" eintragen.
also auf i386 gibt's keine Probleme damit ...Ist es möglich , dass ich irgendetwas im Zusammenhang mit LARGE_FILE_SUPPORT beim QT Compilieren vergessen habe? Momentan nimmt "recorder" nur bis zum Ende auf, wenn SplitSize=2048 gesetzt ist. Oder kann dboxgrab nicht mit Dateien >2GB umgehen?
- GMo -
-
- Neugieriger
- Beiträge: 6
- Registriert: Samstag 14. Mai 2005, 13:49
Aufnahme bricht vorzeitig nach erster Sendung ab
Nun, das ist bei mir auch so! Ich habe eine Sendung programmiert undChristophK hat geschrieben:
* Wenn ich die Aufnahme direkt über die Dbox starte (zum Beispiel mitten im Programm), bricht die aufnahme ab, sobald die Zeit der ersten Sendung, die ich angeschaut habe, abgelaufen ist.
"per Hand" die Stop-Zeit verlängert (auf später gesetzt).
Insgesamt hätten so 3 Sendungen aufgenommen werden müssen (MotoGP-
Qualifying aller Klassen) - der Timer war korrekt in der Liste.
Leider stoppte die Aufnahme aber schon nach der ersten Sendung. Die debug-Ausgabe von recorder hat das auch so gemeldet (set max. record duration to 35min). Korrekt wären ca 180min gewesen.
Noch was ist mir aufgefallen: Um recorder compilieren zu können, musste
ich die unistd.h in recorder.cpp ergänzen (SuSE 9.0)
Bin ich alleine mit diesem Problem oder ist das überall so ???
PS: Das ist mein erster Forum-Eintrag, hoffentlich war's so richtig...?
-
- Interessierter
- Beiträge: 61
- Registriert: Donnerstag 24. Januar 2002, 22:37
Selbst compilieren von QT hat nur Mist gebracht, bzw. nicht funktioniert.gmo18t hat geschrieben:Die ersten 2 Zeilen des Makfiles sehen so aus:Hai1961 hat geschrieben:Hat das schon jemand mit Debian hinbekommen?
Den Pfad zu "moc" finde ich ja noch, aber dann haperts. Welche qt3 Pakete müssen installiert sein? Wie muss das Makefile aussehen? Die für Suse genannten Pakete kann ich nicht finden.also einfach diese entprechend der QT Installation anpassen...Code: Alles auswählen
QTPATH = /usr/lib/qt3 INST_DIR = /usr/local/bin
tja, wie das mit QT bei Debian aussieht weiß ich leider nicht. Aber wenn's da Pakete änlich wie bei SuSE gibt, sollte zusätzlich zur "normalen" libqt3 auch ein Paket mit Development-Kram wie Headerfiles etc. installiert werden und außerdem noch die Tools, zu dem dann auch "moc" usw. gehört...
Wenn's mit Pakten nicht geht, kann man auch die qt-Sourcen selbst kompilieren und mit "make install" installieren ...
- GMo -
Den richtigen Pfad auf meinem Debian System habe ich aber nun gefunden: /usr/share/qt3
Das Programm geht auch und nimmt super abspielbare TS Files auf. Nur leider wird der TV Schirm dunkel wenn die Aufnahme beginnt. Und leider wird es auch nicht wieder hell (Aufnahme geht allerdings weiterhin). Nur bei Sendern anderer Senderfamilien kann ich was sehen. Oder ich muß die Box neu starten.
Ich würde es ganz toll finden, wenn die recorder.conf erklärt oder kommentiert wäre.