Comment utiliser l'activeX TMediaPlayer dans un thread ?
Je cherche à lire des fichiers son (wav pour l'instant, mais ça pourait être n'importe quoi) en parallèle.
J'ai donc écrit un petit thread :Que j'appelle avec ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 procedure TThreadMediaPlayer.Execute; begin CoInitialize(nil); _WMP:= TWindowsMediaPlayer.Create(nil); _WMP.OnStatusChange := WMPStatusChange; _WMP.settings.volume := _nVolume; _WMP.URL := _szSon; // _WMP.controls.play; while not Terminated do ; _WMP.OnStatusChange := nil; _WMP.controls.stop; _WMP.Free; _WMP := nil; end; procedure TThreadMediaPlayer.WMPStatusChange(Sender: TObject); begin // Si fin du fichier. if _WMP.ControlInterface.playState = wmppsMediaEnded then Terminate; end;En pas à pas dans le thread, j'arrive bien jusqu'à la ligne d'affectation de _WMP.URL, mais le son n'est pas joué.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 _ThreadMediaPlayer := TThreadMediaPlayer.Create(True); _ThreadMediaPlayer._szSon := 'E:\blabla\MonFichier.wav'; _ThreadMediaPlayer._nVolume := 30; _ThreadMediaPlayer.Resume;
Bien sûr, j'ai testé à part :Et ca fonctionne bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 _WMP:= TWindowsMediaPlayer.Create(nil); try _WMP.settings.volume := 90; _WMP.URL := 'E:\blabla\MonFichier.wav';
Qu'est ce que j'ai oublié ?
Partager