多媒体视频
Unity提供了Video Player组件来专门处理视频,只需将视频文件直接拖入Hierarchy便可以自动创建。
视频播放器 (Video Player) 组件 - Unity 手册 (unity3d.com)
视频文件
Unity支持的视频文件包括.mp4、.mov、.webm、.wmv。另外,视频文件还支持从一个网址播放。
一些MP4在线视频测试URL
http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
http://vjs.zencdn.net/v/oceans.mp4
https://media.w3.org/2010/05/sintel/trailer.mp4
http://mirror.aarnet.edu.au/pub/TED-talks/911Mothers_2010W-480p.mp4
http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4
http://vfx.mtime.cn/Video/2019/03/21/mp4/190321153853126488.mp4
http://vfx.mtime.cn/Video/2019/03/19/mp4/190319222227698228.mp4
http://vfx.mtime.cn/Video/2019/03/19/mp4/190319212559089721.mp4
http://vfx.mtime.cn/Video/2019/03/18/mp4/190318231014076505.mp4
http://vfx.mtime.cn/Video/2019/03/18/mp4/190318214226685784.mp4
http://vfx.mtime.cn/Video/2019/03/19/mp4/190319104618910544.mp4
http://vfx.mtime.cn/Video/2019/03/19/mp4/190319125415785691.mp4
http://vfx.mtime.cn/Video/2019/03/17/mp4/190317150237409904.mp4
http://vfx.mtime.cn/Video/2019/03/14/mp4/190314223540373995.mp4
http://vfx.mtime.cn/Video/2019/03/14/mp4/190314102306987969.mp4
http://vfx.mtime.cn/Video/2019/03/13/mp4/190313094901111138.mp4
http://vfx.mtime.cn/Video/2019/03/12/mp4/190312143927981075.mp4
http://vfx.mtime.cn/Video/2019/03/12/mp4/190312083533415853.mp4
http://vfx.mtime.cn/Video/2019/03/09/mp4/190309153658147087.mp4
其他格式(MP4, flv, mkv, 3gp) 视频下载
https://www.sample-videos.com/index.php#sample-mp4-video
视频渲染模式
Video Player组件可以设置自己的Render Mode。根据不同的模式,指定Camera、Render Texture或Renderer等
- Camera Far Plane:将视频渲染在摄像机远处,这样前景的对象就会挡住视频;
- Camera Near Plane:将视频渲染在摄像机近处,这样视频就会在最前面(与摄像机组件Far Clip Plane和Near Clip Plane有关)
- Render Texture:将视频渲染在一张Renderer Texture上
- Material Override:将视频渲染在一张Renderer(比如mesh Renderer)绑定的material上,可以单独设置Material Property。当设置为 None 时,使用与 Video Player 组件相同的 GameObject 上的 Renderer。
- API Only:将视频渲染到
VideoPlayer.texture
Scripting API 属性中。您必须使用脚本将纹理分配到其预期目标。
视频自适应
在选用Camera Far Plane、Camera Near Plane、Render Texture这三种渲染模式下,可以设置视频缩放比例
自适应模式 | 效果 |
---|---|
No Scaling | 不缩放视频,视频在游戏界面居中播放 |
Fit Vertically | 缩放视频源以垂直适合游戏界面,如有必要,裁剪左右两侧或在每一侧留下空隙。视频源纵横比被保留。 |
Fit Horizontally | 缩放视频源以水平适合游戏界面,裁剪顶部和底部区域或在需要时在上方和下方留下空隙。视频源纵横比被保留。 |
Fit inside | 缩放源以适合游戏界面,而无需裁剪。根据需要在左右或上下留下空隙。源纵横比被保留。 |
Fit Outside | 缩放源以适合游戏界面,而不会在左右或上下或上下留下空隙,并根据需要进行裁剪。源纵横比被保留。 |
Stretch | 水平或垂直缩放以适合游戏界面。不保留源纵横比。 |
为保证视频完整显示且保持原纵横比,FIt Inside比较好。
跳过视频
一般视频需要渲染在UI摄像机上,使用Camera Far Plane模式,因为UI摄像机和主摄像机不同,所以可以让视频渲染在场景的前面,UI的后面。
新建SkipVideo
脚本
1 | using UnityEngine; |
视频渲染在材质上
在场景中创建一个Plane面板,接着给它绑定一个新材质,最后将视频渲染模式设为Material Override。将Mesh Renderer拖入Renderer中,这个视频就被渲染在Plane面板上了。
将Plane的X设为90,Y设为180
Unity默认是不渲染Plane的背面的。
视频Render Texture
创建Render Texture,将Render Mode改为Render Texture,并将新建的Render Texture放在Target Texture上面。
然后在场景中创建UI——Raw Image,将新建的Render Texture放进来。
播放工程外视频
通过URL,不只能播放网络视频,还能播放工程外部的本地视频。使用file://前缀即可
1 | using UnityEngine; |
自定义视频显示
视频的渲染模式可以选择API Only,不依赖Unity,自动将视频渲染出来,然后拿到视频底层输出的Texture贴图,接着自行将它渲染出来。
例如,有多个视频文件,如果需要融合播放,就可以自己做个Shader,将多个videoPlayer.texture
传进去,最后将它们融合并渲染出来。
视频进度
使用Slider调节视频的进度。
1 | using UnityEngine; |