begin process at 2010 09 09 10:02:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Mutimédia

 > 

Image & Vidéo

 > 

Capture des frames d'un TMediaPlayer


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Capture des frames d'un TMediaPlayer

lundi 5 janvier 2009 à 17:24:23 | Capture des frames d'un TMediaPlayer

blueperfect

Quelqu'un sait-il comment capturer en TBitmap chaque frame d'un TMediaPlayer, sans les afficher ?
mercredi 14 janvier 2009 à 00:21:54 | Re : Capture des frames d'un TMediaPlayer

Nicolas___

Réponse acceptée !
Hep, est tu obligé d'utiliser le TMauvaisMediaPlayer ?

J'ai fait un prog pour réaliser ca (mais pas avec TMediaPlayer) , Capture de la Frame jouée et Capture de toutes les frames (Interval à choisir : ex : toutes les secondes , minutes , dixième de secondes ... )

Si tu es encore intérréssé je posterais cette source ...

Nico
mercredi 14 janvier 2009 à 03:58:08 | Re : Capture des frames d'un TMediaPlayer

blueperfect

Oh que oui que ça m'interresse....

Si tu as besoin d'un truc...dis toujours... :-)
mercredi 14 janvier 2009 à 10:12:30 | Re : Capture des frames d'un TMediaPlayer

Nicolas___

Réponse acceptée !
Ok, ben je refais un peu l'indentation et je vérifie la source pour avoir une belle syntaxe et j'envoie ça
sur DelphiFR ce soir ...

PS : pour certains formats, ça ne passe pas (les Flv foire , les XVids aussi je pense et les mp4)
PS2: pour chaquue format à decoder , tu dois avoir les codecs sur ton pc (Et oui, c'est pas un VLC inside  )

Nico
mercredi 14 janvier 2009 à 18:24:51 | Re : Capture des frames d'un TMediaPlayer

blueperfect

J'ai développé une TPaintBox qui me permets d'afficher des TBitmaps recto/verso en 3D, et je veux le coupler avec un lecteur de video....

Je les convertirais en WMV ou AVI s'il le faut...
mercredi 14 janvier 2009 à 18:42:48 | Re : Capture des frames d'un TMediaPlayer

Nicolas___

Hep : http://www.delphifr.com/codes/BASSVIDEO-LECTEUR-VIDEO-AVEC-BASS_48975.aspx

Voila, tout beau , tout frais :)
mercredi 14 janvier 2009 à 20:46:18 | Re : Capture des frames d'un TMediaPlayer

blueperfect

Ton exe fonctionne, mais pas le mien !

héhé

je te poste la source du DFM et du PAS, si tu peux me dire le problème...

Tu choisis une video, il capture la premiere frame...
mercredi 14 janvier 2009 à 20:46:44 | Re : Capture des frames d'un TMediaPlayer

blueperfect

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, FileCtrl, StdCtrls;

type
  TForm1 = class(TForm)
    DriveComboBox1: TDriveComboBox;
    DirectoryListBox1: TDirectoryListBox;
    FileListBox1: TFileListBox;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FileListBox1DblClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


uses Bass,BassVideo;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if not Bass_Init(-1, 44100, 0, 0, nil) then
  begin
    MessageBox(handle,'gg','Error',MB_OK);
    halt;
  end;

  if not BASSVideo_Init then halt;
  BassVideo_SetConfig(BassVideo_Default, 1);

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  BASSVideo_Free;
  BASS_Free;
end;

var
  Chan : DWORD;
function MyVideoStream(Handle : DWORD; Action, param1, param2 : DWORD; user : Pointer): BOOL; stdcall;
var
  ClientRect : TRect;
begin
result := TRUE;
case Action of
  BassVideo_FoundVideo :
    begin
      // on chope la zone d'affichage
      ClientRect:=form1.ClientRect;
      BASSVideo_SetVideoWindow(Handle, form1.Handle,ClientRect, 0);
    end;

  BassVideo_EndStream :
   begin
      BassVideo_StreamFree(chan);
      // a la fin de la video, voir la progression n'a plus grande importance, on stope le Timer
   end;

  BassVideo_OpenDone :
    begin
    //Ouverture Réussie
    end;

  BassVideo_DShow_Event :
   begin
   end;

end;
end;
procedure TForm1.FileListBox1DblClick(Sender: TObject);
var
    Heure : integer;
    Minute : integer;
    Seconde : integer;
    Length : Double;
  pos : double;
  s:widestring;

