我的Windows窗体项目中有一个Windows媒体播放器COM,可以很好地播放和打开视频。但是,我希望能够抓取已加载视频的第一帧,以便我的程序用户可以预览视频(并且理想情况下可以识别另一个视频)。如何更新Windows Media Player COM的框架?
如何更新windows媒体播放器对象显示的帧?
我曾尝试使用下面的代码在我的OpenFileDialog事件响应的结束尝试:
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
Text = openFileDialog1.SafeFileName + " - MPlayer 2.0";
//mediaPlayer1.openPlayer(openFileDialog1.FileName);
mediaPlayer1.URL = openFileDialog1.FileName;
//hopefully, this will load the first frame.
mediaPlayer1.Ctlcontrols.play();
mediaPlayer1.Ctlcontrols.pause();
}
然而,当我运行此,暂停命令被忽略(视频加载自动播放关闭,所以如果没有调用.play(),视频将不会开始播放)。如果我不得不猜测,我会说这是因为某些线程操作会调用播放,继续调用暂停,调用暂停,然后,最终播放结束,视频开始 - 但由于.pause在.play之前就解决了,最终的效果是.pause最终没有被注意到。首先,除了.play()之外,还有其他方法吗? 。暂停();为AxWindowsMediaPlayer对象获取视频的预览图像?如果没有,我怎样才能确保我的.pause()不会被忽略?
(我知道.play(); .pause();
作品在一般情况下,因为我有一个单独的按钮调用视频加载完成后,这两种方法测试,它的工作如预期)