using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;public class VideoController : MonoBehaviour
{//设置VideoPlayer、RawImage和当前播放视频索引参数private VideoPlayer videoPlayer;private RawImage rawImage;[SerializeField]Image myImage;// private int currentClipIndex;//设置相关文本和按钮参数以及视频列表public Text text_PlayOrPause;public Button button_PlayOrPause;private void Awake(){text_PlayOrPause.text = "暂停";// Image/pic 在 Assets/Resources/目录下myImage.sprite = Resources.Load("zanting", typeof(Sprite)) as Sprite;}void Start(){//获取VideoPlayer和RawImage组件,以及初始化当前视频索引videoPlayer = this.GetComponent<VideoPlayer>();rawImage = this.GetComponent<RawImage>();// currentClipIndex = 0;//设置相关按钮监听事件button_PlayOrPause.onClick.AddListener(OnPlayOrPauseVideo);}void Update(){//没有视频则返回,不播放if (videoPlayer.texture == null){return;}//渲染视频到UGUI上rawImage.texture = videoPlayer.texture;}private void OnPlayOrPauseVideo(){//判断视频播放情况,播放则暂停,暂停就播放,并更新相关文本if (videoPlayer.isPlaying == true){videoPlayer.Pause();text_PlayOrPause.text = "播放"; // Image/pic 在 Assets/Resources/目录下myImage.sprite = Resources.Load("bofang", typeof(Sprite)) as Sprite;}else{videoPlayer.Play();text_PlayOrPause.text = "暂停";// Image/pic 在 Assets/Resources/目录下myImage.sprite = Resources.Load("zanting", typeof(Sprite)) as Sprite;}}
}
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;public class ToPlayVideo : MonoBehaviour
{public VideoClip videoClip;         // 视频的文件 参数public Text videoTimeText;          // 视频的时间 Textpublic Text videoNameText;          // 视频的名字 Textpublic Slider videoTimeSlider;      // 视频的时间 Slider//定义参数获取VideoPlayer组件和RawImage组件internal VideoPlayer videoPlayer;private RawImage rawImage;void Start(){//获取场景中对应的组件videoPlayer = this.GetComponent<VideoPlayer>();rawImage = this.GetComponent<RawImage>();videoPlayer.clip = videoClip;videoNameText.text = videoClip.name;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();}void Update(){//如果videoPlayer没有对应的视频texture,则返回if (videoPlayer.texture == null){return;}//把VideoPlayerd的视频渲染到UGUI的RawImagerawImage.texture = videoPlayer.texture;ShowVideoTime();}/// <summary>/// 显示当前视频的时间/// </summary>private void ShowVideoTime(){// 当前的视频播放时间currentHour = (int)videoPlayer.time / 3600;currentMinute = (int)(videoPlayer.time - currentHour * 3600) / 60;currentSecond = (int)(videoPlayer.time - currentHour * 3600 - currentMinute * 60);// 把当前视频播放的时间显示在 Text 上videoTimeText.text = string.Format("{1:D2}:{2:D2} / {4:D2}:{5:D2}",currentHour, currentMinute, currentSecond, clipHour, clipMinute, clipSecond);// 把当前视频播放的时间比例赋值到 Slider 上videoTimeSlider.value = (float)(videoPlayer.time / videoPlayer.clip.length);}/// <summary>/// 当前的 Slider 比例值转换为当前的视频播放时间/// </summary>private void SetVideoTimeValueChange(){videoPlayer.time = videoTimeSlider.value * videoPlayer.clip.length;}// 当前视频的总时间值和当前播放时间值的参数private int currentHour;private int currentMinute;private int currentSecond;private int clipHour;private int clipMinute;private int clipSecond;}

目录结构:

RawImage挂载组件:

以下是上图组件具体内容:

滑动条Slider的具体:

脚本中拖入RawImage

using UnityEngine;using UnityEngine.EventSystems;
/// <summary>
/// 继承 拖拽接口
/// </summary>
public class SliderEvent : MonoBehaviour, IDragHandler
{[SerializeField]private ToPlayVideo toPlayVideo;        // 视频播放的脚本/// <summary>/// 给 Slider 添加 拖拽事件/// </summary>/// <param name="eventData"></param>public void OnDrag(PointerEventData eventData){SetVideoTimeValueChange();}/// <summary>/// 当前的 Slider 比例值转换为当前的视频播放时间/// </summary>private void SetVideoTimeValueChange(){toPlayVideo.videoPlayer.time = toPlayVideo.videoTimeSlider.value * toPlayVideo.videoPlayer.clip.length;}}

Button按钮控制暂停/播放:

这个我用的是动态加载的img,首先播放的时候是出来“暂停”的模样,当按下后动态加载“播放”样子的img

资源放在

一步步按着来,最终就成功啦。

效果图:

Unity使用RawImage播放视频带有播放暂停功能滑动条可控制快进后退相关推荐

  1. 【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )

    FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 ...

  2. html视频边缓冲边播放,如何一边播放视频一边播放静态文字 视频加静态说明文字...

    一个激灵想到了前几个月发生的"川大玻璃杯事件",不知道大家听说过没有.一个玻璃杯引发的年度大戏,一个四川大学的妹子为了撩帅哥,故意打碎对方的玻璃杯,事后发现玻璃杯超贵就发帖吐槽,结 ...

  3. 手机客户端(EZview/智U)播放视频时会自动暂停,如何解决

    EZView在用户连续播放视频10分钟且没有任何操作的情况下会自动暂停, 用户可在 主菜单>本地配置中 将自动暂停播放功能关闭即可.

  4. Unity3d Windows播放视频(视频流)功能组/插件支持对比

    前言 目前作者常开发的系统就是智能工厂.园区,数字孪生系统等,经常用到播放各种视频的功能,而且甲方经常有部署好的各种监控系统,如果接入到系统就涉及到各种视频流的格式rtsp.rtmp.m3u8等.所以 ...

  5. html5ios播放视频在线播放,ios-iPhone上的HTML5视频自动播放

    这是克服您在网站上进行视频自动播放的所有难题的小技巧: 1)检查视频是否正在播放.2)在诸如单击或触摸身体等事件时触发视频播放. 注意:除非用户与设备进行交互,否则某些浏览器不允许视频自动播放. 因此 ...

  6. 5.cocos2dx中关于draw绘图,声音和音效,预加载,播放与停止Vs暂停和恢复,音量控制

     1 draw绘图 头文件 T19Draw.h #ifndef __T19Draw_H__ #define __T19Draw_H__ #include "cocos2d.h" ...

  7. 某盘视频网页播放视频修改播放速度代码

    某网盘视频网页播放控制速度代码 F12打开开发者模式,点击console,粘上下面的代码按回车 videojs.getPlayers("video-player").html5pl ...

  8. 计算机无法播放视频,电脑播放器无法播放视频怎么处理

    没有安装,或者安装的FLASH播放器版本低于8.0 症状: 1.播放器位置空白. 2.播放器左上角显示方块. 3.能播放Youku片头,但不能播放视频. 4.能够播放视频,但播放器按钮显示不正常. 5 ...

  9. 解决Qt播放视频无法播放的问题

    qt在播放视频时出错: DirectShowPlayerService::doRender: Unresolved error code 80040266 解决:下载解码器 我之前在win7用的解码器 ...

