Bild aus .ts stream extrahieren

Günther
Developer
Beiträge: 587
Registriert: Freitag 9. September 2005, 21:48

Bild aus .ts stream extrahieren

Beitrag von Günther »

Kann mir jemand einen (möglichst detailierten) Tip geben, wie ich am einfachsten ein Bild von einer bestimmten Position (Sekunden von Fileanfang) aus einem .ts stream (von der dbox via nfs) extrahieren kann? Ich wollte das Bild in den MovieBrowser einblenden (halbe oder viertel Größe) und kenne mich mit .ts und Bildern noch gar nicht so gut aus.

Optional wäre es auch interessant das Gleiche mit einem auf Festplatte liegendem bmp-File zu machen...

Thx
Günther
gmo18t
Erleuchteter
Erleuchteter
Beiträge: 553
Registriert: Freitag 27. Februar 2004, 14:30

Re: Bild aus .ts stream extrahieren

Beitrag von gmo18t »

Günther hat geschrieben:Kann mir jemand einen (möglichst detailierten) Tip geben, wie ich am einfachsten ein Bild von einer bestimmten Position (Sekunden von Fileanfang) aus einem .ts stream (von der dbox via nfs) extrahieren kann? Ich wollte das Bild in den MovieBrowser einblenden (halbe oder viertel Größe) und kenne mich mit .ts und Bildern noch gar nicht so gut aus.

Optional wäre es auch interessant das Gleiche mit einem auf Festplatte liegendem bmp-File zu machen...

Thx
Günther
1) um das Bild anzuzeigen muß es erst mal decodiert werden
2) um das Bild zu decodieren, mußt Du es erst mal aus dem TS-Stream extrahieren (encodierte Form) - das ist aber nur für "I-Frames" sinnvoll.
3) wenn es kein I-Frame ist, mußt Du beginnend ab dem zugehörigen "GOP" alle Bilder bis zum gewünschten extrahieren
und dann diese "Sequenz" decodieren (bei "open GOPs" ist sogar noch ein GOP" mehr nötig).

Das Scannen des Streams und das Extrahieren kannst Du durchaus per DBox-Coding realisieren, beim Decodieren wird es ein wenig schwieriger:
I-Frames kann die Box in einem speziellen Modus (siehe VIDEO_STILLPICTURE der DVB-API) ja recht simpel zur Anzeige bringen,
aber beim GOP decodieren sieht's da schon wesentlich komplizierter aus - vorallem,
weil die Firmware/Hardware der Box ja recht zickig ist beim Neuaufsetzen eines Streams an einer bestimmten Stelle
(vgl. dazu "minutenweise Springen" im movieplayer).
Fraglich ist sowieso, ob du den Box-Decoder für dein Vorhaben überhaupt nutzen kannst ?

Natürlich könnte man das Decodieren auf der Box per Software machen, wobei bei ein paar Bildern dennoch mit Verzögerungen im
Sekundenbereich zu rechnen wäre, was bei Scans über viele Filme dann zur Geduldsprobe ausarten würde.

Ansonsten wäre ein "sever basierter" Decoder nötig, da hat man dann vielfältige Möglichkeiten ...

Letztendlich - wenn man nun noch keine .bmp Bilder vorliegen hat -wäre die Beschränkung auf I-Frames wohl der beste Kompromiss.
Weiß allerdings nicht, wie sich die Box verhält, wenn man den "still picture" Mode intensiv nutzt (bzw. öfters an/ausschaltet o.ä).

noch mehr Details zum Parsen von TS bzw. MPEG streams kann ich dann noch rüberreichen,
nachdem du dir nun eine erste Vorstellung zu dieser Thematik gemacht hast.

Wie BMPs o.ä. im OSD angezeigt werden können, weiß ich leider nicht.

Noch so ne Idee am Rande: da gib's doch die Serviceinfo , bei der das laufende Programm als kleines Bild eingeblendet wird (weiß allerdings nicht genau, wie's realisiert ist).
Das könnte man evtl. auch mit einem "Auschnitt" des entspr. .ts Files machen indem man eben nur über einen gewissen Teil des Filmes "loopt" ...

- GMo -
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

Re: Bild aus .ts stream extrahieren

Beitrag von Npq »

gmo18t hat geschrieben:Weiß allerdings nicht, wie sich die Box verhält, wenn man den "still picture" Mode intensiv nutzt (bzw. öfters an/ausschaltet o.ä).
Sie gibt jedesmal eine Fehlermeldung "Operation not supported" zurück. ;)

Das Ioctl ist im Treiber bislang noch nicht implementiert.