Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Delphi XE und Windows 7 BMP -> AVI

  Alt 7. Sep 2011, 09:16
Ich weiss nicht genau was du machen willst
aber warum verwendest du nicht die VFW.pas ?

Damit spiele ich mein Video in meinem Visualisierungs Plugin ab.
Wobei hier jedes Frame in eine Texture umgewandelt wird. (OpenGL)

Keine ahnung ob dir das hilft.

EDIT!
Die Unicode flags bringen hier leider nichts.
Du solltest für nicht Unicode AVIFileOpen..
und für Unicode AVIFileOpenW
verwenden

Unicode! (OpenGL)

Delphi-Quellcode:
procedure OpenAVI(filename : PWideChar; var AnimTex: array of TMmTex; Index: Integer);
begin
  AVIFileInit;

  if AVIFileOpenW(AviFile, FileName, OF_READ or OF_SHARE_DENY_WRITE, nil) = 0 then
  begin
    AVIFileInfo(AVIFile, @AVIInfo, SizeOf(AviInfo));
    AVIStreamOpenFromFileW(AVIStream, FileName, streamtypeVIDEO, 0, OF_READ, nil);
    AVIStreamInfo(AVIStream, @StreamInfo, SizeOf(StreamInfo));
    AVILength :=AVIStreamLengthTime(AVIStream);
    GetMem(FrameData, AVIInfo.dwWidth*AVIInfo.dwHeight * 3);

    GetFramePointer :=AVIStreamGetFrameOpen(AVIStream, nil);

    AnimTex[Index].Texture := CreateTexture(AviInfo.dwWidth, AviInfo.dwHeight, GL_RGB, FrameData);
  end
  else
    MessageBox(0, 'Failed To Open The AVI Stream', 'Error', MB_OK OR MB_ICONEXCLAMATION);
end;
PS:
Delphi-Quellcode:
function AVIFileCreateStreamW(pfile: PAVIFILE; var ppavi: PAVISTREAM; psi: PAVISTREAMINFOW): HResult; stdcall;
function AVIFileCreateStreamA(pfile: PAVIFILE; var ppavi: PAVISTREAM; psi: PAVISTREAMINFOA): HResult; stdcall;
Zitat:
Denn diese Funktion stellt sich generisch um zwischen WideString und AnsiString.
Mit sicherheit nicht! Denn es gibt dafür direkte Unicode Funktionen
Siehe W! und A!


gruss

Geändert von EWeiss ( 7. Sep 2011 um 10:08 Uhr)
  Mit Zitat antworten Zitat