![]() |
Interface aus Pointer oder: AVIs einlesen
Hallo,
ich mach hier gerade fremden Code flott... Ich hab mir von torry.net ![]() Und da passiert folgendes:
Delphi-Quellcode:
Ich habe den aufruf mal durch das hier ersetzt:
//definitionen
pavis: PAVIStream = Pointer; IAVIStream = interface(IUnknown) ... end; function AVIStreamEnd(pavi: IAVISTREAM): LONG; Ending:=AVIStreamENd(pavis); //hier knallts
Delphi-Quellcode:
Und habe jetzt folgenden Code:
Ending:=AVIStreamEnd(IAVIStream(pavis^));
Delphi-Quellcode:
Was allerdings sehr merkwürdig ist:
procedure TForm2.BOpenAVIClick(Sender: TObject);
begin with TOpenDialog.Create(nil) do try Filter := 'Audio/Video Interlaced File (*.avi)|*.avi'; if Execute then begin MainAVI.Start := 0; MainAVI.Ending := 1; MainAVI.Open(FIleName); end; finally Free; end; end; procedure TForm2.FormCreate(Sender: TObject); begin GetMem(Buffer, 1024); //nur mal auf Verdacht alloziiert, wegen der AV, ändert aber nix - Buffer: Pointer, als Form-Member deklariert. MainAVI := TAVIReader.Create(Buffer); end;
Delphi-Quellcode:
Wenn ich diese Funktion durchsteppe (Ich hab extra schon die optimierung ausgeschaltet), zeigt er mir, wenn ich bei "//hier" bin und auf "Eins weiter" klicke, das "end;" als nächste Anweisung - er überspringt mir also 4 Programmzeilen...
function TAVIReader.Open(AFileName: String): integer;
begin FileName := AFileName; result := AVIFileOpen(pavi, Pchar(Filename), OF_READ, nil); AVIFILEGetStream(pavi,pavis,streamtypeVIDEO,0); //hier Start:=AVIStreamStart(pavis); Ending:=AVIStreamEnd(IAVIStream(pavis^)); ob:=AVIStreamGetFrameOpen(pavis,nil); AVIStreamBeginStreaming(pavis,Start,Ending,1000); // DrawDIBStart(han,microsperframe); //nicht von mir auskommentiert end; Das ganze kracht dann mit einer Read bei 0 AV in "AVIFil32.dll" (eine Systemdll, glaub ich, das PSDK gibt mir auch Auskunft über die Funktionen, die exportiert werden), nach kompletten durchsteppen (also nach dem end meines Buttonclickhandlers) Also: 1. kann mir wer helfen 2. hat jemand ne andere freie AVI-Read/Write-Kompo da? |
Re: Interface aus Pointer oder: AVIs einlesen
Hallo,
Zitat:
Zitat:
Gruß xaromz |
Re: Interface aus Pointer oder: AVIs einlesen
Aha... so ist das zu erklären.
Was ich will: - aus mehreren AVIs die einzelnen Frames extrahieren - diese Frames manipulieren - ein neues AVI mit meinen manipulierten Frames und dem Audiotrack aus dem ersten AVI speichern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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