我想开发一个视频播放器,它必须在视频中播放不同的部分(由它们的起始位置指定)。我为此目的使用directx.audiovideoplayback dll。 起始位置和结束位置存储在一个数组中。 eg- {2,6,8,19}表示必须播放2到6秒之间的片段,然后播放8到19秒。
我的问题是,尽管我给出了条件 if(video_obj.CurrentPosition == endtime)video_obj.Stop(); 视频没有停止.. 视频正在从第2个位置播放到文件末尾。
代码是
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;
}
}
帮助!某处出了问题,我对此一无所知 我该如何纠正? 当我
时,视频开始播放答案 0 :(得分:0)
因此,帖子中仍然没有足够的信息来确切地说出错了什么。我猜你的计时器没有足够的分辨率,当计时器滴答中的for循环与视频的当前位置重合时恰好勾选。
计时器多久打勾一次?视频当前位置的精确度是多少?