Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problem mit Codecs (https://www.delphipraxis.net/109539-problem-mit-codecs.html)

Destro 3. Mär 2008 12:01


Problem mit Codecs
 
Hallo.

Ich bin ein Praktikant der Firma Pie Data und habe den Auftrag bekommen ein Video zu erstellen aus einzelnen Frames, und dieses dann in eine .avi Datei umzuwanden. Dies hab ich gemacht aber wenn ich jetzt die Datei einfügen will, kommt die Fehlermeldung avi kann nicht geöffnet werden. In der Hilfe Datei steht folgendes:

"Das Objekt TAnimate arbeitet mit AVI-Dateien, die entweder unkomprimiert sind
oder mit Hilfe einer Spieldauercodierung (RLE = Run-Length Encoding) komprimiert sind."

Weiß einer wie ich das Video mit RLE Codec versehen kann, so dass es läuft? Es muss aber eine .avi Datei bleiben.


Danke schonmal im vorraus

Muetze1 3. Mär 2008 12:07

Re: Problem mit Codecs
 
... oder einfach bei unkomprimiert bleiben. Die Frage ist doch eher: Wie genau erstellst du das AVI? Das was da rauskommt, scheint ja nicht so richtig stimmig zu sein. Oder spielt er diese Datei z.B. im Media Player ohne Probleme ab?

Destro 3. Mär 2008 12:21

Re: Problem mit Codecs
 
Zitat:

Zitat von Muetze1
... oder einfach bei unkomprimiert bleiben. Die Frage ist doch eher: Wie genau erstellst du das AVI? Das was da rauskommt, scheint ja nicht so richtig stimmig zu sein. Oder spielt er diese Datei z.B. im Media Player ohne Probleme ab?

Im Media Player wird sie normal und problemlos abgespielt aber wenn ich sie bei Delphi einfügen will (oder so hab nich soviel Ahnung davon) sagt der mir nur Avi kann nicht geöffnet werden

edit: ich wollt nur sagen ich hab das video aus einzelnen screenshots mit einem gif animator zusammengesetzt, und dann dieses mit einem gif -> avi konverter in avi umgewandelt

Muetze1 3. Mär 2008 13:07

Re: Problem mit Codecs
 
Und der GIF->AVI Konverter hat keine Optionen diesbezüglich?

Grundsätzlich musst du das AVI transkodieren, also dekodieren und neu einpacken. Von daher kann man sich mit der richtigen Kodierung diesen umfangreichen Schritt sparen und versuchen gleich richtig zu erzeugen. Von daher: hat der GIF -> AVI Konverter diesbezüglich Optionen?

Destro 3. Mär 2008 13:12

Re: Problem mit Codecs
 
Zitat:

Zitat von Muetze1
Und der GIF->AVI Konverter hat keine Optionen diesbezüglich?

Grundsätzlich musst du das AVI transkodieren, also dekodieren und neu einpacken. Von daher kann man sich mit der richtigen Kodierung diesen umfangreichen Schritt sparen und versuchen gleich richtig zu erzeugen. Von daher: hat der GIF -> AVI Konverter diesbezüglich Optionen?

Nein hat er nicht. Man kann nur Gif zu Avi umwandeln aber sonst sind keine Funktionen bei.

Hier ein Bild :?
http://img502.imageshack.us/img502/6...benanntzy6.png

grizzly 3. Mär 2008 16:19

Re: Problem mit Codecs
 
TAnimate beherrscht nur die simplen Kompressionsformate.
Wenn man das AVI beispielsweise mit VirtualDUB erstellt, dann kann man den Kompressor auswählen. Da gibt es meines Wissens immer ein "uncompressed" und ein "Microsoft RLE". Von DivX und anderen muß man halt die Finger lassen...

VirtualDUB kann AVIs auch aus Einzelbildern erstellen und kostet nix. Wär vielleicht einen Versuch wert.

Gruß
Michael

Destro 4. Mär 2008 07:26

Re: Problem mit Codecs
 
Zitat:

Zitat von grizzly
TAnimate beherrscht nur die simplen Kompressionsformate.
Wenn man das AVI beispielsweise mit VirtualDUB erstellt, dann kann man den Kompressor auswählen. Da gibt es meines Wissens immer ein "uncompressed" und ein "Microsoft RLE". Von DivX und anderen muß man halt die Finger lassen...

VirtualDUB kann AVIs auch aus Einzelbildern erstellen und kostet nix. Wär vielleicht einen Versuch wert.

Gruß
Michael

Hallo Michael ;)

