使用视频播放器组件(Video Player)可将视频文件附加到游戏对象,然后在运行时在游戏对象的纹理上播放。首先,我们需要了解视频文件。视频文件的典型文件扩展名包括 .mp4、.mov、.webm 和 .wmv。可将许多不同的视频文件格式导入 Unity 中。Unity 将导入的视频文件存储为视频剪辑(VideoClip)资源。为了让 Unity 正确预览视频文件,这些文件必须与Unity 编辑器平台(例如Windows)兼容,还必须与项目发布平台(例如Android)兼容。视频文件更准确的描述为“容器”。这是因为它们不仅可包含视频本身,还可包含其他轨道,包括音频、字幕和其他视频素材。常见的视频编解码格式为 H.264,而常见的音频编解码格式为 AAC。文件扩展名(如 .mp4、.mov、.webm 或 .avi)表示视频文件中的数据是使用某种容器格式排列的。视频文件需要解码还能获取视频内容,解码分为硬件和软件解码。软件解码就是使用代码算法(CPU)来解析视频文件内容,优点是大部分平台都支持,缺点是速度比较慢。硬件解码就是使用硬件GPU提供的API进行编解码,这些编解码器已经被集成到了硬件底层,优点是速度快,缺点就是依赖于硬件平台。幸运的是,目前大部分的PC,手机等等都支持硬件解码。
接下来,我们就来演示如何播放一个mp4的视频文件。我们首先需要创建VideoDemo工程。然后将我们下载的“unity.mp4”视频文件放置到Asset目录下。
我们点击这个文件,然后查看它的检视面板,如下所示:
Unity为了更大程度的让视频文件兼容于特定平台,可以对视频进行转码编辑。我们可以看到上面的Default,PC,WebGL,Android不同平台的转码设置。如果禁用转码,将按原样使用视频文件,这意味着必须手动验证与目标平台的兼容性。但是,选择不转码可以节省时间并且避免了转换过程中的质量损失。这里,我们就不进行转码了。
在检视面板的最下面,可以播放这个视频文件。
接下来,我们创建一个平面Plane游戏对象,然后调整一下角度。
然后,我们给这个平面Plane添加一个Video Player组件。
接下来,将我们的“unity.mp4”文件拖拽到“Video Clip”选项中。
Source选择视频源类型。Video Clip将视频剪辑分配给视频编辑器。URL 就是从 URL(例如 http:// 或 file://)分配视频。Unity 在运行时从此 URL 读取视频。
Video Clip 就是我们的视频剪辑文件。我们将视频文件拖拽到这里即可。
Play On Awake勾选 Play On Awake 复选框可在场景启动时播放视频。如果希望在运行时的另一个点触发视频播放,请取消勾选此复选框。此情况下可使用 Play() 命令通过脚本触发视频播放。默认是勾选此项的,也就是说项目运行后就会自动播放视频。
Wait For First Frame如果勾选 Wait For First Frame 复选框,Unity 将在游戏开始前等待源视频的第一帧准备好显示。如果取消勾选此复选框,可能会丢弃前几帧以使视频时间与游戏的其余部分保持同步。默认是勾选此项的,也就是视频加载第一帧后才播放视频。
Loop 是否循环播放视频,默认没有勾选。
Skip On Drop是否允许 VideoPlayer 跳帧以追上当前时间,默认不勾选。
Playback Speed 视频播放倍速,默认为1(正常播放)。
Render Mode 渲染模式。Material Override通过游戏对象渲染器的材质将视频渲染到游戏对象的选定纹理属性中。也就是说,视频要在平面Plane的材质纹理上播放。
Renderer 视频播放器组件用于渲染图像的渲染器。这里就是我们的平面Plane的Mesh Renderer控件。也就是说,视频要通过平面Plance的Mesh Renderer控件渲染出来。
Material Property 材质属性,_MainTex代表为主纹理,用来显示视频内容。
Audio Output Mode 音频输出模式,Direct代表音频样本绕过 Unity 的音频处理,直接发送到音频输出硬件。Audio Source 音频样本发送到选定音频源,允许应用 Unity 的音频处理。
Track 0[2 ch] 关联的音频轨道将用于播放。复选框左侧的文本提供有关音频轨道的信息,具体而言就是音频轨道编号、语言和通道数。Track 0 表示第一个音频轨道, (1 ch)表示单声道,(2 ch)表示双声道。
Mute将关联的音频轨道静音。
Volume关联音频轨道的音量。
接下来,我们就可以运行整个工程,查看视频播放效果。
另一种播放视频的方法。创建一个“渲染器纹理”,再创建一个UI->Raw Image,然后为这个UI添加一个video Player组件。并设置该组件的渲染模式为“渲染器纹理”;同时将刚刚创建的渲染器纹理添加到UI组件的纹理选项,还添加到video player组件中的“目标纹理”上面。最后将视频放入Video Player组件的视频剪辑选项中。运行就可以播放了。这个过程大致可以理解为,视频播放内容输出到渲染器纹理,然后渲染器纹理通过Raw Image渲染显示出来。渲染器纹理起到一个视频数据传递的过程。这个过程我们就不演示了。
本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id