请教如何使 WindowsMediaPlayer2 与 WindowsMediaPlayer1 播放画面同步
请教如何使WindowsMediaPlayer2与WindowsMediaPlayer1播放画面同步
由于不能从directshow层面控制播放,我们可以简单用个定时器检测两个WindowsMediaPlayer.Controls.currentPosition的误差,当误差大于某一值时用WindowsMediaPlayer1的当前位置去同步WindowsMediaPlayer2的当前位置,由于WindowsMediaPlayer是另一个线程完成的,因此发送同步消息会有一点误差,可以同步两次,第一次同步获取误差,第二次同步加上误差,基本可以同步起来。
Private Sub Command1_Click()
'播放按钮,正常播放后修改WindowsMediaPlayer1播放位置,再按command2可看到同步效果,如果播放其他格式影片似乎误差很不同
WindowsMediaPlayer1.URL = "E:\影视剪辑\郑多燕健身舞全集郑多燕减肥操第二部 瘦腿瘦腰(清晰片).flv"
WindowsMediaPlayer2.URL = "E:\影视剪辑\郑多燕健身舞全集郑多燕减肥操第二部 瘦腿瘦腰(清晰片).flv" '加载相同影片
DoEvents
WindowsMediaPlayer1.Controls.play
WindowsMediaPlayer2.Controls.play '同时发播放命令
End Sub
Private Sub Command2_Click()
'同步按钮
Dim c As Single, i As Integer
WindowsMediaPlayer2.Controls.currentPosition = WindowsMediaPlayer1.Controls.currentPosition '第一次发绝对同步消息
For i = 0 To 20000
DoEvents '给WindowsMediaPlayer2线程修改播放位置的足够时间
Next
c = WindowsMediaPlayer1.Controls.currentPosition - WindowsMediaPlayer2.Controls.currentPosition '获取误差
WindowsMediaPlayer2.Controls.currentPosition = WindowsMediaPlayer1.Controls.currentPosition + c '第二次同步加上误差
End Sub