Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在视频中播放不同的片段_C#_Video_Directx_Playback - Fatal编程技术网

C# 在视频中播放不同的片段

C# 在视频中播放不同的片段,c#,video,directx,playback,C#,Video,Directx,Playback,我想开发一个视频播放器,它必须在视频中播放不同的部分,由它们的开始和结束位置指定。为此,我正在使用directx.audiovideoplayback dll。 起始和结束位置存储在一个数组中。 eg-{2,6,8,19}告诉我们必须播放第2到第6秒之间的片段,然后播放第8到第19秒之间的片段 我的问题是尽管我给出了条件 如果视频对象当前位置==结束时间视频对象停止; 视频没有停止。。 视频从文件的第二个位置播放到最后 代码是 public static int[] seconds = { 3

我想开发一个视频播放器,它必须在视频中播放不同的部分,由它们的开始和结束位置指定。为此,我正在使用directx.audiovideoplayback dll。 起始和结束位置存储在一个数组中。 eg-{2,6,8,19}告诉我们必须播放第2到第6秒之间的片段,然后播放第8到第19秒之间的片段

我的问题是尽管我给出了条件 如果视频对象当前位置==结束时间视频对象停止; 视频没有停止。。 视频从文件的第二个位置播放到最后

代码是

 public static int[] seconds = { 3,8,12,16};
    public static int start, end;
    private void btnPlay_Click(object sender, EventArgs e)
    {
        vdo.Owner = panel1;
        panel1.Width = 300;
        panel1.Height = 150;
        vdoTrackBar.Minimum = 0;
        vdoTrackBar.Maximum = Convert.ToInt32(vdo.Duration);

        if (vdo != null)
        {
            vdo.Play();
            timer1.Start();
        }
    }
private void vdoTrackBar_Scroll(object sender, EventArgs e)
    {
        if (vdo != null)
        {
            vdo.CurrentPosition = vdoTrackBar.Value;
        }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        int i;
        for (i = 0; i < seconds.Length; i = i + 2)
        {
            start = seconds[i];
            vdo.CurrentPosition = start;
            end = seconds[i + 1];
            vdoTrackBar.Value = (int)vdo.CurrentPosition;

            MessageBox.Show("Starts at " + vdo.CurrentPosition + " and Ends at " + end);
            if (vdo.Paused)
                vdo.Play();
            if (vdo.Playing)
            {
                if (vdo.CurrentPosition == vdo.Duration)
                {
                    timer1.Stop();
                    vdo.Pause();
                    vdoTrackBar.Value = 0;
                }
                if (vdo.CurrentPosition == end)
                {
                    timer1.Stop();
                    vdo.Pause();
                }

                vdoTrackBar.Value += 1;
            }
        }  
救命啊!某处出了点问题,我对此一无所知 我如何纠正它?
视频开始播放时我

,所以帖子中仍然没有足够的信息来真正明确地说出哪里出了问题。我猜你的计时器没有以足够的分辨率滴答作响,恰好在计时器滴答中的for循环与视频的当前位置一致时滴答作响


计时器多长时间响一次?视频当前位置的精度是多少?

能否显示更多代码?您在文章中提到的一些代码与给定的代码块不匹配。我能看出问题的症结所在,但我不能确定。例如,for循环。看起来你在为循环的每个交互启动相同的计时器?这是有意的吗?timertick引用另一个全局计时器timer1 vs timer?基本上,我们需要更多信息。编辑代码!:救命啊!计时器滴答声间隔为1000,视频当前位置为整数值。就连我的直觉都说可能有一些计时器滴答作响的问题,但我不知道如何解决