Ich hab mir Virtualdub gedownloadet und glaube auch, dass es mit dem Programm geht. Das einzigste Problem ist: In dem Video sind 32 Videos und die spielt der immer verdammt langsam ab. Kann man die Abspielgeschwindigkeit auch verändern? Ich hab schon ein bisschen an Framerate etc rumprobiert aber da hat sich nichts verändert.


Gruß Tobias

grizzly 4. Mär 2008 09:53

Re: Problem mit Codecs
 
Doch, doch, "Video" - "Frame rate..." - "Change to" ist die richtige Stelle im Programm, um die Framerate festzulegen.
Sind die Bilder vielleicht riesengroß und der Rechner zu langsam, als daß er die gewünschten fps schaffen könnte?

Wenn Du mit VirtualDUB das erzeugte AVI öffnest, kannst Du ja mal in der Info schauen, ob das AVI wirklich nur aus 32 frames besteht und die gewünschte fps hat. (Ich nehme an, daß es um 32 Bilder und nicht um 32 Videos ging). Wenn da alles paßt, dann sind vielleicht doch TAnimate und die Hardware schuld?

Gruß
Michael

Destro 4. Mär 2008 10:01

Re: Problem mit Codecs
 
Zitat:

Zitat von grizzly
Doch, doch, "Video" - "Frame rate..." - "Change to" ist die richtige Stelle im Programm, um die Framerate festzulegen.
Sind die Bilder vielleicht riesengroß und der Rechner zu langsam, als daß er die gewünschten fps schaffen könnte?

Wenn Du mit VirtualDUB das erzeugte AVI öffnest, kannst Du ja mal in der Info schauen, ob das AVI wirklich nur aus 32 frames besteht und die gewünschte fps hat. (Ich nehme an, daß es um 32 Bilder und nicht um 32 Videos ging). Wenn da alles paßt, dann sind vielleicht doch TAnimate und die Hardware schuld?

Gruß
Michael

Die Bilder sind sehr klein und haben nur eine Größe von 276X50 Pixel. Wenn ich allerdings bei Framrate mit "Change into" die Zahl veränder, tut sich nichts. Das einzigste, was passiert, ist, wenn ich sie auf sehr niedrig spiele zeigt der nur jedes zweite Bild usw...

Ich möchte aber gerne Jedes Bild, nur soll es nicht 12 Sekunden dauern bis er alles abgespielt hat sondern nur 6 oder so...

Aber danke schonmal für die Antwort(en)

Destro 5. Mär 2008 07:16

Re: Problem mit Codecs
 
Oder kennt jemand ein anderes Programm dafür? :pale:

grizzly 5. Mär 2008 19:54

Re: Problem mit Codecs
 
Jetzt hab ich es mal selber ausprobiert. 32 Bilder (320*240 Pixel) rein in VirtualDUB, unter Compression "Uncompressed" ausgewählt, Audiospur keine, dann als AVI abgespeichert. Gab ein 7MB großes Teil. An den fps hab ich gar nicht erst gedreht, die stehen per default auf knapp 30.

Dann in Delphi7 ein TAnimate auf die Form, den Namen der AVI Datei als FileName eingetragen, einen Button dazu mit dem OnClick-Ereignis TAnimate1.PLay(0, 31, 10), und alles läuft wie erwartet, Film läuft ca. 1sec - Prozessorauslastung < 10%.

Läuft auch mit der 640*480 Pixel großen Variante. Allerdings ist da der erste Durchlauf etwas langsamer. Aber wenn's dann im Cache ist, läufts auch hier.