最新文章

  1. 通用窗口类 Inventory Pro 2.1.2 Demo1(下)
  2. C语言求:1到100之间的所有素数之和
  3. coding note-源码搜索
  4. leetcode 268. 丢失的数字(Java版)
  5. 快速排序算法QuickSort(二)
  6. 【php】用filter_var实现的简单参数验证
  7. 在RHEL5下实现RAID5磁盘阵列
  8. linux系统kvm安装,快速搭建KVM及安装linux系统
  9. 海量数据挖掘MMDS week7: 局部敏感哈希LSH(进阶)
  10. Android studio : 模拟器 真机 运行失败(mac电脑)
  11. Dwg,png,jpg,Dxf格式转换
  12. Win10系统安装打印机提示未安装打印机驱动程序,试图将驱动程序添加到存储区
  13. 基于LED或红外激光的可见光音频系统
  14. python文本自动伪原创_给大家分享的6款在线Ai伪原创工具 让你写作更简单
  15. STM32 HAL库学习笔记3-HAL库外设驱动框架概述
  16. 基于pytorch卷积人脸表情识别--毕业设计
  17. idea 中 maven Process terminated
  18. 蒟蒻的笔记本二、tarjan
  19. 【报告分享】2021年快手母婴行业数据价值报告-磁力引擎(附下载)
  20. 新浪微博和腾讯微博图标

热门文章

  1. 2020淘宝天猫双十一养猫攻略
  2. 同包同名的类的时候,使用哪个,哪个优先
  3. 1644 二叉树的最近公共祖先 II
  4. linux获取最高权限并取消_Linux获取最终权限说明
  5. CentOS 8版本下载及版本说明
  6. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(二十六)通用型角色头像面板...
  7. 解决冲突(避免冲突)
  8. 360举办开放日 周鸿祎回应“黑匣子之谜”
  9. 最好用的Dock栏增强工具ActiveDock
  10. 中国Cisco理事会推荐CCNA实验手册