![]() |
Delphi XE und Windows 7 BMP -> AVI
Hallo,
In mein Fraktal Programm soll eine Video Funktion eingebaut werden. Habe jetzt den TAviWriter_2 getestet, aber beim ausführen des SampleProjekts kommt der Fehler: Failed to create AVI video file. Err. $80040154 Danach hab ich das BMPtoVideo aus der Delphi-Praxis getestet. Fehler: Konnte AVI Datei nicht erstellen. Festplatte voll oder Datei in Benutzung? Beim DSPack ist mir nicht ganz klar wie ich ein Video aus BMP dateien erstellen kann. Gibts da irgendwie ein tutorial? Ich weiß das ist der x-te Thread zu dem Thema aber in anderen Threads finde ich keine Lösung. Meist sind diese schon mehrere Jahre alt weshalb ich darauf schließe, dass es entweder mit DelphiXE oder Win7 zu tun hat. Würde mich freuen, wenn jemand eine einfache schnelle Lösung parat hätte ;) |
AW: Delphi XE und Windows 7 BMP -> AVI
Gibt es echt keine Lösung oder funktioniert das nur bei mir nicht?
Hab mich schon so gefreut auf meine Zoom Videos |
AW: Delphi XE und Windows 7 BMP -> AVI
Ok ich habe das Problem jetzt weiter einschränken können.
Die Methode AVIFileOpen aus der unit VFW. Bzw aus der dll AVIFIL32.DLL. Allerdings weiß ich jetzt auch nicht genau was das Problem ist. Beziehn sich die Codes vllt auf ältere Versionen der AVIFIL32.DLL? Wenn ja wo krieg ich raus auf welche Version? |
AW: Delphi XE und Windows 7 BMP -> AVI
Ich habe exakt das gleiche Problem. Ich habe auch Win7, Delphi XE und arbeite auch an einem Fraktalprogramm und möchte Zoomvideos direkt im Programm erstellen. Bmp2AVI habe ich mir auch schon angesehen. Leider klappt dies bei mir auch nicht. In Delphi 7 funktioniert dagegen alles wunderbar.
Hast du das Problem mittlerweise lösen können? Oder hat jemand anders vielleicht eine Idee? Das Programm Bmp2AVI findet sich übgrigens ![]() Über Hilfe wäre ich sehr dankbar. LG, Pussyranger |
AW: Delphi XE und Windows 7 BMP -> AVI
Hallo,
es hilft vielleicht nicht viel, aber ich kann das Projekt Bmp2Avi problemlos mit Delphi 2007 erzeugen und es tut was es soll (das ganze unter Windows 7). Ich würde also mal nach (schwach)stellen Suchen die mit String/Char zu tun haben. Da gab es ja die große Umstellung auf Unicode (jetzt 2Byte pro Char). Gruß, Chris [EDIT]Du hast aber schon schreibrechte für das Verzeichnis, in dem Du das Video erstellen willst?[/EDIT] |
AW: Delphi XE und Windows 7 BMP -> AVI
Danke für die schnelle Antwort! Es ist gut möglich, dass es an der Umstellung auf Unicode liegt, denn an einer Stelle musste ich den Quellcode deshalb schon ändern, damit der Code überhaupt kompiliert wurde:
Delphi-Quellcode:
Was mache ich denn mit den anderen Stellen, die mit String/Char zu tun haben?
AVIFileOpen(pfile, PAnsiChar(WorkFile), OF_WRITE or OF_CREATE, nil)
|
AW: Delphi XE und Windows 7 BMP -> AVI
Zitat:
Delphi-Quellcode:
sollten eigentlich genau dafür sorgen, dass du das nicht machen musst :gruebel:
{$IFDEF Unicode}
Vielleicht sollte sich da jemand einbringen, der ein Unicode-Delphi hat. Ich hab leider nur ein Delphi 2007 :-( Sorry. Gruß, Chris [EDIT]OMG - nimm bitte nochmal das originalprojekt und suche nach
Delphi-Quellcode:
und mach ein Punkt vor das $-Zeichen (Compiler-Direktive deaktivieren) Unicode muss aktiv bleiben, wenn es denn da ist. Jetzt bin ich mnir nur nicht sicher, ob Delphi XE dieses Define automatisch macht, oder ob du es von Hand machen musst.
{$Undef Unicode}
Sollte es nach dieser Punkt-Geschichte immer noch nicht funktionieren, dann mach mal an diesen ganzen Stellen ein
Delphi-Quellcode:
[/EDIT]
{$DEFINE UNICODE}
[EDIT2] Dieses Undef ist wohl nur in der Unit VFW.pas. Der Test sollte also einfach sein ;-) [/EDIT2] |
AW: Delphi XE und Windows 7 BMP -> AVI
Stimmt, wenn ich einen Punkt vor das Dollarzeichen bei
Code:
setze, funktioniert auch
{$Undef Unicode}
Delphi-Quellcode:
Jedoch tritt nun bei der if-Abfrage
AVIFileOpen(pfile, PChar(WorkFile), OF_WRITE or OF_CREATE, nil)
Code:
folgender Fehler beim Kompilieren auf, den ich nicht verstehe: "[DCC Fehler] CreateAVI.pas(227): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen".
if AVIFileCreateStream(pfile, ps, asi) <> AVIERR_OK then raise Exception.Create('Konnte keinen AVI-Stream erzeugen.');
Klammer ich die if-Abfrage aus, kann ich den Code fehlerfrei kompilieren, beim Erstellen einer AVI-Datei kommt jeder weiterhin die Fehlermeldung. Mit {$DEFINE UNICODE} passiert das Gleiche. Sollte ich vor jeder Kompileransweisung einen Punkt vor dem Dollarzeichen setzen? |
AW: Delphi XE und Windows 7 BMP -> AVI
Zitat:
Die Compileranweisung sorgt ja gerade dafür, dass es eben mit Unicode (also Delphi > 2007) funktionieren soll. Der Fehler wird wo anders liegen. Leider kann ich Dir nicht sagen, wo genau. Hab wie gesagt kein Delphi mit Unicode :-( Gruß, Chris P.S.: Viel Erfolg weiterhin |
AW: Delphi XE und Windows 7 BMP -> AVI
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:
PS:
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;
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:
Siehe W! und A! gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz