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