AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi XE und Windows 7 BMP -> AVI
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi XE und Windows 7 BMP -> AVI

Ein Thema von fishbrain · begonnen am 23. Feb 2011 · letzter Beitrag vom 8. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
fishbrain

Registriert seit: 17. Sep 2007
Ort: Regensburg
132 Beiträge
 
#1

Delphi XE und Windows 7 BMP -> AVI

  Alt 23. Feb 2011, 17:44
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
  Mit Zitat antworten Zitat
fishbrain

Registriert seit: 17. Sep 2007
Ort: Regensburg
132 Beiträge
 
#2

AW: Delphi XE und Windows 7 BMP -> AVI

  Alt 27. Feb 2011, 16:21
Gibt es echt keine Lösung oder funktioniert das nur bei mir nicht?
Hab mich schon so gefreut auf meine Zoom Videos
  Mit Zitat antworten Zitat
fishbrain

Registriert seit: 17. Sep 2007
Ort: Regensburg
132 Beiträge
 
#3

AW: Delphi XE und Windows 7 BMP -> AVI

  Alt 1. Mär 2011, 21:22
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?
  Mit Zitat antworten Zitat
Benutzerbild von Pussyranger
Pussyranger

Registriert seit: 15. Mär 2011
25 Beiträge
 
Delphi XE2 Architect
 
#4

AW: Delphi XE und Windows 7 BMP -> AVI

  Alt 6. Sep 2011, 14:38
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 hier.

Über Hilfe wäre ich sehr dankbar.
LG,

Pussyranger
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Delphi XE und Windows 7 BMP -> AVI

  Alt 6. Sep 2011, 15:00
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]
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules

Geändert von ChrisE ( 6. Sep 2011 um 15:09 Uhr) Grund: Frage zu schreibrechten
  Mit Zitat antworten Zitat
Benutzerbild von Pussyranger
Pussyranger

Registriert seit: 15. Mär 2011
25 Beiträge
 
Delphi XE2 Architect
 
#6

AW: Delphi XE und Windows 7 BMP -> AVI

  Alt 6. Sep 2011, 15:53
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:AVIFileOpen(pfile, PAnsiChar(WorkFile), OF_WRITE or OF_CREATE, nil) Was mache ich denn mit den anderen Stellen, die mit String/Char zu tun haben?
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Delphi XE und Windows 7 BMP -> AVI

  Alt 6. Sep 2011, 16:20
AVIFileOpen(pfile, PAnsiChar(WorkFile), OF_WRITE or OF_CREATE, nil)
Das erscheint mir nicht ganz logisch. Denn diese Funktion stellt sich generisch um zwischen WideString und AnsiString. Diese {$IFDEF Unicode} sollten eigentlich genau dafür sorgen, dass du das nicht machen musst

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 {$Undef Unicode} 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.
Sollte es nach dieser Punkt-Geschichte immer noch nicht funktionieren, dann mach mal an diesen ganzen Stellen ein {$DEFINE UNICODE} [/EDIT]
[EDIT2]
Dieses Undef ist wohl nur in der Unit VFW.pas. Der Test sollte also einfach sein
[/EDIT2]
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules

Geändert von ChrisE ( 6. Sep 2011 um 16:36 Uhr) Grund: Undef Unicode übersehen
  Mit Zitat antworten Zitat
Benutzerbild von Pussyranger
Pussyranger

Registriert seit: 15. Mär 2011
25 Beiträge
 
Delphi XE2 Architect
 
#8

AW: Delphi XE und Windows 7 BMP -> AVI

  Alt 6. Sep 2011, 17:19
Stimmt, wenn ich einen Punkt vor das Dollarzeichen bei
Code:
{$Undef Unicode}
setze, funktioniert auch AVIFileOpen(pfile, PChar(WorkFile), OF_WRITE or OF_CREATE, nil) Jedoch tritt nun bei der if-Abfrage
Code:
if AVIFileCreateStream(pfile, ps, asi) <> AVIERR_OK then raise Exception.Create('Konnte keinen AVI-Stream erzeugen.');
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".
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?
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Delphi XE und Windows 7 BMP -> AVI

  Alt 7. Sep 2011, 10:07
Sollte ich vor jeder Kompileransweisung einen Punkt vor dem Dollarzeichen setzen?
Nein

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
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Delphi XE und Windows 7 BMP -> AVI

  Alt 7. Sep 2011, 10: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 11:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:08 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