注册 登录
编程论坛 VB6论坛

请教如何使 WindowsMediaPlayer2 与 WindowsMediaPlayer1 播放画面同步

zdwlzcsm 发布于 2014-11-17 15:49, 540 次点击
请教如何使WindowsMediaPlayer2与WindowsMediaPlayer1播放画面同步
3 回复
#2
xzlxzlxzl2014-11-17 19:06
由于不能从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
#3
zhengang10262014-11-17 20:11
回复 2 楼 xzlxzlxzl
干的漂亮!
#4
zdwlzcsm2014-11-18 07:19
谢谢
1