Unity importa video y realiza la reproducción y el deslizamiento de la barra de progreso

1. Crear interfaz

1. Cree una interfaz de unidad como se muestra
Estructura de directorios
a continuación button1: video anterior
button2: play/pause
button3: next video
vidotime: es un texto que muestra la hora del video
videoname: nombre del video

2. La interfaz específica es la siguiente


2. Importar secuencias de comandos
1. Importar secuencias de comandos en RawImage para realizar reproducción/pausa de video y cambiar funciones de video

utilizando System.Collections;
usando System.Collections.Generic;
utilizando UnityEngine;
utilizando UnityEngine.UI;
utilizando UnityEngine.Video;

clase pública Video_Controller: MonoBehaviour
{     reproductor de video privado VideoPlayer;     imagen sin procesar privada imagen sin procesar;     privado int currentClipIndex;


    Texto público text_playorpause;
    botón público button_playorpause;
    Botón público button_pre;
    Botón público button_next;
    Clip de vídeo público[] clips de vídeo;
                                  
    void Start()
    {         reproductor de video = this.GetComponent<VideoPlayer>();         rawImage = this.GetComponent<RawImage>();         índiceClipActual = 0;         button_playorpause.onClick.AddListener(OnplayorpauseVideo);         button_pre.onClick.AddListener(OnpreVideo);         button_next.onClick.AddListener(OnnextVideo);     }






    // La actualización se llama una vez por cuadro
    void Update()
    {         if (videoplayer.texture == null)         {             return;         }         rawImage.textura = reproductor de video.textura;




    }
    private void OnplayorpauseVideo()
    {         if (videoplayer.enabled == true)         {             if (videoplayer.isPlaying)             {                 videoplayer.Pause();                 text_playorpause.text = "播放";             }             else if (!videoplayer.isPlaying)             {                 videoplayer.Play();                 text_playorpause.text = "暂停";             }         }     }     privado void OnpreVideo()     {         currentClipIndex -= 1;         si (ÍndiceClipActual < 0)         {






       




          









            currentClipIndex = videoClips.Length - 1;
        }
        videoplayer.clip = videoClips[currentClipIndex];
        text_playorpause.text = "暂停";
    }
    privado void OnnextVideo()
    {         currentClipIndex += 1;         currentClipIndex = currentClipIndex % videoClips.Length;         videoplayer.clip = videoClips[currentClipIndex];         text_playorpause.text = "暂停";     } }






2. Para diferentes funciones, seleccione el botón correspondiente

3. Agregue el componente del reproductor de video, seleccione el video para reproducir

4. Agregue secuencias de comandos para mostrar la barra de progreso del video y el tiempo de reproducción

utilizando UnityEngine;

utilizando UnityEngine.UI;

utilizando UnityEngine.Video;

clase pública ToPlayVideo: MonoBehaviour
{

    public VideoClip videoClip; // parámetros del archivo de video

    public Text videoTimeText; // texto de tiempo de video

    public Text videoNameText; // nombre del video Text

    public Slider videoTimeSlider; // control deslizante de tiempo de video

    //Definir parámetros para obtener el componente VideoPlayer y el componente RawImage

    reproductor de video reproductor de video interno;

    imagen sin procesar privada imagen sin procesar;

    // Usa esto para la inicialización

    vacío Inicio ()

    {

        // Obtener el componente correspondiente en la escena

        videoPlayer = this.GetComponent<VideoPlayer>();

        rawImage = this.GetComponent<RawImage>();

        videoPlayer.clip = videoclip;

        videoNombreTexto.text = videoClip.nombre;

        clipHour = (int)videoPlayer.clip.length / 3600;

        clipMinute = (int)(videoPlayer.clip.length - clipHour * 3600) / 60;

        clipSecond = (int)(videoPlayer.clip.length - clipHour * 3600 - clipMinute * 60);

        videoPlayer.Play();

    }

    // La actualización se llama una vez por marco

    actualización nula ()

    {

        //Si videoPlayer no tiene una textura de video correspondiente, regresa

        si (videoPlayer.textura == nulo)

        {

            devolver;

        }

        //Renderiza el video de VideoPlayerd a RawImage de UGUI

        rawImage.textura = videoPlayer.textura;

        MostrarTiempoVideo();

    }

    /// <resumen>

    /// Mostrar el tiempo del video actual

    /// </resumen>

    vacío privado ShowVideoTime()

    {

        // tiempo actual de reproducción del video

        horaActual = (int)videoPlayer.time / 3600;

        minuto actual = (int)(videoPlayer.time - hora actual * 3600) / 60;

        currentSecond = (int)(videoPlayer.time - currentHour * 3600 - currentMinute * 60);

        // Muestra el tiempo de reproducción del video actual en Text

        videoTimeText.text = string.Format("{0:D2}:{1:D2}:{2:D2} / {3:D2}:{4:D2}:{5:D2}",

            hora actual, minuto actual, segundo actual, clipHour, clipMinute, clipSecond);

        // Asigne la relación de tiempo de la reproducción de video actual al Control deslizante

        videoTimeSlider.value = (float)(videoPlayer.time / videoPlayer.clip.length);

    }

    /// <resumen>

    /// El valor actual de la escala del control deslizante se convierte en el tiempo de reproducción de video actual

    /// </resumen>

    vacío privado SetVideoTimeValueChange()

    {

        videoPlayer.time = videoTimeSlider.value * videoPlayer.clip.length;

    }

    // El valor de tiempo total del video actual y los parámetros del valor de tiempo de reproducción actual

    hora actual privada int;

    minuto actual privado int;

    privado int segundo actual;

    clipHour int privado;

    privado int clipMinute;

    privado int clipSecond;

}


5. Agregue los controles correspondientes

6. Para realizar el arrastre y avance rápido de la reproducción de video por la barra de progreso, agregue la siguiente secuencia de comandos al control deslizante

utilizando UnityEngine;

utilizando UnityEngine.EventSystems;

/// <resumen>

/// Heredar la interfaz de arrastrar y soltar

/// </resumen>

SliderEvent de clase pública: MonoBehaviour, IDragHandler

{

    [Serializar campo]

    private ToPlayVideo toPlayVideo; // script para reproducción de video

    // Usa esto para la inicialización

    vacío Inicio ()
    {

    }

    // La actualización se llama una vez por marco

    actualización nula ()
    {

    }

    /// <resumen>

    /// Agregar evento de arrastre a Slider

    /// </resumen>

    /// <param nombre="eventData"></param>

    public void OnDrag(PointerEventData eventData)

    {

        EstablecerCambioValorTiempoVideo();

    }

    /// <resumen>

    /// El valor actual de la escala del control deslizante se convierte en el tiempo de reproducción de video actual

    /// </resumen>

    vacío privado SetVideoTimeValueChange()

    {

        toPlayVideo.videoPlayer.time = toPlayVideo.videoTimeSlider.value * toPlayVideo.videoPlayer.clip.length;

    }

}
efecto final

 

 

Supongo que te gusta

Origin blog.csdn.net/zhouyuwen1/article/details/130386217
Recomendado
Clasificación