unity播放视频有两种旧的方式和新方式VideoPlayer组件
使用方法
先在 Hierarchy 创建GameObject ,在GameObject 上添加VideoPlayer 组件
imageSource 中两个选项
1. VideoClip 我在网上看到的是要放入下载好的视频,目前我没用这种方式,待测试...
2.URL 可以放入网上下载好的视频链接,同样可以理解为是下载好的视频的存储路径
这边测试的是Mp4 格式的视频文件
播放的方式:
No1. 通过摄像机来达到直接播放
RenderMode 模式选择 CameraFarPlane ,将摄像机拖入到Camera 中,点击运行即可播放视频
imageNo2. 创建一个RawImage ,像以前看电影一样,给一个影布...
这里需要把RenderMode 渲染模式改为 Rendertexture ,Canvas画布下创建 RawImage , 在Project 视图下创建 RenderTexture,将RenderTexture 拖入RawImage 的Texture中
image image即可... 播放的实际效果自由选择...
判断结束的三种条件
VideoPlayer是否播放结束
方法一:通过视频总帧数(frameCount)和当前播放的帧数(frame)来比较,判断是否结束 。还可以通过这种方法制作进度条
方法二:通过loopPointReached事件来判断。
方法三:通过time来判断。(不建议使用)首先打开视频,看视频一共有多少秒,然后当前秒数与总时间比较进行判断。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;
public class VideoControl : MonoBehaviour {
private VideoPlayer video;
private float videoFrame;
void Awake() {
video = GetComponent<VideoPlayer>();
}
void OnEnable()
{
video.loopPointReached += EndVideoTwo;
}
//方法一
void VideoEnd()
{
//video.frame代表的当前帧数;
//video.frameCount代表视频总帧数;
videoFrame = video.frame;
if (videoFrame >= video.frameCount)
{
//TODO视频播放完毕后的逻辑
}
}
//方法二
void EndVideoTwo(VideoPlayer video)
{
//在视频结束时会调用这个函数
Debug.Log("视频播放结束");
}
//方法三,111是视频时间
void EndVideoThree()
{
if (video.time > 111)
{
Debug.Log("视频结束");
}
}
}
网友评论