Unity 提供了Video Player组件来专门处理视频。

//--视频文件

Unity支持的视频文件包括 .mp4 .mov .webm 和 .wmv 。另外视频文件还支持从一个网址播放。

unity导入视频出错 unity3d导入视频_unity导入视频出错

Video Clip表示播放工程内的一个视频文件,URL表示播放工程外的视频或者从网上边下载边播放。

//--视频渲染模式

unity导入视频出错 unity3d导入视频_ide_02

 前两个选项需要指定摄像机3D或者UI摄像机。

Camera Far Plane:表示视频将渲染在摄像机最远处(3D相机的话场景的3D对象会挡住视频,UI相机的话UI元素会挡住视频)。

Camera Near Plane:表示视频渲染在摄像机最近处(3D相机的话视频挡住3D对象,UI相机的话视频挡住UI元素)。

Render Texture:表示可以将视频渲染在一张纹理上。

Material Override:表示将视频覆盖渲染在一张指定材质上。

API Only:表示需要使用脚本来动态设置视频渲染的目标。

//--视频自适应

unity导入视频出错 unity3d导入视频_ide_03

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();
    }
}