Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Videos mit VFW in OpenGL Darstellen (https://www.delphipraxis.net/70057-videos-mit-vfw-opengl-darstellen.html)

Reddog 24. Mai 2006 12:39


Videos mit VFW in OpenGL Darstellen
 
Hallo,

ich stell jetzt doch mal meine Frage, nachdem ich alles abgesucht habe.

Ich möchte Videos in OpenGL abspielen. Dazu schien mir ziemlich VFW geeignet zu sein.
Hab auch schon ein kleines Testprogramm fertig. Das funktioniert aber leider nur bei unkomprimierten
AVI-Dateien. Andere Dateien werden zwar auch geöffnet, aber brechen ab, beim Aufruf von AviStreamGetFrameOpen.
Das heißt dann laut Hilfe, dass kein Dekompressor gefunden wurde.

Die codecs müssten bei mir aber installiert sein, zumindest gehen die AVIs ja im MediaPlayer u.s.w.

Ich hab versucht AviStreamGetFrameOpen mit nil als zweiten Parameter oder mit einem gewünschten Format aufzurufen mit dem gleichen Resultat.

Tja, vielleicht kann mir ja jemand helfen. Wie's ausschaut hat Aya auch was mit OpenGL und VFW vor.
Also Danke schon mal.

Reddog.

Reddog 24. Mai 2006 13:13

Re: Videos mit VFW in OpenGL Darstellen
 
Noch ne ganz blöde Frage dazu: liegt das daran, dass ich ffdshow installiert habe und das nur mit DirectShow arbeitet?

Aya 24. Mai 2006 21:46

Re: Videos mit VFW in OpenGL Darstellen
 
Hi,

dasselbe problem habe ich mit VFW auch... funktioniert nur bei 50% aller AVIs...
Steige deswegen grad auf DirectDraw um, der bekommt dann sogar WMVs etc proclemlos hin (und man kann auch DirectDraw als Texturen in OpenGL benutzen)

Aya~

Reddog 25. Mai 2006 11:36

Re: Videos mit VFW in OpenGL Darstellen
 
Also ich beschäftige mich gerade mit SDL insbesondere mit der SMPEG.dll. Da gibt's JEDI-Header zu. Das sollte auch alles (oder vieles) unterstützen, ist aber auch sehr portabel. DirectDraw lässt sich, nehm ich mal an, nicht so gut auf Linux portieren. Naja mal schauen was dabei herauskommt. Schade, VFW war schön einfach. :(

Danke für die Antwort.

Reddog 25. Mai 2006 12:14

Re: Videos mit VFW in OpenGL Darstellen
 
Sag mal Aya kannste mir das mit DirectDraw und OpenGL Texturen etwas genauer erklären?
Weil SMPEG ist natürlich auch nur für mpegs (wer hätte das gedacht :(). Vielleicht muss ich ja doch directdraw benutzen, aber wäre sehr gut, wenn ich trotzdem in OpenGL zeichnen könnte.

Aya 25. Mai 2006 15:59

Re: Videos mit VFW in OpenGL Darstellen
 
Hi,

bin im moment auch noch dabei mich in DirectDraw einzuarbeiten.. :)

Les mal hier:
Weblink zu Microsoft MSDN: Grabbing a Poster Frame

Damit bekommt man immerhin ein Bild des Videos.. aber, leider ist die variante viel zu langsam um damit ein video flüssig abzuspielen... die andere methode ist via SampleGrabber (auch da beschrieben, bzw ein kapitel höher). Geht zwar damit ziemlich problemlos etc, aber damit hast du nur die selben möglichkeiten als würdest du z.B. ne TMediaPlayer Komponente benutzen... zumindest habe ich damit nochnicht rausgefunden wie ich einfach Frame 1, 2, 3, 4 und 5 nacheinander grabben kann, so wie es mit vfw geht.. :(

Aya~

EWeiss 5. Nov 2010 02:20

AW: Videos mit VFW in OpenGL Darstellen
 
Versuche mich auch gerade mit VFW da ich ebenfalls ein Video auf OpenGl Darstellen will
Mein Problem ist nur Das D2009 ärger macht mit der Konvertierung von PChar nach PAnsiChar

Delphi-Quellcode:
procedure OpenAVI(filename : String);
begin
  AVIFileInit;
  if AVIFileOpen(AviFile, PChar(FileName), OF_READ or OF_SHARE_DENY_WRITE, nil) = 0 then
Delphi-Quellcode:
function   AVIFileOpen(var ppfile: PAVIFILE; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall; external AVIFILDLL name 'AVIFileOpenA';
Das problem ist das wenn ich PAnsiChar anstelle von PChar verwende
meckert der Compiler
Zitat:

[DCC Warnung] cube.dpr(107): W1044 Bedenkliche Typumwandlung von string in PAnsiChar
Wenn ich nun das Video starten will funktioniert es nicht..
Denke das liegt daran das Die Library PChar erwartet und nichts anderes akzeptiert.

Unter D2006 gibt es da keine probleme..

Was machen ?

gruss

Bummi 5. Nov 2010 07:04

AW: Videos mit VFW in OpenGL Darstellen
 
@EWeiss
Delphi-Quellcode:
procedure OpenAVI(filename : AnsiString);

EWeiss 5. Nov 2010 09:45

AW: Videos mit VFW in OpenGL Darstellen
 
Zitat:

Zitat von Bummi (Beitrag 1059789)
@EWeiss
Delphi-Quellcode:
procedure OpenAVI(filename : AnsiString);

Danke schön ;)
soweit war ich auch schon..
Delphi-Quellcode:
AVIStreamOpenFromFile(AVIStream, FileName, streamtypeVIDEO, 0, OF_READ, nil);
Delphi-Quellcode:
[DCC Warnung] VisUnit.pas(261): W1057 Implizite String-Umwandlung von 'AnsiString' zu 'string'
Und das Video läßt sich nicht laden.

Edit;
Oh hab da was übersehn..
AVIStreamOpenFromFileW
Delphi-Quellcode:
procedure OpenAVI(filename : PWideChar);
gruss


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