Inclure un graph sous delphi??

Messages postés
37
Date d'inscription
vendredi 11 août 2006
Statut
Membre
Dernière intervention
17 décembre 2008
-
Messages postés
37
Date d'inscription
vendredi 11 août 2006
Statut
Membre
Dernière intervention
17 décembre 2008
-
Bonjours, je viens de me lancer dans delphi car j ai besoin d utiliser un media palyer pour diffuser la video par la sortie video de ma carte de decompression. Avec graphedit je suis parvenu a faire mon graph, cependant je ne sait pas comment inclure mon graph a mon player, jai lu un tutorial sur se sujet ( http://pecaudc.club.fr/TutorielDSPACK234Delphi.php ) mais cela reste un peu difficile pour moi en tant que newbie.
si vous pouvez m aider merci.

voici mon code source du lecteur media:

CODE
unit Unit1;


{-----------------------------------------------------------------------------}
interface


{-----------------------------------------------------------------------------}
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DSPack, StdCtrls, Buttons, ComCtrls, Menus;


{-----------------------------------------------------------------------------}
type
  TForm1 = class(TForm)
    playBtn: TBitBtn;
    stopBtn: TBitBtn;
    pauseBtn: TBitBtn;
    FilterGraph1: TFilterGraph;
    BitBtn4: TBitBtn;
    DSVideoWindowEx21: TDSVideoWindowEx2;
    DSTrackBar1: TDSTrackBar;
    PopupMenu1: TPopupMenu;
    Play1: TMenuItem;
    Pause1: TMenuItem;
    Stop1: TMenuItem;
    Quitter1: TMenuItem;
    FullScreen1: TMenuItem;
    OpenDialog1: TOpenDialog;
    OuvrirBtn: TBitBtn;
    tbVolume: TTrackBar;
    MainMenu1: TMainMenu;
    Fichier1: TMenuItem;
    Edition1: TMenuItem;
    Affichage1: TMenuItem;
    Outils1: TMenuItem;
    Ouvrir1: TMenuItem;
    Quitter2: TMenuItem;
    corp1: TMenuItem;
    LetterBox1: TMenuItem;
    Streched1: TMenuItem;
    ColorControl1: TMenuItem;
    btnFullScreen: TBitBtn;


    procedure up(Sender: TObject);
    procedure Down(Sender: TObject);
    procedure btnFullScreenClick(Sender: TObject);
    procedure Streched1Click(Sender: TObject);
    procedure LetterBox1Click(Sender: TObject);
    procedure corp1Click(Sender: TObject);
    procedure tbVolumeChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure OuvrirBtnClick(Sender: TObject);
    procedure DSVideoWindowEx21Click(Sender: TObject);
    procedure Quitter1Click(Sender: TObject);
    procedure Stop1Click(Sender: TObject);
    procedure Pause1Click(Sender: TObject);


    procedure FullScreen1Click(Sender: TObject);
    procedure playBtnClick(Sender: TObject);
   
    procedure pauseBtnClick(Sender: TObject);
    procedure stopBtnClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


{-----------------------------------------------------------------------------}
var
   Form1: TForm1;
   Fichier:string;


{-----------------------------------------------------------------------------}
implementation


{$R *.dfm}


{-----------------------------------------------------------------------------}
procedure TForm1.FormCreate(Sender: TObject);
begin
  tbVolume.Position := 3000;
tbVolume.SelEnd := tbVolume.Position;
filterGraph1.Volume := tbVolume.Position;
end;


{-----------------------------------------------------------------------------}
procedure TForm1.playBtnClick(Sender: TObject);
begin
if not filtergraph1.active then begin
  filtergraph1.active:=true;
  filtergraph1.RenderFile(fichier);
end;
if not filtergraph1.active then begin
filtergraph1.active:=true;
filtergraph1.RenderFile(fichier);


end;
filtergraph1.Play;
end;


{-----------------------------------------------------------------------------}
procedure TForm1.pauseBtnClick(Sender: TObject);
begin
filtergraph1.Pause;
end;


{-----------------------------------------------------------------------------}
procedure TForm1.stopBtnClick(Sender: TObject);
begin
filtergraph1.Stop;
filtergraph1.Active:=false;;
end;


{-----------------------------------------------------------------------------}
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
filtergraph1.cleargraph;
filtergraph1.active:=false;
end;


{-----------------------------------------------------------------------------}




procedure TForm1.Pause1Click(Sender: TObject);
begin
 filtergraph1.Pause
end;
{-----------------------------------------------------------------------------}
procedure TForm1.Stop1Click(Sender: TObject);
begin
 filtergraph1.Stop;
filtergraph1.Active:=false;
end;
 {-----------------------------------------------------------------------------}
procedure TForm1.Quitter1Click(Sender: TObject);
begin
close;
end;
 {-----------------------------------------------------------------------------}
procedure TForm1.DSVideoWindowEx21Click(Sender: TObject);
begin
  If DSVideoWindowEx21.FullScreen then
  begin
    DSVideoWindowEx21.FullScreenTopMost := False;
    DSVideoWindowEX21.SetBounds(0,0,337, 225);


    DSVideoWindowEx21.NormalPlayback;
    end
  else        
  begin
      DSVideoWindowEx21.FullScreenTopMost := True;
      DSVideoWindowEX21.SetBounds(0,0,Screen.Width, Screen.Height);
      DSVideoWindowEx21.StartFullScreen;


  end;
end;
 {-----------------------------------------------------------------------------}


procedure TForm1.OuvrirBtnClick(Sender: TObject);
begin
// Attention: prévoir une gestion des erreurs
 if opendialog1.execute then begin
      stopBtnclick(sender);
      fichier:=opendialog1.filename;
      playBtnClick(sender);
      pauseBtnClick(sender);
 end;//if opendialog1


end;


 {-----------------------------------------------------------------------------}


procedure TForm1.tbVolumeChange(Sender: TObject);
begin
tbVolume.SelEnd := tbVolume.Position;
if FilterGraph1.Active then
FilterGraph1.Volume := tbVolume.Position;
end;
 {-----------------------------------------------------------------------------}
procedure TForm1.corp1Click(Sender: TObject);
begin
  DSVideoWindowEx21.AspectRatio := rmCrop;
end;
 {-----------------------------------------------------------------------------}
procedure TForm1.LetterBox1Click(Sender: TObject);
begin
 DSVideoWindowEx21.AspectRatio := rmLetterBox;
end;
 {-----------------------------------------------------------------------------}
procedure TForm1.Streched1Click(Sender: TObject);
begin
 DSVideoWindowEx21.AspectRatio := rmStretched;
end;
 {-----------------------------------------------------------------------------}
procedure TForm1.btnFullScreenClick(Sender: TObject);
begin
 If DSVideoWindowEx21.FullScreen then
  begin
    DSVideoWindowEx21.FullScreenTopMost := False;
    DSVideoWindowEX21.SetBounds(0,0,337, 225);


    DSVideoWindowEx21.NormalPlayback;
    end
  else
  begin
      DSVideoWindowEx21.FullScreenTopMost := True;
      DSVideoWindowEX21.SetBounds(0,0,Screen.Width, Screen.Height);
      DSVideoWindowEx21.StartFullScreen;


  end;


end;
{-----------------------------------------------------------------------------}
procedure TForm1.Down(Sender: TObject);
begin
DSVideoWindowEx21.FullScreenTopMost := True
end;
 {-----------------------------------------------------------------------------}
procedure TForm1.up(Sender: TObject);
begin
DSVideoWindowEx21.FullScreenTopMost := False;
end;
 {-----------------------------------------------------------------------------}
procedure TForm1.FullScreen1Click(Sender: TObject);
begin
 If DSVideoWindowEx21.FullScreen then
  begin
    DSVideoWindowEx21.FullScreenTopMost := False;
    DSVideoWindowEX21.SetBounds(0,0,337, 225);


    DSVideoWindowEx21.NormalPlayback;
    end
  else
  begin
      DSVideoWindowEx21.FullScreenTopMost := True;
      DSVideoWindowEX21.SetBounds(0,0,Screen.Width, Screen.Height);
      DSVideoWindowEx21.StartFullScreen;


  end;




end;




end.

3 réponses

Messages postés
37
Date d'inscription
vendredi 11 août 2006
Statut
Membre
Dernière intervention
17 décembre 2008

<hr style="COLOR: #d1d1e1" size="1" />
<!-- / icon and title -->
<!-- message -->

salut j ai un peu avancer et la j aurais surtout besoin de savoir comment on connect des pin sous delphi.

voila j aimerai si possible avoir acces a un tutoriel qui explique comment relier les pin des filtres entre elles et au finale lier ce module a mon media player, car les tuto que je trouve font surtout reference a la conversion de format de fichier et je n arrive pas a comprendre l ensemble des données d autant que plusieurs me sont inutiles.
merci

a l heure actuel j en suis la:
creation d un data modul constitué de:
1-TFiltergraph
2-des Tfilter au nomdre de 7 pour mes filtres directshow

ps: les filtres que j utilise sont:
>divxdecoder>MPEG2videoencoder
sourceasync>avisplitter> >H+render
>MpegLayer3>MPEG2audioencoder
Messages postés
37
Date d'inscription
vendredi 11 août 2006
Statut
Membre
Dernière intervention
17 décembre 2008

salut pour la connexion je me suis debrouiller mais le point le plus important et je bug vraiement c est comment dire au media player de charger ce graph? qu elle est donc la commande et ou la placée svp??
Messages postés
37
Date d'inscription
vendredi 11 août 2006
Statut
Membre
Dernière intervention
17 décembre 2008

Salut j ai bien avance et j ai changé de code si quelqu un pense etre capable de m aide ca serai bien car y pas beaucoup de reponse helas.
Mon nouveau code a tete concu sur la vase du code du addfilters.exe j arrive presque a faire mon graph avec mais le final ne passe pas.
Si quelqu un est dispo je lui transmettrai le graph je pense que je connect mal les XForm pin, car je les connecet comme des pins normal sans inclure l appelation XForm.