begin
     s:= 'C:\Documents and Settings\David HAROUCHE\Bureau\Pagecapt.bmp';

  Chan := BassVideo_StreamCreateFile( PChar(self.FileListBox1.FileName),
                                      BASSVIDEO_VIDEOEFFECT ,
                                      0,
                                      @MyVideoStream,
                                      nil
                                    );
  BASSVideo_SetPosition(Chan,0);
  BassVideo_Pause(chan);
  BassVideo_FrameStep(chan);

    Length := BASSVideo_GetLength(Chan);
    // on calcule le nb H,M,S % à Round(Length) qi donne le temps en seconde...
    Heure:=Round(Length)div 3600;
    Minute := Round(Length - (Heure*3600)) div 60;
    Seconde := Round(Length - (Heure*3600) - (Minute*60));

    self.Caption := Format('%d Heure %d minutes %d secondes',[Heure,Minute,Seconde]);

  pos := BassVideo_GetPosition(Chan);//+ precis que progressDuree.Position
    // On met à jour la barre de progression toutes les 25 secondes de vidéo
    // capturée ...
    if(Round(pos) mod 25 = 0) then Application.ProcessMessages;
  BassVideo.BassVideo_CaptureBitmap(PWideChar(self.FileListBox1.FileName), pos, PWideChar(s), BASS_UNICODE);
  
  BassVideo_StreamFree(Chan);
end;

end.
mercredi 14 janvier 2009 à 20:47:08 | Re : Capture des frames d'un TMediaPlayer

blueperfect

object Form1: TForm1
  Left = 191
  Top = 149
  Width = 391
  Height = 238
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  PixelsPerInch = 96
  TextHeight = 13
  object DriveComboBox1: TDriveComboBox
    Left = 40
    Top = 24
    Width = 145
    Height = 19
    DirList = DirectoryListBox1
    TabOrder = 0
  end
  object DirectoryListBox1: TDirectoryListBox
    Left = 40
    Top = 56
    Width = 145
    Height = 97
    FileList = FileListBox1
    ItemHeight = 16
    TabOrder = 1
  end
  object FileListBox1: TFileListBox
    Left = 192
    Top = 56
    Width = 145
    Height = 97
    ItemHeight = 13
    TabOrder = 2
    OnDblClick = FileListBox1DblClick
  end
end
jeudi 15 janvier 2009 à 00:41:30 | Re : Capture des frames d'un TMediaPlayer

blueperfect


J'ai trouvé ! BassVideo.BassVideo_CaptureBitmap(PWideChar(self.FileListBox1.FileName), pos, PWideChar(s), BASS_UNICODE); devient var filename:widestring; filename := self.FileListBox1.FileName; BassVideo.BassVideo_CaptureBitmap(PWideChar(filename), pos, PWideChar(s), BASS_UNICODE);
blueperfect

1 2

Cette discussion est classée dans : capture, frames, tmediaplayer


Répondre à ce message

Sujets en rapport avec ce message

capture d'ecran et format d'image [ par neodelphi ] Voila :J'ai un truc qui fait une capture d'ecran et je l'affiche dans un TImage. Ensuite je crée un autre image et je fait un Canvas.Copy...Comme ça j Capture de port LPT [ par Amadeus ] Quelqu'un connait-il un logiciel permettant de capturer les données envoyé vers une imprimante.Ou des composant delphi qui le permette DelphiX: transparence et optimisation [ par Vin-s ] Salut à tous,Le problème est des plus simple.La fonction directX de dessin par transparences: Drawalphaest tres, tres lentes... les Frames Par Seconde CAPTURE D'ECRAN [ par MasterNKZ ] Salut a tous!Comment réaliser une capture d'écran et l'enregistrer sous le format désiré dans un répertoire désigné??J'attend vos réponses svp!!!ciao Répondez SVP : Capture d'écran [ par MasterNKZ ] Je relance mon message:Commnt faire pour réaliser une capture d'écran et enregistrer l'image au format voulu dans le dossier voulu.Voila aidez moi svp Question sur le TMediaPlayer [ par costello ] J'ai un léger problème avec le composant TMediaPlayer.Il ne peut charger qu'un seul fichier à la fois; or je voudrais qu'il lise tous les fichiers d'u capture d'ecran [ par ak47 ] salut a tous!Ma question va surement paraitre stupide parcequ'elle n'a pas vraiment rapport à la programation, mais je voudrait savoir avec quel logic Probleme avec la capture de la souris [ par tigroublb ] Salut tout le monde.En fait j'essaie d'utiliser la fonction MouseProc (apres avoir défini le hook bien sur), mais je suis incapable d'accéder à la po capture d'écran de la fenetre active [ par etrix ] salut,voilà j'ai deja bcp chercher mais j'ai rien trouver pour faire une capture d'ecran de la fenetre active en delphi.j'espere vraiment que qqun sai capture d'ecran > Dans Timage [ par etrix ] salut,voila j'ai fait capture d'ecran grace a une simulation de touches, mais ensuite je sais pas comment faire pour mettre la capture dans une Timage


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales