gpt4 book ai didi

c# - AxWindowsMediaPlayer : pause on last frame

转载 作者:行者123 更新时间:2023-11-30 18:35:40 25 4
gpt4 key购买 nike

我在 Winforms C# 应用程序中使用 AxWindowsMediaPlayer 控件,我想将播放器设置为在视频播放完毕后暂停在最后一帧。我已经处理了这样一个事实,即视频已完成以在播放器上显示另一个具有不同内容的控件,但我想避免出现在两者之间的空白帧。

是否可以将播放器配置为在最后一帧暂停?或者是否有我可以处理的事件将视频设置为在最后一帧或最后几毫秒暂停?

附言。 PositionChange 事件似乎仅在位置由用户设置或在代码中设置时才会引发,因此我无法使用它。 MarkerHit 事件看起来很有希望,但我找不到任何方法在视频中设置标记,因此也不起作用。

最佳答案

MediaPlayer 中有一个特殊的事件,您可以在其中跟踪播放状态的变化。此事件是 PlayStateChange。只需订阅这些事件,您就可以执行以下操作:

    private void MediaPlayer_PlayStateChange( object sender, _WMPOCXEvents_PlayStateChangeEvent e )
{
switch( e.newState )
{
case 0: // Undefined
break;
case 1: // Stopped
// keep last frame
View.MediaPlayer.Ctlcontrols.currentPosition = View.MediaPlayer.currentMedia.duration - .001;
View.MediaPlayer.Ctlcontrols.play();
View.MediaPlayer.Ctlcontrols.pause();
break;
case 2: // Paused
break;
case 3: // Playing
break;
case 4: // ScanForward
break;
case 5: // ScanReverse
break;
case 6: // Buffering
break;
case 7: // Waiting
break;
case 8: // MediaEnded
break;
case 9: // Transitioning
break;
case 10: // Ready
break;
case 11: // Reconnecting
break;
case 12: // Last
break;
}
}

关于c# - AxWindowsMediaPlayer : pause on last frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14668409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com