Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 14 janv. 2009 à 00:21
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 ...
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 14 janv. 2009 à 10:12
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 )
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;
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));
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);