Unity 提供了Video Player组件来专门处理视频。
//--视频文件
Unity支持的视频文件包括 .mp4 .mov .webm 和 .wmv 。另外视频文件还支持从一个网址播放。
Video Clip表示播放工程内的一个视频文件,URL表示播放工程外的视频或者从网上边下载边播放。
//--视频渲染模式
前两个选项需要指定摄像机3D或者UI摄像机。
Camera Far Plane:表示视频将渲染在摄像机最远处(3D相机的话场景的3D对象会挡住视频,UI相机的话UI元素会挡住视频)。
Camera Near Plane:表示视频渲染在摄像机最近处(3D相机的话视频挡住3D对象,UI相机的话视频挡住UI元素)。
Render Texture:表示可以将视频渲染在一张纹理上。
Material Override:表示将视频覆盖渲染在一张指定材质上。
API Only:表示需要使用脚本来动态设置视频渲染的目标。
//--视频自适应
Stretch:表示视频自适应,可能会被拉伸变形。
Fit Vertically:表示锁定纵向,横向会无法自适应。
Fit Horizintally:表示锁定横向,纵向会无法自适应。
Fit Inside:表示整体锁定在最小区域。
Fit Outside:表示整体锁定在最大区域。
No Scaling:表示视频为原始大小,不会被拉伸。
选择Stretch这样无论如何修改屏幕分辨率,视频都会完整显示在频幕中。
//--UI盖在视频之上
一般在游戏中会有一个按钮来跳过视频。
所以需要Video Player中指定渲染在UI摄像机上,渲染模式中选择Camera Far Plane模式。这样视频会显示在UI元素和3D对象之间了,UI元素会盖在视频上了。
然后按钮绑定videoPlayer.Stop()方法来结束视频的播放。
//--视频渲染在材质上Material Override
在场景中创建一个Plane面板,接着给他绑定一个新的材质,最后将Plane拖入Render中,视频就被渲染在这个Plane上了。
//--视频Render Texture
先创建一个Render Texture 文件,接着将它绑定在Target Texture上即可。然后在场景中创建UI的Raw Image组件,并关联上Render Texture 文件,这样视频就可以显示在UI上了。
//--播放工程外视频URL
通过URL播放网络视频,也可以播放工程外的本地视频。
播放本地视频中URL以 file:// 开头。网络视频则以 http:// 开头。
//--自定义视频显示API Only
不依赖Unity ,自动将视频渲染出来,然后拿到视频底层输出的Texture贴图,接着自行将它渲染出来。
例如,有多个视频文件,需要融合播放,就可以自己做一个Shader将多个videoPlayer.texture传进去,融合并渲染出来。
//--视频进度
可以设置一个Slider 来调节视频的进度。
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class VideoPlayerSliderMyTest : MonoBehaviour
{
public VideoPlayer videoPlayer;
public Slider slider;
private void Start()
{
slider.minValue = 0;
slider.maxValue = (float)videoPlayer.clip.length;
slider.onValueChanged.AddListener(delegate (float value) { videoPlayer.time = value; });
videoPlayer.Play();
}
}