ggrab: Streaming Tool unter Linux, Windows, MacOs, Solaris..

Digital Recording
Gandalfx
Einsteiger
Einsteiger
Beiträge: 394
Registriert: Mittwoch 9. Oktober 2002, 11:12

ggrab: Streaming Tool unter Linux, Windows, MacOs, Solaris..

Beitrag von Gandalfx »

Hallo zusammen,
ich bin gerade dabei, eine neue Streaming Engine unter Linux zu schreiben. Grund hierfür ist, daß ich mit allen bisherhigen Tools mehr oder weniger Probleme habe (d.h. nicht, das Programm ist besser wie die bisherigen, ich hoffe aber so, daß ich Lösungen für meine Probleme eher finde). Mittlerweile kann ich auch fast alle Begriffe der entsprechenden ITU-Richtlinien fehlerfrei buchstabieren ;-) .

Ich gehen mit dem Programm den Weg, möglichst keine Daten wegzuwerfen, die originalen Timing-Informationen zu erhalten, und bei Fehlern im Stream den Player möglichst viel korrigieren zu lassen. Aus diesem Grund gibt es auch keine Resyncs (bisher). Um es gleich vorweg zu sagen: Ich kann nicht sagen, ob dieser Weg von Erfolg gekrönt ist, da ich nicht weiß, wie verschiedene Player auf den erzeugten Stream reagieren.

In meinem bescheidenen Umfeld: deutsche FTA und Premiere Super auf Astra, funktioniert die Sache schon ganz gut. Erwartet jedoch noch nicht zuviel, es ist Version 0.01, ich würde es als "Proof of Concept" bezeichnen...

Zur Benutzung:
Das Programm ist voll aufrufkompatibel zum bisherigen grab, so daß es auch mit qbobsd eingesetzt werden kann. Die nomux-Option ist noch nicht implementiert.


Wo ich noch Hilfe benötige:
Welche Player, Authoring Tools, Remuxer usw. funktionieren (oder auch nicht)? Ich freue mich auch über eine positive Rückmeldung ;-).
Wie schreibt man einen möglichst kompatiblen MPEG-Stream?
Bitte schickt mir keine megabytegroßen Videoclips, wo die Fehler sind, in den nächsten Tagen werde ich ein Analysetool fertigmachen, der einen Log von einem Stream machen kann.

Download:
http://www.menzebach.de

_________________
Gruß
Gandalfx
Zuletzt geändert von Gandalfx am Dienstag 17. Dezember 2002, 21:47, insgesamt 1-mal geändert.
MrFX
Interessierter
Interessierter
Beiträge: 84
Registriert: Samstag 21. Juli 2001, 00:00

Beitrag von MrFX »

Hi,

da muß ich mich gleich mal zu Wort melden... :D

Hab das gerade mal getestet, und ich muß sagen, es klappt besser als grab...
Denn meine Streams, die ich mit grab aufgenommen habe, spielt mein Centrum Standalone-DVD-Player nicht ab.
M2Edit zeigte da immer an, daß das File beschädigt ist.

Bei den von ggrab aufgenommenen Streams habe ich diesen Fehler nicht mehr. Allerdings hab ich die Files noch nicht direkt mit dem Player getestet, werd ich aber gleich machen, wenn ich von Arbeit komme und das Ergebnis hier kundtun.

Achso, WinDVD spielt die auch anstandslos ab.

Und nochwas, wollte mal selbst kompilieren, wird aber nur folgendes angezeigt:

Code: Alles auswählen

