Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Aus bildern Film erzeugen (https://www.delphipraxis.net/127230-aus-bildern-film-erzeugen.html)

vsilverlord 9. Jan 2009 15:56


Aus bildern Film erzeugen
 
Hallo Leute!!
Ich arbeite gerade viel mit Canvas :duck:
Un da habe ich tausende kleiner zusammenhängender Bilder vom Timage.canvas. Wie kann ich daraus jetzt einen Film erzeugen, der in einem gängen Format abspielbar ist?

Meflin 9. Jan 2009 16:05

Re: Aus bildern Film erzeugen
 
http://www.delphipraxis.net/internal...ct.php?p=87440

Da wird eine Komponente dafür verlinkt - vielleicht taugt sie dir ja.

vsilverlord 9. Jan 2009 18:53

Re: Aus bildern Film erzeugen
 
Irgendwie erzeugt die Komponente bei mir eine Fehlermeldung: 'Inkompatible typen:'char' und 'ansichar' , und zwar in diese Zeile:
Delphi-Quellcode:
 if AVIFileOpen(pfile, PChar(WorkFile), OF_WRITE or OF_CREATE, nil)<>AVIERR_OK then
   raise Exception.Create('Konnte AVI-Datei nicht erstellen. Festplatte voll oder Datei in Benutzung?');
ich habe es jetzt mit // versehen, damit funktioniert es. Allerdings bin ich mir nicht ganz sicher wie ich das jetzt machen soll... hat das schon jemand gemacht?=

mkinzler 9. Jan 2009 18:54

Re: Aus bildern Film erzeugen
 
Verwendest du, abweichend zu deinem Profil, Delphi 2009?

vsilverlord 9. Jan 2009 20:26

Re: Aus bildern Film erzeugen
 
ahh! ja stimmt! delphi 2009 architect. ich änder es mal gleich

mkinzler 9. Jan 2009 20:35

Re: Aus bildern Film erzeugen
 
Der Standart Stringtyp in Delphi 2009 ist nun UnicodeString nicht mehr AnsiString, PChar ist PWideChar nicht mehr PAnsiChar.

Ggf musst du die Typen anpassen

Blackheart 9. Jan 2009 22:34

Re: Aus bildern Film erzeugen
 
Zitat:

Zitat von vsilverlord
ahh! ja stimmt! delphi 2009 architect. ich änder es mal gleich

Immer diese jungen Millionäre. :gruebel:

mkinzler 9. Jan 2009 22:36

Re: Aus bildern Film erzeugen
 
Du hast ja auch eine Enterprise :roll:

Blackheart 9. Jan 2009 23:05

Re: Aus bildern Film erzeugen
 
Ich bin auch 43 und keine 17 :zwinker:

Sir Rufo 10. Jan 2009 02:32

Re: Aus bildern Film erzeugen
 
Vielleicht hat er ja auch nur einen guten goldEsel :mrgreen:

vsilverlord 10. Jan 2009 15:47

Re: Aus bildern Film erzeugen
 
also gut, ich habs angepasst. Was nun? gibts irgendeine Anleitung, wie man das macht? ich seh nur tausend Funktionen und variablen. Also ich füge CreateAVI zu uses hinzu. Jetzt muss ich irgendwie mit einer Funktion die Bilder zu einem Avi zusammenbauen können? Oder muss ich vorher die Canvas-Bilder im Bitmap unwandeln? Aaach, ich bin soo doof.
:|

mkinzler 10. Jan 2009 15:52

Re: Aus bildern Film erzeugen
 
Zitat:

Aaach, ich bin soo doof.
Hast du den Fehler gefunden?

vsilverlord 10. Jan 2009 16:00

Re: Aus bildern Film erzeugen
 
was heißt fehler. gibts eine anleitung zum filmbauen?

mkinzler 10. Jan 2009 16:02

Re: Aus bildern Film erzeugen
 
Was für einen Typ hat workfile?

vsilverlord 10. Jan 2009 16:05

Re: Aus bildern Film erzeugen
 
system.string

mkinzler 10. Jan 2009 16:08

Re: Aus bildern Film erzeugen
 
Die Funktion erwartet aber einen Zeiger auf AnsiString (PAnsiChar) ->
Delphi-Quellcode:
   worFile: AnsiString;
...
if AVIFileOpen(pfile, PAnsiChar(WorkFile), OF_WRITE or OF_CREATE, nil)<>AVIERR_OK then
   raise Exception.Create('Konnte AVI-Datei nicht erstellen. Festplatte voll oder Datei in Benutzung?');

vsilverlord 10. Jan 2009 16:12

Re: Aus bildern Film erzeugen
 
ok das funktioniert jetzt. Wie kann ich jetzt die Bilder zu einem Film zusammenfügen?=

mkinzler 10. Jan 2009 16:15

Re: Aus bildern Film erzeugen
 
Ich würde sagen mit AddAVIFrame()

vsilverlord 10. Jan 2009 16:37

Re: Aus bildern Film erzeugen
 
also ich hab hier jetzt mal einen code. Wie mach ich tcanvas zu tgraphic?
Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,CreateAVI, ExtCtrls,math, StdCtrls;

type

  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
  private
    function machpunkt(a,b:integer):tpoint;
 
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  punkt:tpoint;
  allepunkte:array of tpoint;
  allebildchen:array of tcanvas;
  film:tavicreator;

implementation

{$R *.dfm}






function tform1.machpunkt(a: Integer; b: Integer):tpoint;
begin
result.X:=a;
result.Y:=b;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
film:=tavicreator.Create(self);
for i := 0 to length(allebildchen) - 1 do
 begin
   film.AddAVIFrame(allebildchen[i]);
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
punkt:=machpunkt(250,100);
setlength(allepunkte,1);
setlength(allebildchen,1);
allepunkte[0]:=machpunkt(250,100);
image1.Canvas.Ellipse(250,100,10,10);
allebildchen[0]:=image1.Canvas;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i: Integer;
begin
setlength(allepunkte,length(allepunkte)+1);
setlength(allebildchen,length(allebildchen)+1);
image1.Canvas.Rectangle(0,0,image1.Width,image1.Height);
repeat
 begin
   punkt.X:=punkt.X+random(3)-1;
   punkt.Y:=punkt.y+random(3)-1;
 end
until (punkt.X<image1.Height) and (punkt.Y<image1.Height)and (punkt.X>0) and (punkt.Y>0);
allepunkte[length(allepunkte)-1]:=machpunkt(punkt.X,punkt.Y);
image1.Canvas.MoveTo(allepunkte[0].x,allepunkte[0].y);
for i := 1 to length(allepunkte) - 1 do
 begin
  image1.Canvas.LineTo(allepunkte[i-1].X,allepunkte[i-1].y)
 end;
image1.Canvas.Ellipse(punkt.X,punkt.Y,punkt.X+10,punkt.Y+10);
allebildchen[length(allebildchen)-1]:=image1.Canvas
end;

end.

turboPASCAL 10. Jan 2009 16:52

Re: Aus bildern Film erzeugen
 
Ich möchte dich bitten ein wenig Zeit zur Quelltextformatierung aufzubringen.
Solche Sachen wie du sie hier Vorstellst kann man (sau) schlecht lesen.
Zudem ist solch eine Formatierung nicht sonderlich behilflich wenn es um die Fehlerbehebung geht.

vsilverlord 10. Jan 2009 17:01

Re: Aus bildern Film erzeugen
 
ok, tut mir leid. eigentlich geht es nur um
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
film:=tavicreator.Create(self);
for i := 0 to length(allebildchen) - 1 do
begin
   film.AddAVIFrame(allebildchen[i]);
end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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 by Thomas Breitkreuz