![]() |
DSVideoWindowEx2 zeigt nur manchmal AVIs
Hallo!
Über die Komponente DSVideoWindowEx2 gibt es in diesem Forum nur wenige Beiträge, aber vielleicht kann mir ja torzdem jemand helfen... Folgendes Problem: Starte ich mein Programm über Delphi werden alle Videos über DSVideoWindowEx2 korrekt angezeigt. Wird jedoch direkt die EXE-Datei aufgerufen, können manche Videos nicht geöffnet werden.
Delphi-Quellcode:
Kann mir das jemand erklären? An einem fehlenden Codec kann es ja nicht liegen, sonst könnte ich es im Debug-Modus ja auch nicht abspielen...
FilterGraph1.Active:= True;
if FilterGraph1.RenderFile(FileName)<>S_OK then // <- ist TRUE! System: Delphi 6 Enterprise unter Windows 7 Enterprise Gruß e-gon |
AW: DSVideoWindowEx2 zeigt nur manchmal AVIs
1. Wieso VideoWindowEx2? Das brauchst du nämlich nur selten...
2. Musst du entweder mehr Code zeigen, oder deutlich mehr Details nennen. So kann man noch nicht mal wirklich raten....:shock::glaskugel: |
AW: DSVideoWindowEx2 zeigt nur manchmal AVIs
Hallo lbccaleb,
danke für die schnelle Antwort! 1. Ich habe eine Sammlung sehr unterschiedlicher Videodateien. Zumeist AVIs und MPEGs. Da sich mit VideoWindow nicht alle MPEGs abspielen ließen stieg ich auf DSVideoWindowEx2 um. Dort laufen alle mein MPEGs. 2. Hier der gesamte Code:
Delphi-Quellcode:
Gruß
unit Main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DSPack; type TForm1 = class(TForm) VW: TDSVideoWindowEx2; FilterGraph1: TFilterGraph; SampleGrabber1: TSampleGrabber; Filter1: TFilter; Edit1: TEdit; Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var FileName: string; begin FileName:= Edit1.Text; FilterGraph1.Active:= True; if FilterGraph1.RenderFile(FileName)<>S_OK then begin // <- Hier tritt das Problem im "Release-Modus" auf! MessageDLG('Fehler beim Öffnen der Datei '''+FileName+'''!',mtError,[mbOk],0); FilterGraph1.Active:= False; end else FilterGraph1.Pause; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin FilterGraph1.Stop; FilterGraph1.Active:= False; end; procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Text:= 'D:\test.avi'; end; end. e-gon |
AW: DSVideoWindowEx2 zeigt nur manchmal AVIs
Resetest du den Filtergraph nicht, wenn du eine neue Datei lädst?
|
AW: DSVideoWindowEx2 zeigt nur manchmal AVIs
Das ist nur ein Testprogramm.
Die Datei "D:\test.avi" wird im Debug-Modus problemlos geöffnet, beim Start der EXE-Datei tritt jedoch beim Button-Click der Fehler auf. Gruß e-gon |
AW: DSVideoWindowEx2 zeigt nur manchmal AVIs
Ausm blauen Dunst herraus:
Delphi-Quellcode:
unit Main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DSPack; type TForm1 = class(TForm) VW: TDSVideoWindowEx2; FilterGraph1: TFilterGraph; SampleGrabber1: TSampleGrabber; Filter1: TFilter; Edit1: TEdit; Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var FileName: string; begin FileName:= Edit1.Text; //überprüfung sollte hier eingefügt werden FilterGraph1.ClearGraph; //komplett vergessen ////////////////////////////////////////////// FilterGraph1.Active:= False; //sonnst gibts fehler mit EC_CLOCK_CHANGED FilterGraph1.Active:= True; //////////////////////////////////////// if FilterGraph1.RenderFile(FileName)<>S_OK then begin // <- Hier tritt das Problem im "Release-Modus" auf! MessageDLG('Fehler beim Öffnen der Datei '''+FileName+'''!',mtError,[mbOk],0); FilterGraph1.Active:= False; end else FilterGraph1.Pause; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin FilterGraph1.Stop; FilterGraph1.Active:= False; FilterGraph1.ClearGraph; //komplett vergessen end; procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Text:= 'D:\test.avi'; end; end. Ich vermisse da aber auch noch den Button zum Abspielen und so :P |
AW: DSVideoWindowEx2 zeigt nur manchmal AVIs
Es geht ja auch nicht ums Abspielen sondern ums öffnen!
Nochmal zum Mitschreiben: Ich öffne mit einem im Debug-Modus laufenden Programm problemlos die Videodatei "D:\test.avi"! Ich starte die EXE meines Programms und kann dann die gleiche Videodatei "D:\test.avi" nicht öffnen! Warum??? Gruß e-gon |
AW: DSVideoWindowEx2 zeigt nur manchmal AVIs
@lbccaleb
Ups! Ich habe Deine eingefügten Zeilen gar nicht gesehen. - Danke! Aber die haben das Problem auch nicht behoben. Zitat:
Gruß e-gon |
AW: DSVideoWindowEx2 zeigt nur manchmal AVIs
Das klappt wunderbar, also muss noch irgendwo nen anderer Fehler sein, aber das kann man wieder rum nicht durch die paar Zeilen Quellcode erahnen ;)
|
AW: DSVideoWindowEx2 zeigt nur manchmal AVIs
Was meinst Du damit?
Zitat:
Zitat:
Gruß e-gon |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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