noch ein Aufnahmeserver speziell für Linux

Digital Recording
Zaphot
Einsteiger
Einsteiger
Beiträge: 311
Registriert: Freitag 26. Juli 2002, 22:25

Beitrag von Zaphot »

Läuft auch mit qt-embedded...
Welche qt-module werden eigentlich gebraucht? Is bei mir noch zu groß...
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Beitrag von gmo18t »

Zaphot hat geschrieben:Läuft auch mit qt-embedded...
Welche qt-module werden eigentlich gebraucht? Is bei mir noch zu groß...
exact kann ich Dir das nicht sagen, jdenfalls kann man bestimmt alles, was mit GUI zu tun hat, rauslassen.

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
ChristophK
Interessierter
Interessierter
Beiträge: 78
Registriert: Mittwoch 29. Dezember 2004, 18:55

Beitrag von ChristophK »

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
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Beitrag von gmo18t »

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).
ist klar, "dboxgrab" arbeitet mit "TCP" und ist nicht "UDP" optimiert wie "udrec".
Aber deshalb hab ich's ja konfigurierbar gemacht :-)
* 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.
meinst Du damit: Aufnahmestart via "blau-rot" Taste oder Timerprogrammierung zur laufenden Sendung ?

- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
ChristophK
Interessierter
Interessierter
Beiträge: 78
Registriert: Mittwoch 29. Dezember 2004, 18:55

Beitrag von ChristophK »

Aufnahmestart über Blau-Rot
aber ich schätze, bei Timerprogrammierung wäre es dasselbe Problem, wenn der Timer nicht genau mit der Sendungzeit übereinstimmt
ChristophK
Interessierter
Interessierter
Beiträge: 78
Registriert: Mittwoch 29. Dezember 2004, 18:55

Beitrag von ChristophK »

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

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];
+         }

}

Hai1961
Interessierter
Interessierter
Beiträge: 61
Registriert: Donnerstag 24. Januar 2002, 22:37

Beitrag von Hai1961 »

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.
jayzon
Beiträge: 2
Registriert: Freitag 25. März 2005, 14:28

Streaming - Server

Beitrag von jayzon »

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.
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Re: Streaming - Server

Beitrag von gmo18t »

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 :-(
'PlaybackCtrl' auf 'false' gesetzt, sollte eigentlich gehn. Die Box muß dann aber in jedem Fall im SPTS Mode laufen !
Ich hab das jedenfalls bei mir so am Laufen ...
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.
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.

DateiName=$TITEL.ts.$NR oder ähnlich ...

- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Beitrag von gmo18t »

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.
Die ersten 2 Zeilen des Makfiles sehen so aus:

Code: Alles auswählen

QTPATH   = /usr/lib/qt3
INST_DIR = /usr/local/bin
also einfach diese entprechend der QT Installation anpassen...

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
Spooky
Einsteiger
Einsteiger
Beiträge: 338
Registriert: Sonntag 24. Februar 2002, 10:43

Beitrag von Spooky »

@gmo18t

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
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
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Beitrag von gmo18t »

Hi,

hab den "recorder" jetzt noch ein wenig optimiert, damit er nun auch besser mit der udrec-engine läuft.
Hier der Link zum Download ...

- GMo -
Zaphot
Einsteiger
Einsteiger
Beiträge: 311
Registriert: Freitag 26. Juli 2002, 22:25

Beitrag von Zaphot »

Spooky hat geschrieben:@gmo18t

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
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
Compilier mal mit -fno-rtti. Den gleichen Fehler hatte ich auch.
jayzon
Beiträge: 2
Registriert: Freitag 25. März 2005, 14:28

Aufnahme & Bild

Beitrag von jayzon »

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 ! :gruebel:

Egal ... Problem gelöst, bzw. ncht mehr vorhanden.

Nochmals : DICKES LOB !!!
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Re: Aufnahme & Bild

Beitrag von gmo18t »

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 ! :gruebel:
...
ist zwar so geproggt, daß "FALSE, false und 0" als Abschaltwerte gehen sollten, aber vielleicht hab ich was übersehen ...

- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
Spooky
Einsteiger
Einsteiger
Beiträge: 338
Registriert: Sonntag 24. Februar 2002, 10:43

Beitrag von Spooky »

@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
Zaphot
Einsteiger
Einsteiger
Beiträge: 311
Registriert: Freitag 26. Juli 2002, 22:25

Beitrag von Zaphot »

Spooky 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
Jap :)
Qt/embedded ist aber zu Speicher intensiv fürs allnet...
Spooky
Einsteiger
Einsteiger
Beiträge: 338
Registriert: Sonntag 24. Februar 2002, 10:43

Beitrag von Spooky »

@gmo18t & Zaphot

Qt/embedded hab ich jetzt auf dem NSLU2 am laufen. "recorder" konnte ich auch compilieren und läuft. :lol:

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
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
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Beitrag von gmo18t »

Hi,
Spooky hat geschrieben: Qt/embedded hab ich jetzt auf dem NSLU2 am laufen. "recorder" konnte ich auch compilieren und läuft
...
prima !
kannst Du bei Gelegnheit auch mal schildern wie man beim Qt/embedded crosscompilieren vorgehen muß ?
...

Code: Alles auswählen

dboxcmd.cpp:720: warning: comparison is always false due to limited range of
   data type
Kann ich das ignorieren ?
...
ja -> sollte erst mal nicht stören (hat mit dem Rausfiltern von "unbrauchbaren" Zeichen im Filenamen für die Aufnahme zu tun ...)
Nun noch paar Fragen zum eigentlichen Streamingserver...

Wenn ich das richtig gesehen habe, ist streamtsd für Timeshifting gedacht.
...
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.
'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.
...
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 ?

...
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.
(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 -
Spooky
Einsteiger
Einsteiger
Beiträge: 338
Registriert: Sonntag 24. Februar 2002, 10:43

Beitrag von Spooky »

@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.

Code: Alles auswählen

./configure -big-endian -embedded arm -thread -DQT_QLOCAL_USES_FCVT
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
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Beitrag von gmo18t »

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.
...
genauso hab ich das gemeint !

- GMo -
Sagem 1x Kabel, AVIA600_vb028, cam-alpha 01_02_105D, int. ucode, .sp_ts + .hw_sections
Spooky
Einsteiger
Einsteiger
Beiträge: 338
Registriert: Sonntag 24. Februar 2002, 10:43

Beitrag von Spooky »

@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? :gruebel:

Spooky
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Beitrag von gmo18t »

Spooky 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 ?
...
...neee
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.
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? :gruebel:
also auf i386 gibt's keine Probleme damit ... :gruebel:

- GMo -
Frankie270
Neugieriger
Neugieriger
Beiträge: 6
Registriert: Samstag 14. Mai 2005, 13:49

Aufnahme bricht vorzeitig nach erster Sendung ab

Beitrag von Frankie270 »

ChristophK 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.
Nun, das ist bei mir auch so! Ich habe eine Sendung programmiert und
"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...?
Hai1961
Interessierter
Interessierter
Beiträge: 61
Registriert: Donnerstag 24. Januar 2002, 22:37

Beitrag von Hai1961 »

gmo18t hat geschrieben:
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.
Die ersten 2 Zeilen des Makfiles sehen so aus:

Code: Alles auswählen

QTPATH   = /usr/lib/qt3
INST_DIR = /usr/local/bin
also einfach diese entprechend der QT Installation anpassen...

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 -
Selbst compilieren von QT hat nur Mist gebracht, bzw. nicht funktioniert.
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.