这并不像 Nadhmi (@user5330265) 所说的那么简单。视频可能会在计时器滴答之间完成播放并重置为空白帧,在这种情况下,永远不会执行暂停。
我发现了以下作品,代价是错过了视频的最后一个 iInterval 毫秒。tmrVideo 计时器间隔设置为 1 毫秒。在我的系统上,它似乎每 15 毫秒运行一次,但诊断会减慢它的速度。它似乎并没有增加整体 CPU 负载。我为 iInterval 使用 250 的值 - currentPosition 似乎永远不会达到持续时间。较小的值意味着更少的视频丢失,但出现空白帧的机会更大。
加载视频时 currentPosition 为零,这就是需要将测试添加到条件中的原因。
tmrVideo 需要在每个 axWindowsMediaPlayer1.Ctlcontrols.play() 命令之后启用。
private void tmrVideo_Tick(object sender, EventArgs e)
{
if ((axWindowsMediaPlayer1.currentMedia.duration - axWindowsMediaPlayer1.Ctlcontrols.currentPosition)*1000 <
iInterval) &&
axWindowsMediaPlayer1.Ctlcontrols.currentPosition!= 0)
{
axWindowsMediaPlayer1.Ctlcontrols.pause();
tmrVideo.Enabled = false;
}
}