Keine Ahnung, was da auf Deinem System anders läuft :(

Gruß
Michael

Destro 6. Mär 2008 07:40

Re: Problem mit Codecs
 
Zitat:

Zitat von grizzly
Jetzt hab ich es mal selber ausprobiert. 32 Bilder (320*240 Pixel) rein in VirtualDUB, unter Compression "Uncompressed" ausgewählt, Audiospur keine, dann als AVI abgespeichert. Gab ein 7MB großes Teil. An den fps hab ich gar nicht erst gedreht, die stehen per default auf knapp 30.

Dann in Delphi7 ein TAnimate auf die Form, den Namen der AVI Datei als FileName eingetragen, einen Button dazu mit dem OnClick-Ereignis TAnimate1.PLay(0, 31, 10), und alles läuft wie erwartet, Film läuft ca. 1sec - Prozessorauslastung < 10%.

Läuft auch mit der 640*480 Pixel großen Variante. Allerdings ist da der erste Durchlauf etwas langsamer. Aber wenn's dann im Cache ist, läufts auch hier.

Keine Ahnung, was da auf Deinem System anders läuft :(

Gruß
Michael

Hallo, Michael

Danke für deine Antwort ^^ Ich krieg es auch auf die Beine so ein "7 MB großes Teil" zu kreeieren, allerdings wie gesagt läuft es mir viel zu langsam ab :wall: Naja ist auch nicht so schlimm morgen ist eh mein letzter Tag und dann ist das Praktikum zuende :pale: Aber danke für eure Mühen

EDIT: Ich habs hingekriegt. Mein Fehler war folgender: Ich habe immer das Bild geöffnet. Dann hab ich mal die umgewandelte .avi Datei geöffnet, und die Frame Rate erhöht. Es klappt :love:

Destro 6. Mär 2008 08:33

Re: Problem mit Codecs
 
Zu früh gefreut :(

Die Datei ist dem zu groß. Unkomprimiert ist sie glaubich 1,4 MB oda so groß. Dann hab ich versucht sie mit RLE zu komprimieren bei Virtualdub und beim speicher kam folgende Fehlermeldung:

"Unable to inialize this video codec. Check that the Video COdec is compatible with the output video framesize and that the settings are correct, or try a different one"

Weiß einer woher sie kommt und wie ich sie beheben kann / könnte ?

Medium 6. Mär 2008 09:45

Re: Problem mit Codecs
 
Dein Video hat eine Bildgröße, die der RLE Codec nicht verarbeiten kann (wenn ich die Fehlermeldung mal für dich übersetzen darf). In VirtualDub bekommst du bei der Codecauswahl auch die Restriktionen derer angezeigt. Du musst also um diesen Codec nutzen zu können, dein Video auf eines der vorgegebenen Formate bringen, und im Zweifel dann bei der Ausgabe wieder skalieren. Dass darunter wahrscheinlich die Darstellungsqualität leiden wird sollte klar sein (solang es sich nicht um Vielfache der Ursprünglichen Auflösung handelt).

Destro 6. Mär 2008 10:32

Re: Problem mit Codecs
 
Zitat:

Zitat von Medium
Dein Video hat eine Bildgröße, die der RLE Codec nicht verarbeiten kann (wenn ich die Fehlermeldung mal für dich übersetzen darf). In VirtualDub bekommst du bei der Codecauswahl auch die Restriktionen derer angezeigt. Du musst also um diesen Codec nutzen zu können, dein Video auf eines der vorgegebenen Formate bringen, und im Zweifel dann bei der Ausgabe wieder skalieren. Dass darunter wahrscheinlich die Darstellungsqualität leiden wird sollte klar sein (solang es sich nicht um Vielfache der Ursprünglichen Auflösung handelt).

Mein Bild hat eine Größe von 276X50...

Auf welche größe müsst ichs machen damit RLE funkt? :gruebel:

grizzly 6. Mär 2008 12:48

Re: Problem mit Codecs
 
Mit einem Vielfachen von 16 sollte man auf der sicheren Seite sein (Meist genügt schon Vielfaches von 4). Also beispielsweise 288*64. Die Bildgröße kannst Du in VirtualDUB mit Hilfe der Filter verändern. Dabei hast Du die Wahl, die Bilder zu skalieren, oder einfach einen Rand dazuzumachen.

Ich muß allerdings gestehen, daß bei mir der RLE auch nicht komprimieren mag. VirtualDUB vermutet gar, daß mein Codec evetuell nur das Dekodieren, aber nicht das Codieren beherrscht. (Also gar kein "CoDec" ist sondern nur ein "Dec", Späßle).

Wenn es bei Dir ähnlich ist, dann müßtest Du vielleicht doch statt TAnimate einen Media-Player verwenden, und dann das Filmchen mit einem moderneren CoDec komprimieren.

Edit:
Genauer gesagt: Vielleicht kannst Du ja Delphis TMediaPlayer verwenden? Den findest Du in der Komponentenpalette unter "System". Zum Anzeigen des Films brauchst Du dann allerdings noch ein Panel, welches Du im Objektinspektor beim TMediaplayer in der Eigenschaft "Display" angeben mußt. (Sonst läuft der Film im eigenen Fenster).
(Zum schnellen Ausprobieren solltest Du beim TMediaPLayer im Objektinspektor nicht nur den Dateinamen angeben, sondern auch die Eigenschaft "AutoOpen" auf true setzen)
Der TMediaplayer kommt mit viel mehr Codecs zurecht als das gute alte TAnimate.


Gruß
Michael

Medium 6. Mär 2008 13:41

Re: Problem mit Codecs
 
Zitat:

Zitat von Destro
Auf welche größe müsst ichs machen damit RLE funkt? :gruebel:

Wie bereits geschrieben: Klick den Codec in VDub an, und lies rechts was die Restriktionen sind. Ausm Kopf kenn ich die Größenbeschränkungen aller Codecs leider auch nicht.

Was die Vielfache angeht, so ist das bedingt durch die standardmäßigen Blockgrößen bei jpeg-Basierten Verfahren. RLE ist jedoch nicht jpeg-Basiert, und könnte daher u.U. auch anderes zulassen.

Destro 10. Mär 2008 13:11

Re: Problem mit Codecs
 
Zitat:

Zitat von grizzly
Mit einem Vielfachen von 16 sollte man auf der sicheren Seite sein (Meist genügt schon Vielfaches von 4). Also beispielsweise 288*64. Die Bildgröße kannst Du in VirtualDUB mit Hilfe der Filter verändern. Dabei hast Du die Wahl, die Bilder zu skalieren, oder einfach einen Rand dazuzumachen.

Ich muß allerdings gestehen, daß bei mir der RLE auch nicht komprimieren mag. VirtualDUB vermutet gar, daß mein Codec evetuell nur das Dekodieren, aber nicht das Codieren beherrscht. (Also gar kein "CoDec" ist sondern nur ein "Dec", Späßle).

Wenn es bei Dir ähnlich ist, dann müßtest Du vielleicht doch statt TAnimate einen Media-Player verwenden, und dann das Filmchen mit einem moderneren CoDec komprimieren.

Edit:
Genauer gesagt: Vielleicht kannst Du ja Delphis TMediaPlayer verwenden? Den findest Du in der Komponentenpalette unter "System". Zum Anzeigen des Films brauchst Du dann allerdings noch ein Panel, welches Du im Objektinspektor beim TMediaplayer in der Eigenschaft "Display" angeben mußt. (Sonst läuft der Film im eigenen Fenster).
(Zum schnellen Ausprobieren solltest Du beim TMediaPLayer im Objektinspektor nicht nur den Dateinamen angeben, sondern auch die Eigenschaft "AutoOpen" auf true setzen)
Der TMediaplayer kommt mit viel mehr Codecs zurecht als das gute alte TAnimate.


Gruß
Michael



Funktioniert nicht selbe Fehlermeldung :wall: 288X64 funktioniert nicht. Selbe Fehlermeldung :(

Medium 10. Mär 2008 13:26

Re: Problem mit Codecs
 
Wer Tipps nicht beachtet, hat es nicht verdient dass es Funktioniert.

Destro 10. Mär 2008 15:01

Re: Problem mit Codecs
 
Bei den Restriktionen steht nix bestimmtes bei wegen der Größe da hab ich schon gekuckt. Und im jpeg kann ichs nicht speichern dann wären die Bilder 1. zu verschwommen und 2. müsste ich dann alles was ich gemacht habe noch einmal umwandeln. :shock:

Medium 11. Mär 2008 19:04

Re: Problem mit Codecs
 
Zitat:

Couldn't find compatible format.
Possible reasons:
* Codec may only support YUV
* Codec might be locked
* Codec might be decompression only
Das steht in meinem VDub wenn ich den MS RLE Codec auswähle. Was folgern wir daraus? Riiiichtig, damit Videos encoden wird, ganz egal in welcher Auflösung, nicht gehen, aus eben min. einem der o.g. Gründe. Lesen -> denken -> posten.

Was du da mit jpeg schreibst ignorier ich mal, weil das ergibt keinen Sinn.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 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