g++ -g  ggrab.cpp list.cpp cbuffer.cpp tools.cpp -o ggrab -lpthread
ggrab.cpp: In function `int main(int, char **)':
ggrab.cpp:120: implicit declaration of function `int atol(...)'
ggrab.cpp:128: implicit declaration of function `int atoi(...)'
tools.cpp: In function `void fill_pes_pts(unsigned char *, double)':
tools.cpp:53: integer constant out of range
tools.cpp:54: integer constant out of range
tools.cpp: In function `void fill_pp_scr(unsigned char *, double)':
tools.cpp:88: integer constant out of range
tools.cpp:89: integer constant out of range
make: *** [ggrab] Error 1
MrFX
Philips-Sat-2@Linux
Nokia-Kabel-2@Linux
Nokia-Sat-1@DVB2000 (die gute alte :D )

lange SCSI-Kabel und DAS Schaltnetzteil für’s Auto
Moderator@DVB2K-Board
nameless
Einsteiger
Einsteiger
Beiträge: 158
Registriert: Freitag 9. November 2001, 00:00

Beitrag von nameless »

moin,

werde ich heute abend doch mal glatt ausprobieren :D :D :D

cu
nameless
fragenden menschen kann geholfen werden.
also frag !
Gandalfx
Einsteiger
Einsteiger
Beiträge: 394
Registriert: Mittwoch 9. Oktober 2002, 11:12

Beitrag von Gandalfx »

@MrFx

mein gcc 3.2 reagiert offensichtlich ein bischen anders.

Kannst in ggrab.cpp
#include <stdlib.h> einfügen

und in tools.h in den angemeckerten Zeilen 0x1fffffff oder so ähnlich ein ULL anhängen
0x1fffffffULL. Neue Version wahrscheinlich heut abend.

btw.
Ich werde es heut abend auch mal unter cygwin testen

________________
Gruß
Gandalfx
wander-baustelle
Neugieriger
Neugieriger
Beiträge: 17
Registriert: Sonntag 27. Januar 2002, 19:50

Beitrag von wander-baustelle »

Hallo,

leider schmiert ggrab bei mir ab, sowohl das mitgelieferte Binary als auch die selbstkompilierte Version:
~/ggrab-0.01> ./ggrab -p 3ff 400 -host dbox2
WARNING: unable to lock memory. Swapping may disturb the video read thread
WARNING: unable to lock memory. Swapping may disturb the audio read thread
WARNING: audio read thead cannot enable real-time scheduling - will try to renice
WARNING: cannot enable real-time scheduling for video read thread - will try to renice 1
WARNING: audio read thread cannot change nice level - continuing
WARNING: video readthread cannot change nice level - continuing
Speicherzugriffsfehler
~/ggrab-0.01> gdb ggrab
GNU gdb 5.2.1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i586-suse-linux"...
(gdb) set args -p 3ff 400 -host dbox2
(gdb) run
Starting program: ggrab -p 3ff 400 -host dbox2
[New Thread 1024 (LWP 5503)]
[New Thread 2049 (LWP 5504)]
[New Thread 1026 (LWP 5505)]
WARNING: unable to lock memory. Swapping may disturb the video read thread
[New Thread 2051 (LWP 5506)]
WARNING: cannot enable real-time scheduling for video read thread - will try to renice 1
WARNING: unable to lock memory. Swapping may disturb the audio read thread
WARNING: video readthread cannot change nice level - continuing
WARNING: audio read thead cannot enable real-time scheduling - will try to renice
WARNING: audio read thread cannot change nice level - continuing

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 2051 (LWP 5506)]
0x0804b6df in CBuffer::GetNextFillBuffer(unsigned char**) (this=0x804fe40,
ppBuf=0x1) at cbuffer.cpp:36
36 *ppBuf=m_pIn;
(gdb)
Hab's mit gcc3.2 selber kompiliert...
Gandalfx
Einsteiger
Einsteiger
Beiträge: 394
Registriert: Mittwoch 9. Oktober 2002, 11:12

Beitrag von Gandalfx »

:oops: Peinlicher Anfänger-Pointer-Fehler, ist gefixt
Spock
Neugieriger
Neugieriger
Beiträge: 5
Registriert: Donnerstag 20. Juni 2002, 17:11

Beitrag von Spock »

Hi,
das sieht doch schonmal ganz nett aus. Was mich aber interessieren würde ist ob ich auch Dateien größer als 1GB aufnehmen kann und nicht alle 1GB automatisch gesplittet werden ? Ich find es immer recht doof erst alle files mit cat zusammenzufügen und dann mit transcode weiterzubearbeiten.

mfg
Spock
Gandalfx
Einsteiger
Einsteiger
Beiträge: 394
Registriert: Mittwoch 9. Oktober 2002, 11:12

Beitrag von Gandalfx »

Hallo zusammen,
eine neue Version da. Die maximale Dateigröße sollte 1 TB sein ;-).
Die Default-Einstellung für einen Split ist 2 GB.
Für die Windows User: Es läuft auch mit kleinen Einschränkungen unter Cygwin. (Programm läßt sich mit CTRL-C noch nicht sauber abbrechen).

Im tar-file ist auch ein cygwin executable, wenn ihr die cygwin DLL noch nicht habt:

http://int.mw-itcon.de/cygwin1.zip

_____________
Gruß
Gandalfx
nomade
Erleuchteter
Erleuchteter
Beiträge: 452
Registriert: Montag 15. Oktober 2001, 00:00

Beitrag von nomade »

klasse!frischer wind in der streaming "community" !

*nach oben damit*
chkdesign
Senior Member
Beiträge: 1544
Registriert: Freitag 12. Oktober 2001, 00:00

Beitrag von chkdesign »

Ich hab' das Teil gerade mal unter Win2000 cmd getestet. Und habe auf dem resync Sender schlechthin mal ne Minute gestreamt.

Erster kurzer Eindruck: funktioniert!

mpeg lässt sich in allen Tools öffnen, die ich benutze. (maestro, tmpegenc, vitec mpeg)

Syncs scheint das Tool wirklich zu vermeiden, da ich an einer Stelle einen Fehler/Verpixelung habe, die in Wingrab wahrscheinlich zu einem sync geführt hätte.

Einen kleinen Schönheitsfehler hat es noch, es hängt an den Dateinamen 1.vob (test.mpg -> test.mpg1.vob) an.
Bild
DaPapst
Interessierter
Interessierter
Beiträge: 77
Registriert: Montag 3. September 2001, 00:00

Beitrag von DaPapst »

Mh, ist vielleicht noch ein wenig früh, aber vielleicht schonmal als anregung:
Vielleicht kann man ggrab noch als WinGrabEngine.dll Ersatz konzipieren, dann könnten auch Windows User - Ngrab Fans direkt von der "intelligenteren" Grab Logik profitieren.
Oder vielleicht kann sich Gandalfx ja mal mit ... mh... von wem war die WinGrabEngine noch gleich? zusammensetzten...
WIMP
Einsteiger
Einsteiger
Beiträge: 243
Registriert: Montag 6. August 2001, 00:00

Beitrag von WIMP »

@Gandalfx: Respekt! Klasse Tool!
Ich habe gerade einen 16:9 Film mit meinem P166 auf ein Soft-Raid 5 gestreamt. Kein einziger Hänger bzw Resync, CPU-Auslastung bei 50%.
Wenn Du jetzt noch die Streamingserver-Funktionalität (also Aufnehmen per dbox-Fernbedienung) einbauen könntest, wäre das Tool perfekt!
Bitte weiter so!
Gruesse

WIMP
Gandalfx
Einsteiger
Einsteiger
Beiträge: 394
Registriert: Mittwoch 9. Oktober 2002, 11:12

Beitrag von Gandalfx »

Hallo zusammen,
scheint ja erst mal einigermassen zu laufen. :D

@chkdesin -> works as designed ;-)

Wg. Weiterentwicklung:

Ich warte noch eine Zeit bzgl. Rückmeldungen und noch ein paar Schönheitsreparaturen unter cygwin. Ich spreche auch mal die Jungs an, die tuxvision, qbopsd usw. gemacht haben. Vielleicht kann ich mit denen ein Interface vereinbaren. Wenn sich dort nichts ergibt, mache ich noch den Streaming-Server dazu, aber nur Command-Line, ohne Klick und Bastel.

Schönen Gruß und testet noch ein bischen....
________________________
Gandalfx
bommelid
Interessierter
Interessierter
Beiträge: 75
Registriert: Freitag 3. Mai 2002, 22:05

Beitrag von bommelid »

Wenn sich dort nichts ergibt, mache ich noch den Streaming-Server dazu, aber nur Command-Line, ohne Klick und Bastel.

Das fänd' ich sowieso besser. dann kann man wenigstens 'ne ältere Kiste zum Streamen hinstellen, ohne gleiche QT etc. drauftun zu müssen. Sowas startet dann auch schön schnell und man hat mehr Platz zum Streamen.

Gruß
bommelid

PS: Die Möglichkeit eine 2-Farb-LED (rot/grün) anzusteuern (z.B. über serielle Schnittstelle) wäre nicht schlecht als Anzeige für eine korrekte Verbindung zur Box. So wie bei NGrab in der Taskleiste.
Aber das wird ja sicher eh Opensource :)
Nokia 2xI, AVIA 500
Racer1
Interessierter
Interessierter
Beiträge: 31
Registriert: Sonntag 3. November 2002, 12:41

Beitrag von Racer1 »

Gandalfx hat geschrieben:Streaming-Server dazu, aber nur Command-Line, ohne Klick und Bastel.
ja bitte!!!

streaming-server dazu!! jajaja :D :D :D
und die idee ohne "-gui" ist einfach klasse, genau dass ist das was die leute suchen!

brauch ich nur an mich denken, ich hab X stunden versch*beep* bis qt fertig kompiliert war (und dann hatte ich die falsche qt-version :().

thx, cu racer1


######################

...so meine aufnahme läuft schon!! mal gucken :)
wie geagt, eine streamingserver unterstützung mit epg->filename, währe schon ne feine sache!

cu racer1
Luxi
Interessierter
Interessierter
Beiträge: 39
Registriert: Dienstag 14. Mai 2002, 10:37

Beitrag von Luxi »

Hi Gandalfx
ich finde das "ggrab" ziemlich prima habe aber ein problem mit dem Ergebniss. Auf meinen beiden Rechnern (Win2k NTFS XP1900 und WIN XP FAT32 PII 366) kommen jeweils Streams heraus bei denen fast nur Artefakte, Klötzchen und bunte-(grüne, rote) Querstreifen zu sehen sind.
Im Hintergrund kann man dann den Film erahnen.
was mache ich falsch?

Gruß
Luxi
Gandalfx
Einsteiger
Einsteiger
Beiträge: 394
Registriert: Mittwoch 9. Oktober 2002, 11:12

Beitrag von Gandalfx »

@Luxi
mmmh,
ist das bei verschiedenen Programmen so?
Hast du einen anderen Player versucht.
Wenn es gar nicht geht, kannst du mir die ersten 2 MB igrendwo zum Download bereitstellen?
Ach so: Welche Werte haben vhigh und ahigh nach einiger Zeit beim Streamen?

Gruß
Gandalfx
bommelid
Interessierter
Interessierter
Beiträge: 75
Registriert: Freitag 3. Mai 2002, 22:05

Beitrag von bommelid »

Hi,
kann die Aussage von Luxi bestätigen.
Habe mit ggrab unter WinXP gestreamt (verschiedene Sender getestet).
Haufenweise grüne Artefakte. Der Ton ist auch nicht in Ordnung.
ziehe ich das File in DVD2AVI ist das Ergebnis genau gleich.

Gruß
bommelid
Nokia 2xI, AVIA 500
MrFX
Interessierter
Interessierter
Beiträge: 84
Registriert: Samstag 21. Juli 2001, 00:00

Beitrag von MrFX »

Tach ;)

So, hab die Streams von ggrab jetzt mal auf'm Hardware-Player getestet.

Das einzige, was ich festgestellt habe, daß ab und zu mal 'n paar Aussetzer drin sind (die übrigens auch mit WinDVD auftreten).

Ich würde dir ja 'n kleines Schnipsel schicken (nur so 5 Sekunden), aber ich weiß nicht, ob dir das was bringt (wie du ja schon geschrieben hast).

Und evtl. bilde ich es mir auch nur ein, aber mir scheint der Ton zum Video nicht ganz synchron... vielleicht liegts auch am Sender (MTV).

Aber auf alle Fälle spielt der Player das schon mal ab... ;)

MrFX
Philips-Sat-2@Linux
Nokia-Kabel-2@Linux
Nokia-Sat-1@DVB2000 (die gute alte :D )

lange SCSI-Kabel und DAS Schaltnetzteil für’s Auto
Moderator@DVB2K-Board
MrFX
Interessierter
Interessierter
Beiträge: 84
Registriert: Samstag 21. Juli 2001, 00:00

Beitrag von MrFX »

Hier mal meine Werte aus dem 'at'-log:

61:51 vid 2309 kbit/s aud 192 kbit/s syn 0 drop 0s vhigh 72818 ahigh 16426

Hat sich die ganze Zeit außer der Video- und Audio-Datenrate nichts geändert.

Mal sehen, ob ich auch mal 'n Stück rausschneiden kann...

MrFX
Philips-Sat-2@Linux
Nokia-Kabel-2@Linux
Nokia-Sat-1@DVB2000 (die gute alte :D )

lange SCSI-Kabel und DAS Schaltnetzteil für’s Auto
Moderator@DVB2K-Board
Gandalfx
Einsteiger
Einsteiger
Beiträge: 394
Registriert: Mittwoch 9. Oktober 2002, 11:12

Beitrag von Gandalfx »

So,
ich hab gerade selber mal ein Stück MTV gestreamt. Der Stream ist da noch nicht ganz in Ordnung, er ruckelt leicht. Werde mal ein wenig nachschauen.

@bommelid, @Luxi
Downloaded mal die neueste Version und postet hier mal welches Programm ihr gestreamt habt, und die Werte von ahigh und vhigh so nach einigen Minuten.


Übrigens noch zur Erklärung: vhigh und ahigh sind die Anzahl Bytes,
die bei einem Ausfruf direkt vom Netz gelesen werden. Dieses sollte eigentlich bei einem Rechner so ab 400 Mhz unter 30.000 bleiben. Sind hier deutlich über 64.000 deutet das darauf hin, daß der entsprechende Thread, der von der Schnittstelle liest, nicht oft genug drankommt. Unter Linux ist dieser Thread hoch priorisiert, aber unter cygwin weiß ich das nicht. Dann werden Aussetzer sehr wahrscheinlich. (Bei meinem Rechner sind hier bis ca. 20.000). Dieses ist programmiertechnisch nicht zu umgehen.

btw. Es ist jetzt auch ein binary für MacOs X dabei. Desweiteren kann jetzt das Streamen mit q<cr> abgebrochen, und mit n<cr> eine neue Datei angefangen werden.

__________________
Gruß
Gandalf
bommelid
Interessierter
Interessierter
Beiträge: 75
Registriert: Freitag 3. Mai 2002, 22:05

Beitrag von bommelid »

habe jetzt mal 4min. von Prem4 gestreamt.
vhigh: 16384
ahigh: 11060

die Priorität des prozesses per Hand auf Echtzeit zu setzen brachte auch nix.

Gruß
bommelid
Nokia 2xI, AVIA 500
Gandalfx
Einsteiger
Einsteiger
Beiträge: 394
Registriert: Mittwoch 9. Oktober 2002, 11:12

Beitrag von Gandalfx »

@bommelid
Die Werte sind so vollkommen ok! Höher setzen kann nichts bringen. Aber das Bild ist immer noch kaputt?
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

Sieht bisher ganz ganz gut aus. Hab allerdings auch noch nicht zuviel getestet.

Was (bei mir?) nicht geht, ist SÜDWEST RP streamen:

Code: Alles auswählen

ggrab -p c1d c1e -host 192.168.1.49 -o TEST -m 1 
waiting for connection...
Frm: 124
Frm: 412
Frm: 700
Frm: 995
Frm: 1283
Frm: 1571
m_fill_audio: audio packet: 36:DA:D6:18--  C0: 05 : 1826
m_fill_audio: no audio framesize found!
Edit:
Hast Du schon was am Streaming-Server gemacht? Ich hab mir gestern mal rudimentären Code für die Funktionalität bei TuxVision geklaut - kannste gerne haben 8)
There are 10 types of people in the world: those who know binary and those who don't
Gandalfx
Einsteiger
Einsteiger
Beiträge: 394
Registriert: Mittwoch 9. Oktober 2002, 11:12

Beitrag von Gandalfx »

Hallo,
das mit Südwest liegt an den krummen Audio-Framesizes, aber du hast mir das im Trace schon die Lösung (fast) gegeben. Schau ich mir in den nächsten Tagen an.

Am Streaming-Server hab ich noch nicht angefangen. Die nächsten Tage werde ich noch am Ruckeln und Synchronität forschen. Wenn du den Code schon rausgesucht hast, kannst du ihn mir gerne! schicken :P

<pm-ggrab at menzebach.de>

Gruß