Sofdec2-Unity/视频位置查找播放

在普通的视频播放器中播放一个视频时,我们可以通过点击和拖动进度条来调整播放的进度和时机。Sofdec2编码后放置在Unity中时,也能够使用相同的功能,即视频位置查找播放。

本次教程中,我们将在界面上播放一个视频,同时使用两个滑块,分别用于提供位置查找功能以及显示播放进度。

Unity设置

我们首先创建一个Image,并在其上添加CirManaMovieControllerForUI的Component。

创建完成后,在CirManaMovieControllerForUI Component中勾选Play On Start:

如上图,视频播放内容设置就可以完成了,随后在Image上添加脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SeekForPosition : MonoBehaviour
{
    public UnityEngine.UI.Slider seekValue;
    private CriManaMovieControllerForUI moviePlayer;

    void Start()
    {
        moviePlayer = GetComponent<CriManaMovieControllerForUI>();
        seekValue.maxValue = 0;
    }

    void Update()
    {

        if (moviePlayer.player.movieInfo != null && seekValue.maxValue == 0)
        {
            seekValue.maxValue = (int)moviePlayer.player.movieInfo.totalFrames;
        }

        if (moviePlayer.player.status == CriMana.Player.Status.Stop)
        {
            moviePlayer.player.Start();
        }
    }

    public void onValueChanged()
    {
        moviePlayer.player.Stop();
        moviePlayer.player.SetSeekPosition((int)seekValue.value);
    }
}

代码如上我们将滑块的最大值设置为视频内容的最大帧数,同时创建函数,用于查找视频的帧位置。

因为我们在代码中创建了滑块相关功能,因此我们需要创建相关滑块:

创建的滑块将值更改时间挂钩于我们的Image object的函数中。同时调整Image脚本:

这样一来,我们的滑块就能够查找视频的位置并且进行跳转播放了。

除此之外我们还想时刻显示当前播放进度,因此我们继续创建一个滑块,并在滑块上添加脚本如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class AudioSeekPosition : MonoBehaviour
{
    public CriManaMovieControllerForUI movieplayer;
    private UnityEngine.UI.Slider sliderbe;
    // Start is called before the first frame update
    void Start()
    {
        sliderbe = GetComponent<Slider>();
        sliderbe.maxValue = 0;
    }
    // Update is called once per frame
    void Update()
    {
        if(sliderbe.maxValue == 0 && movieplayer.player.movieInfo != null)
        {
            sliderbe.maxValue = movieplayer.player.movieInfo.totalFrames;
        }
        if (movieplayer.player.frameInfo != null)
        {
            sliderbe.value = movieplayer.player.frameInfo.frameNo % sliderbe.maxValue;
        }
    }
}

如上图所示,将Image添加到脚本上去后我们的滑块和Image以及视频播放就已经设置完成了,当我们运行场景后,就能够调整播放位置,并看到当前的播放进度了。

Ringo

CRI Middleware Global Expansion Group

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据