Unity 使用VideoPlayer播放视频,实现播放,暂停,快进的效果

您所在的位置:网站首页 unity视频播放的容器 Unity 使用VideoPlayer播放视频,实现播放,暂停,快进的效果

Unity 使用VideoPlayer播放视频,实现播放,暂停,快进的效果

2024-05-19 15:50| 来源: 网络整理| 查看: 265

 

1. 首先先创建一个Render TexTure   在创建一个RawImage,

再把创建好的Render TexTure (我是随意起的名字,你们自己看着起) ,挂载到 RawImage 的Texture的地方  如下图所示

 

 

 

 

 

 2.在创建Video Player组件  把Render Texture 挂上去(挂在Target Texture上面),Video Clip (可以直接把视频拖上去,也可以写脚本控制)       如下图 

 

 

3.在给滑动条加上Event Trigger 组件,用一个开始拖拽的方法,一个结束拖拽的方法即可

   两个方法在脚本里写的有,拖拽在上面即可

 

 

 

 

 

 

 下面上代码

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; public class ShuiWenZhiShiButton : MonoBehaviour { public GameObject mv_obj; public VideoClip shipin1,shipin2; public VideoPlayer videoPlayer; public Button play_button; //播放按钮 public Button pause_button; //暂停按钮 public Text mv_length_text; //显示视频的长度 public Slider slider_kuajin; private bool isDrag; private int hour, minute, second; // 时 分 秒 // Start is called before the first frame update void Start() { Debug.Log (shipin1.length); //按钮1 button[0].onClick.AddListener(delegate { Photoenlable(0); if (mv_obj.activeSelf==false) { OnorOff_MVjiemian(true); } videoPlayer.clip = shipin1; }); //按钮2 button[1].onClick.AddListener(delegate { Photoenlable(1); if (mv_obj.activeSelf == false) { OnorOff_MVjiemian(true); } videoPlayer.clip = shipin2; }); //按钮3 button[2].onClick.AddListener(delegate { Photoenlable(2); }); } //打开或者关闭视频界面 public void OnorOff_MVjiemian(bool tra) { mv_obj.SetActive(tra); } //视频播放 public void MV_Play() { play_button.gameObject.SetActive(false); pause_button.gameObject.SetActive(true); videoPlayer.Play(); } //视频暂停 public void MV_Pause() { play_button.gameObject.SetActive(true); pause_button.gameObject.SetActive(false); videoPlayer.Pause(); } //显示视频的时间 public void ShiPin_Length() { hour = (int)videoPlayer.time / 3600; minute = ((int)videoPlayer.time - hour * 3600) / 60; second = (int)videoPlayer.time - hour * 3600 - minute * 60; mv_length_text.text = string.Format("{0:D2}:{1:D2}:{2:D2}", hour, minute, second); } /// 修改视频播放进度 private void ChangeVideoPlayTime() { if (isDrag == true) { videoPlayer.time = slider_kuajin.value*videoPlayer.clip.length; } } //修改进度条 public void XiuGaiJinDuTiao() { if (!isDrag) { slider_kuajin.value = (float)(videoPlayer.time / videoPlayer.clip.length); } } //开始拖拽 public void OnDragdrop() { isDrag = true; } //结束拖拽 public void OnEndDrag() { isDrag = false; videoPlayer .time = slider_kuajin.value* videoPlayer.clip.length; } // Update is called once per frame void Update() { if (videoPlayer.clip !=null) { ChangeVideoPlayTime(); XiuGaiJinDuTiao(); ShiPin_Length(); } } }

 

 2.UI摆放结构

 

 

 

 脚本挂在父物体上

 

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; public class Video_Player : MonoBehaviour { public GameObject mv_obj; public VideoClip shipin1; public VideoPlayer videoPlayer; public Button play_button; //播放按钮 public Button pause_button; //暂停按钮 public Button exit_button; //关闭界面 public Text mv_length_text; //显示视频的长度 public Slider slider_kuajin; private bool isDrag; private int hour, minute, second; // 时 分 秒 // Start is called before the first frame update void Start() { //videoPlayer = this.GetComponent(); Debug.Log(shipin1.length); videoPlayer.clip = shipin1; videoPlayer.Play(); play_button.onClick.AddListener(MV_Play); pause_button.onClick.AddListener(MV_Pause); exit_button.onClick.AddListener(delegate { OnorOff_MVjiemian(false); }); } //打开或者关闭视频界面 public void OnorOff_MVjiemian(bool tra) { mv_obj.SetActive(tra); } //视频播放 public void MV_Play() { play_button.gameObject.SetActive(false); pause_button.gameObject.SetActive(true); videoPlayer.Play(); } //视频暂停 public void MV_Pause() { play_button.gameObject.SetActive(true); pause_button.gameObject.SetActive(false); videoPlayer.Pause(); } //显示视频的时间 public void ShiPin_Length() { hour = (int)videoPlayer.time / 3600; minute = ((int)videoPlayer.time - hour * 3600) / 60; second = (int)videoPlayer.time - hour * 3600 - minute * 60; //mv_length_text.text = string.Format("{0:D2}:{1:D2}:{2:D2}", hour, minute, second); } /// 修改视频播放进度 private void ChangeVideoPlayTime() { if (isDrag == true) { videoPlayer.time = slider_kuajin.value * videoPlayer.clip.length; } } //修改进度条 public void XiuGaiJinDuTiao() { if (!isDrag) { slider_kuajin.value = (float)(videoPlayer.time / videoPlayer.clip.length); } } //开始拖拽 public void OnDragdrop() { isDrag = true; } //结束拖拽 public void OnEndDrag() { isDrag = false; videoPlayer.time = slider_kuajin.value * videoPlayer.clip.length; } // Update is called once per frame void Update() { if (videoPlayer.clip != null) { ChangeVideoPlayTime(); XiuGaiJinDuTiao(); //ShiPin_Length(); } } }

 

根据自己需要修改即可,感谢阅读

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3