美文网首页
23、VideoPlayer

23、VideoPlayer

作者: GameObjectLgy | 来源:发表于2020-12-31 10:02 被阅读0次

unity播放视频有两种旧的方式和新方式VideoPlayer组件

使用方法

先在 Hierarchy 创建GameObject ,在GameObject 上添加VideoPlayer 组件

image

Source 中两个选项

1. VideoClip 我在网上看到的是要放入下载好的视频,目前我没用这种方式,待测试...

2.URL 可以放入网上下载好的视频链接,同样可以理解为是下载好的视频的存储路径

这边测试的是Mp4 格式的视频文件

播放的方式:

No1. 通过摄像机来达到直接播放

RenderMode 模式选择 CameraFarPlane ,将摄像机拖入到Camera 中,点击运行即可播放视频

image

No2. 创建一个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("视频结束");
}
}
}

相关文章

网友评论

      本文标题:23、VideoPlayer

      本文链接:https://www.haomeiwen.com/subject/kckgsktx.html