You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中为axWindowsMediaPlayer组件的视频编程添加标记?

在Visual Studio 2019 C#中为axWindowsMediaPlayer添加标记并响应MarkerHit事件

核心实现逻辑

要动态添加视频标记并触发对应操作,需借助IWMPMedia3接口操作标记,结合PlayStateChange事件确保媒体加载完成后再添加标记,最后通过MarkerHit事件响应标记触发。

代码实现步骤

  1. 控件与引用准备
    确保已在Visual Studio窗体中添加axWindowsMediaPlayer控件,并自动引用WMPLib和AxWMPLib程序集。

  2. 声明媒体操作对象
    在窗体类中声明用于标记操作的媒体对象:

    private WMPlib.IWMPMedia3 _currentMedia;
    
  3. 媒体就绪时添加标记
    订阅axWindowsMediaPlayer的PlayStateChange事件,在媒体进入就绪状态后添加自定义标记:

    private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        // 媒体就绪状态(wmppsReady)时执行标记添加
        if (e.newState == (int)WMPLib.WMPPlayState.wmppsReady)
        {
            _currentMedia = axWindowsMediaPlayer1.currentMedia as WMPlib.IWMPMedia3;
            if (_currentMedia == null) return;
    
            // 清除现有标记(可选,避免与媒体自带标记冲突)
            for (int i = _currentMedia.markerCount; i >= 1; i--)
            {
                _currentMedia.removeMarker(i);
            }
    
            // 添加标记:参数1为标记索引(从1开始),参数2为时间(单位:秒)
            _currentMedia.setMarker(1, 1.23);  // 对应00:01.23
            _currentMedia.setMarker(2, 1.54);  // 对应00:01.54
            _currentMedia.setMarker(3, 2.14);  // 对应00:02.14
        }
    }
    
  4. 响应标记触发执行操作
    订阅axWindowsMediaPlayer的MarkerHit事件,根据标记索引执行对应业务逻辑:

    private void axWindowsMediaPlayer1_MarkerHit(object sender, AxWMPLib._WMPOCXEvents_MarkerHitEvent e)
    {
        switch (e.markerNum)
        {
            case 1:
                // 替换为00:01.23标记点的自定义操作
                MessageBox.Show("触发标记点:00:01.23");
                break;
            case 2:
                MessageBox.Show("触发标记点:00:01.54");
                break;
            case 3:
                MessageBox.Show("触发标记点:00:02.14");
                break;
        }
    }
    

关键注意事项

  • 标记索引从1开始,setMarker和removeMarker方法均遵循此规则。
  • 时间参数需转换为秒,例如01:30.50对应90.5秒。
  • 必须等待媒体进入wmppsReady状态后再操作标记,否则currentMedia可能为空或未初始化。
  • IWMPMedia3是扩展接口,需将currentMedia强制转换为该类型才能使用标记操作方法。

内容的提问来源于stack exchange,提问作者Jose Diaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:55:30