Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Video in 800x600 Bilder zerlegen. (https://www.delphipraxis.net/72505-video-800x600-bilder-zerlegen.html)

skunker 1. Jul 2006 20:10


Video in 800x600 Bilder zerlegen.
 
Hallo,

ich möchte folgend nur von der Theorie erstmal anfragen:

Ich habe ein Formular, welches 800x600px groß ist und ein Videofenster enthält.
Dort läuft jetzt ein von mir erstelltes avi.

Jetzt möchte ich an die einzelbilder ran, sodass ungefähr ein Daumenkino entsteht.

So dachte ich, machste einen Timer mit 20ms also 50 Frames pro Sekunde.
In der Routine soll er jeweils vom Videofenster immer ein Screenshot machen und abspeichern.


Würde das praktisch funktionieren oder nicht? Habe so paar Threads gelesen wo sich das Programm dann immer aufhängt.

Ich fahre in paar Tagen im Urlaub und jetzt noch was anfangen was praktisch nicht so einfach geht wäre sinnlos.

skunker 1. Jul 2006 20:18

Re: Video in 800x600 Bilder zerlegen.
 
Eine andere Möglichkeit die mir gerade noch einfällt, wo ich jedoch nicht weiß ob da die Bildqualität druter leidet.

Ich meine beim DSPack konnte man beim abspielen eines Videos auch den jeweiligen Frame anzeigen und zu Frames seeken.

So könnte ich ja einfach von Frame zu Frame seeken und ein Screenshot machen. Das ganze durch einen langsameren Timer also nicht 20ms und das Proggi dürfte nicht abstürzen.

Ich weiß nur nicht wie es dann mit der Bildquali aussieht?
Bei VirtualDub kann man ja zu den Frames seeken, jedoch werden die einzelbilder immer etwas verschwommen angezeigt.
Müsste doch aber wieder normal sein wenn ich das später etwas schneller als Daumenkino ablaufen lasse oder?


mfg
skunker

arbu man 1. Jul 2006 20:31

Re: Video in 800x600 Bilder zerlegen.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das mit einen Timer geht schon, jedenfalls lief es bei mir flüssig war aber auch "nur" eine flsh animation. Hab das alte Projekt mal angehängt.

Phistev 1. Jul 2006 21:09

Re: Video in 800x600 Bilder zerlegen.
 
http://www.radgametools.com/bnkdown.htm das erste, Prog starten, AVI auswählen, Convert a file und als Ausgabeformat BMP oder PNG auswählen

Daniel G 1. Jul 2006 21:11

Re: Video in 800x600 Bilder zerlegen.
 
Ich hab' das so verstanden, dass er das komplett selbst machen will... :gruebel:

Christian Seehase 1. Jul 2006 21:16

Re: Video in 800x600 Bilder zerlegen.
 
Moin skunker,

Zitat:

Zitat von skunker
Ich meine beim DSPack konnte man beim abspielen eines Videos auch den jeweiligen Frame anzeigen und zu Frames seeken.

dass sollte funktionieren.
Wenn ich mich recht entsinne hatte ich hierfür sogar mal ein Beispiel gepostet, da ich vor einem ähnlichen Problem stand und dies lösen konnte.

skunker 2. Jul 2006 00:21

Re: Video in 800x600 Bilder zerlegen.
 
@Christian

ahh gut Danke.
Dann werde ich das mal probieren.

Ich werde auch mal rumstöbern ob ich deinen Artikel finde.


@Björn

hmm joa nur das ich es nicht für flash anis brauche sondern für avis. Ich werde das ganze erstmal mit dem DSPack testen.


@all
Danke an den rest für eure Tipps.

Ich werde morgen mal alles mit dem DSpack testen. Wenn ich es schaffe reiche ich dann noch ein Lagebericht ein, ansonsten sag ich mal bis in 2 Wochen. Am Montag gehts ab nach Miami.

mfg
skunker

Phoenix 2. Jul 2006 09:54

Re: Video in 800x600 Bilder zerlegen.
 
Zitat:

Zitat von skunker
Bei VirtualDub kann man ja zu den Frames seeken, jedoch werden die einzelbilder immer etwas verschwommen angezeigt.
Müsste doch aber wieder normal sein wenn ich das später etwas schneller als Daumenkino ablaufen lasse oder?

Ähh.. Jain. Das kommt auf den verwendeten Vide-Codec drauf an.

Bei MPEG zum Beispiel sind nicht alle Frames Vollbilder (und ich glaube das ist in keinem der gängigen Videocodesc der Fall). Die Framereihenfolge ist bei MPEG z.B.: I-B-B-B-P-B-B-B-P-B-B-B-I
Nur die I-Frames sind Vollbilder, und davon gibt es nur 2 pro Sekunde. Die P-Frames sind aus dem letzten I- oder P-Frame vorausberechnete Informationen (Predicted) und nur die fehlenden Informationen werden hinzugerechnet. Die B-Frames sind auch Vorhersagen über den Bildinhalt, allerdings wird hier nicht nur der vorherige P- oder I-Frame hergenommen sondern auch der nachfolgende, um ggf. fehlende Bildinformationen von vorne (etwas kommt ins Bild) aus den nachfolgenden Bildern (da ist es dann schon im Bild) ergänzen zu können.

Das bedeutet konkret, dass alles was nicht I-Frame ist zu (zum Teil sehr) großen Teilen 'nur' vorausberechnete Bildinformationen sind. Bei den B-Frames ist das ganz deutlich.

Wenn Du nun Einzelframes anguckst, dann siehst Du die Prädiktionsfehler sehr stark bei den B-Frames und nicht ganz so stark bei den P-Frames. Das ist freilich auch vom Grad der Kompression und vom Bildinhalt abhängig (je nachdem wie gut der sich komprimieren lässt). Und diese Prädiktionsfehler machen sich hat vor allem an Kanten bemerkbar, die dann unscharf werden.

Du wirst also mit leichten Fehlern in den Bildern zwangsläufig leben müssen, denn die Bilder sind nicht besser. Bei der schnellen Abfolge fällt das dann freilich nicht mehr auf, bei Einzelbildbetrachtung jedoch schon.

arbu man 2. Jul 2006 10:00

Re: Video in 800x600 Bilder zerlegen.
 
Hi André,

Das ganze sollte eigentlich für jeden Bildschirm ausschnitt funktionieren hatte es nur damals für eine flsh ani benutzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz