![]() |
Videos mit Delphi abspielen!
Hallo!
Weiß ihr jemand zufällig, wie ich Videos mit dem MediaPlayer von Delphi abspielen kann?? Bitte um schnelle Antwort; Gruss DelphiUser7 |
Re: Videos mit Delphi abspielen!
hiho
ich glaub ich kann die helfen mit nem play button und nem dialog:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin If Mediaplayer1.Mode = mpOpen then Mediaplayer1.close; Mediaplayer1.FileName := opendialog1.FileName; Mediaplayer1.Open; Mediaplayer1.Play end; und mit ner playlist so:
Delphi-Quellcode:
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin If Mediaplayer1.Mode = mpOpen then Mediaplayer1.close; Mediaplayer1.FileName := PlayList1.Items.Strings[PlayList1.ItemIndex]; Mediaplayer1.Open; Mediaplayer1.Play end; also so mach ich es jedenfalls und es klapt .. ich hoffe ich konnte dir helfen :dancer2: :dp: |
Re: Videos mit Delphi abspielen!
Hi!
Ich benutze zum Anzeigen des Filmes eine TAnimate-Komponente; Diese zeigt aber nichts an, wenn ich den Play-Button drücke; Und das, obwohl ich der Eigenschaft 'Display' von TMediaPlayer die TAnimate-Komponente zugewiesen habe; Weisst du vielleicht, wo das Problem liegt? Gruss DelphiUser7 |
Re: Videos mit Delphi abspielen!
hiho
also ich hab es mal mit ner TAnimate als Display versucht und bei mir klapt das einwandfrei. Aber es gibt video formate die der MediaPlayer net abspielen kann z.B. xvid. Wie öffnest du denn filme mit dem Mediaplayer ?? |
Re: Videos mit Delphi abspielen!
Moin DelphiUser,
für die Eigenschaft Display kannst Du prinzipiell jedes TWinControl verwenden. Meist wird man wohl ein TPanel nehmen. Um festzustellen, warum ein bestimmter Typ nicht abgespielt wird, wäre wohl ganz sinnvoll es mal "zu Fuss" also mit den MCI Funktionen zu versuchen, auf denen TMediaPlayer aufbaut, oder Du fragst einfach die Eigenschaft Error ab. Formate, die der Windows Mediaplayer abspielen kann, TMediaplayer aber nicht, werden mit Sicherheit nicht auf der MCI (Media Control Interface) aufbauen, sonder auf DirectShow. |
Re: Videos mit Delphi abspielen!
hiho
und wie spielt man ein video mit MCI Funktionen ab ?? :wiejetzt: |
Re: Videos mit Delphi abspielen!
Moin LiquidSteel,
die einfachste Methode ginge so: Unit mmsystem muss mit eingebunden werden.
Delphi-Quellcode:
Wie ich jetzt in diesem Falle für MPEGS auf mpegvideo als device gekommen bin, kann ich nicht einmal sagen.
procedure TfrmMAIN.Button4Click(Sender: TObject);
var mciErr : DWORD; begin // try/finally um bei einem Fehler einfach mit exit rausgehen zu können, // und trotzdem den Fehler angzeigt zu bekommen try // erst kommt das Kommando, in diesem Falle soll das Device geöffnet werden // Es soll das Device mpegvideo geöffnet werden, und dabei die Datei d:\test.mpeg // diese muss mit einem ! angehängt werden // Um die Datei leichter ansprechen zu können, wird ein alias vergeben, hier video1 genannt // Als Parent dient hier das Formular selber. Es muss das Handle angegeben werden, // und zwar als String, da das gesamte Kommando als ein String angegeben wird // nil = Es wird nichts zurückgegeben, bzw. was zurückgegeben wird, soll ignoriert werden. // 0 = Bufferlänge für die Rückgabe. Da nichts zurückgegben werden soll ist die Länge 0 // Der letzte Parameter ist das Handle des Fensters, an das evenutelle Benachrichtigungen geschickt werden sollen. // (siehe auch TMediaPlayer.OnNotify mciErr := mciSendString(PChar('open mpegvideo!d:\test.mpeg alias video1 parent '+IntToStr(self.Handle)),nil,0,self.Handle); if mciErr <> 0 then exit; // Das Display zuweisen, hier wieder als Handle mciErr := mciSendString(PChar('window video1 handle '+IntToStr(self.Handle)),nil,0,self.Handle); if mciErr <> 0 then exit; // und wenn bislang alles gut gegangen ist, das Video abspielen mciErr := mciSendString('play video1',nil,0,self.Handle); finally if mciErr <> ERROR_SUCCESS then DisplayMciError(mciErr); end; end; // Nur um die Fehleranzeige zu vereinfachen procedure DisplayMciError(const AmciErr : DWORD); var pBuf : PChar; dwLen : DWORD; begin dwLen := 1024; pBuf := AllocMem(dwLen); try mciGetErrorString(AmciErr,pBuf,dwLen); ShowMessage(trim(pBuf)); finally FreeMem(pBuf,dwLen); end; end; // Wichtig: Alle Geräte wieder schliessen procedure TfrmMAIN.FormDestroy(Sender: TObject); begin mciSendString(PChar('close all'),nil,0,self.Handle); end; Weitere Einzelheiten zu mciSendString können dem PSDK oder MSDN entnommen werden. |
Re: Videos mit Delphi abspielen!
Und wie bekomme ich DirectShow???;
Gruss DelphiUser7 |
Re: Videos mit Delphi abspielen!
Moin DelphiUser,
das könnte so aussehen (einfaches Beispiel gemäss PSDK)
Delphi-Quellcode:
Das Problem ist hier, dass bei Delphi (zumindest bei D5), die ganzen Interfaces nicht deklariert sind. Such' hier mal nach
procedure TForm1.Button2Click(Sender: TObject);
var pGraph : IGraphBuilder; pControl : IMediaControl; pEvent : IMediaEvent; evCode : integer; begin CoInitialize(nil); try CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER,IID_IGraphBuilder,pGraph); pGraph.QueryInterface(IID_IMediaControl,pControl); pGraph.QueryInterface(IID_IMediaEvent,pEvent); if Succeeded(pGraph.RenderFile('D:\test.mpeg',nil)) then begin if Succeeded(pControl.Run) then begin pEvent.WaitForCompletion(INFINITE,evCode); end; end; finally CoUninitialize(); end; end; ![]() Nähere Erklärungen kann ich Dir allerdings zur Zeit auch nicht geben, da ich selber noch dabei bin mich darin einzuarbeiten. |
Re: Videos mit Delphi abspielen!
Ich hab mir das Pack mal herunter geladen, und es sieht ziemlich kompliziert aus;
Gibt es nicht eine andere Methode, um auf evtl. vorhandene Windows- bzw. DivX-Codecs zuzugreifen? Bitte um schnelle Antwort! Gruss DelphiUser7 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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