【问题标题】:How to detect the end of an AxWindowsMediaPlayer playlist如何检测 AxWindowsMediaPlayer 播放列表的结尾
【发布时间】:2016-10-20 16:09:46
【问题描述】:

我目前有一个程序可以播放播放列表中的一组视频,然后在视频播放完毕后显示一组图像。我目前正在使用 PlayStateChange 事件来计算每次视频结束的时间,但这会导致图像显示在最后一个视频的开头而不是结尾。当播放列表完全播放完毕时,我需要一种方法来触发图像。我什至尝试延迟代码,但这会导致我的显示图像方法出现问题。这是一个代码示例,并不是真的需要它来回答我的问题。

    private void player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        if (!currSess.playOne)
        {
            Console.WriteLine(player.playState);
            if (e.newState == 8 | e.newState == 9)
            {
                if (e.newState == 8)
                {
                    currSess.playQueue++;
                    Console.WriteLine(currSess.playQueue);
                }

            }

                if (currSess.playQueue+1 > player.currentPlaylist.count -1)
                {
                //    await Task.Delay(1000);
                    displayImgs(); 
                    player.PlayStateChange -= foo;
                    currSess.playQueue = 0;
                }
        }
    }

【问题讨论】:

  • 为什么是-1???这是一个有效的问题,我在网上其他任何地方都找不到。尚未找到其他类似问题的单一解决方案。

标签: c# playlist axwindowsmediaplayer


【解决方案1】:

通过添加另一个 if 语句进行修复,因为如果最后一个视频播放完毕,它将假定就绪状态并停在那里:

   if (currSess.playQueue+1 > player.currentPlaylist.count -1)
                {
                    if (e.newState == 10)
                    {
                        //    await Task.Delay(1000);
                        displayImgs();
                        currSess._timer.start();
                        Console.WriteLine(currSess._timer);
                        AllowControls(true);
                        allowItems();
                        player.PlayStateChange -= foo;
                        currSess.playQueue = 0;
                    }
                }

【讨论】:

    猜你喜欢
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    相关资源
    最近更新 更多