我在WinForm
应用程序中使用了AxWindowsMediaPlayer
组件。我注意到当我将 URL 设置为文件时,我想播放并调用Ctlcontrols.play()
命令有一个 eg。影片开始播放前 250 毫秒延迟。
在此延迟期间,AxWindowsMediaPlayer
区域为黑色。当您从一部电影切换到另一部电影时,或者当您停止当前播放电影并重新启动它时,很容易看到此行为。
我当前的解决方案基于在开始播放电影时将推迟的可见性设置为 true AxWindowsMediaPlayer
。播放器在例如之后显示给用户。500ms,当我确定,电影实际上正在播放,用户不会看到黑色的任何东西。
我正在寻找更好的方法来避免黑色无玩家。有人解决了类似的问题吗?或者至少因为我正在处理非常经验的值,这些值在不同的PC上会有所不同,有没有办法创建万无一失的解决方案?
Prereq: WinForms, .NET 4.0, WMP 12 for Windows 7
private void OnPlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
switch (e.newState)
{
case 3: // Playing started
// Show your control
break;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if(axWindowsMediaPlayer1.Ctlcontrols.currentPosition > axWindowsMediaPlayer1.Ctlcontrols.currentItem.duration - 0.01)
{
axWindowsMediaPlayer1.Ctlcontrols.currentPosition = 0;
}
}
此代码在视频运行 0.01 毫秒时将 currentPosition 更改为 0 秒,从而避免黑屏的过渡效果。但是对于短视频,需要额外的代码。