Reproducir diferentes segmentos en un video

Quiero desarrollar un reproductor de video que tenga que reproducir diferentes partes en un video (especificado por sus posiciones de inicio y fin). Estoy usando directx.audiovideoplayback dll para este propósito. las posiciones inicial y final se almacenan en una matriz. por ejemplo, {2,6,8,19} dice que se debe reproducir el segmento entre el segundo y el sexto segundo y luego se debe reproducir el segundo y el segundo 2 al 6.

mi problema es que a pesar de dar la condición de que if(video_obj.CurrentPosition==endtime) video_obj.Stop(); el video no se detiene... el video se reproduce desde la segunda posición hasta el final del archivo.

código es

 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;
            }
        }  

¡Ayudar! En algún lugar, algo anda mal y no tengo ni idea. ¿Cómo lo corrijo? El video comienza a reproducirse cuando

preguntado el 12 de junio de 12 a las 21:06

¿Puedes mostrar más código? Parte del código que mencionas en tu publicación no coincide con el bloque de código dado. Puedo ver lo que parecen ser problemas, pero realmente no puedo estar seguro. Un ejemplo sería su bucle for. ¿Parece que está iniciando el mismo temporizador para cada interacción del ciclo? ¿Eso es lo que se pretende? timertick hace referencia a otro temporizador global (timer1 vs timer)? Básicamente, necesitamos más información. -

editado el código! :) ¡Ayuda por favor! -

1 Respuestas

Por lo tanto, todavía no hay suficiente información en la publicación para decir definitivamente qué está mal. Supongo que su temporizador no está funcionando con suficiente resolución como para marcar exactamente cuando el bucle for en el temporizador coincida con la posición actual del video.

¿Con qué frecuencia marca el temporizador? ¿Cuál es la precisión de la posición actual del video?

Respondido el 13 de junio de 12 a las 07:06

el intervalo de tic del temporizador es 1000 y la posición actual del video será un valor entero. Incluso mi intuición dice que podría haber algún problema de resolución de tictac del temporizador, pero no sé cómo resolverlo: user1188979

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.