Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi BMP in AVI wandeln (https://www.delphipraxis.net/69810-bmp-avi-wandeln.html)

smart 20. Mai 2006 09:35


BMP in AVI wandeln
 
Hallo Alle!

Wie kann man aus *.bmp's einen *.avi (Film) machen? Hat Einer von Euch Erfahrung damit? In der Suche habe ich nichts passendes gefunden.

Gruß
Heike

Hawkeye219 20. Mai 2006 09:50

Re: BMP in AVI wandeln
 
Hallo Heike,

in diesem Thread geht es zwar eigentlich um .jpg-Dateien, die erwähnte Komponente arbeitet aber mit TGraphic. Vielleicht nimmt sie auch deine .bmp-Dateien an.

Gruß Hawkeye

DGL-luke 20. Mai 2006 12:39

Re: BMP in AVI wandeln
 
Vielleicht kannst du dir von Bei Google suchenbmp2avi ein paar anregungen holen ;)

Ydobon 20. Mai 2006 13:40

Re: BMP in AVI wandeln
 
Das habe ich noch in meiner Rumpelkammer gehabt. Schon ein paar Jahre alt, nie so richtig gut, aber vielleicht kannst du damit etwas anfangen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var dir: String;
    ts: TSearchRec;
    datlist: TStringList;
    tfs: TFileStream;
    pfile: IAVIFile;
    pavi: IAVIStream;
    psi: TAVISTREAMINFO;
    Bfi: BITMAPFILEHEADER;
    bmi: PBITMAPINFO;
    bits: PByteArray;
    i, bmisize: Integer;
begin
  if Not SelectDirectory('Bitmapverzeichnis wählen', 'c:\tempo', dir) then Exit;
  if FindFirst(dir+'\*.bmp', faAnyFile, ts)<>0 then Exit;
  if Not SaveDialog1.Execute then Exit;
  datlist:=TStringList.Create;
  try
    datlist.Add(ts.Name);
    while FindNext(ts)=0 do datlist.Add(ts.Name);
    datlist.Sort;
  finally
    FindClose(ts);
  end;
  Label1.Caption:=IntToStr(datlist.Count);
  tfs:=TFileStream.Create(dir+'\'+datlist[0], fmOpenRead);
  tfs.Read(bfi, SizeOf(BITMAPFILEHEADER));
  bmisize:=bfi.bfOffBits-SizeOf(BITMAPFILEHEADER);
  GetMem(bmi, bmisize);
  tfs.Read(bmi^, bmisize);
  GetMem(bits, bmi.bmiHeader.biSizeImage);
  tfs.Read(bits^, bmi^.bmiHeader.biSizeImage);
  AVIFileInit;
  AVIFileOpen(pfile, PChar(SaveDialog1.FileName), OF_CREATE OR OF_WRITE, NIL);
  ZeroMemory(@psi, SizeOf(TAVIStreamInfo));
  with psi do
  begin
    fccType:=streamtypeVIDEO;
    fccHandler:=mmioFourcc(#0, 'D', 'I', 'B');
    dwScale:=1;
    dwRate:=25;
    dwLength:=datlist.Count;
    dwSuggestedBufferSize:=bmi.bmiHeader.biSizeImage;
    rcFrame:=Rect(0, 0, bmi.bmiHeader.biWidth, bmi.bmiHeader.biHeight);
    szName:='Noname';
    dwQuality:=$FFFFFFFF;
    dwSampleSize:=bmi.bmiHeader.biSizeImage;
  end;
  AVIFileCreateStream(pfile, pavi, psi);
  AVIStreamSetFormat(pavi, 0, bmi, bmisize);
  For i:=0 to datlist.Count-1 do
  begin
    AVIStreamWrite(pavi, i, 1, bits, bmi.bmiHeader.biSizeImage, AVIIF_KEYFRAME, NIL, NIL);
    tfs.Free;
    tfs:=TFileStream.Create(dir+'\'+datlist[i], fmOpenRead);
    Image1.Picture.Bitmap.LoadFromStream(tfs);
    tfs.Seek(bfi.bfOffBits, soFromBeginning);
    tfs.Read(bits^, bmi.bmiHeader.biSizeImage);
    Label2.Caption:=IntToStr(i+1);
    Application.ProcessMessages;
  end;
  tfs.Free;
  FreeMem(bits);
  datlist.Free;
end;

turboPASCAL 20. Mai 2006 17:56

Re: BMP in AVI wandeln
 
Liste der Anhänge anzeigen (Anzahl: 3)
So, um das mal auszuprobieren habe ich schnell mal ein Sample zusammengeklickt. Asl Basis dient die von obbschtkuche angebotene Unit.

Mit deren Hilfe ist es sehr einfach Bitmaps zu einer AVI zusammen zusetzen.

smart 20. Mai 2006 18:39

Re: BMP in AVI wandeln
 
Habt vielen lieben Dank, für Eure Hilfen. Damit komme ich sehr gut weiter.

Gruß
Heike


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 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