unity 手机端和编辑器下播放带有透明通道的视频详解

unity 手机端和编辑器下播放带有透明通道的视频详解

在项目开发中,可能会涉及到视频的播放,普通的视频播放如果大家不会的请自行百度,今天主要讲解带有透明通道的视频的播放问题,尤其是在手机端的处理,下面主要讲解两种方式,一种是通过unity提供的VideoPlayer 实现,一种是通过插件AVpro实现。

一、通过VideoPlayer实现视频的播放:

单一视频不需要动态更换视频:
新建一个Plane,放置在场景中的合适位置处
为Plane添加VideoPlayer组件
在这里插入图片描述
创建一个新的材质球,使其支持透明通道
在这里插入图片描述
视频格式必须按照下图进行设置,否则在手机上会有问题:
在这里插入图片描述
其中最主要的就是keep alpha的勾选和codec格式设置为VP8
然后将视频拖拽到videoPlayer组件就可以了
多个视频需要代码动态切换播放
我的第一想法是通过url加载,方便快捷,可是经测试发现,在编辑器上没有任何问题,但是导入到手机运行,就会发现alpha通道不见了,背景保留的plane的颜色,最后在unity论坛中找到了解释,说是这是目前unity 版本的一个bug,可能后续版本会优化,所以我就采用了通过resource文件夹加载视频文件进行播放的方式。
将视频放到Resources中,然后通过代码的方式进行加载,赋值为videoPlayer组件:
//初始化视频组件
void InitVideo()
{
if (videoPlayer == null)
{
videoPlayer = gameObject.GetComponent();
}
StartCoroutine(LoadVideo());
}

//根据名字加载所需的视频
IEnumerator LoadVideo()
{
    ResourceRequest resource = Resources.LoadAsync(videoName, typeof(VideoClip));
    while (!resource.isDone)
    {
        yield return 0;
    }
    videoPlayer.source = VideoSource.VideoClip;
    videoPlayer.clip = resource.asset as VideoClip;
    videoPlayer.isLooping = true;
    videoPlayer.Play();
}

然后直接运行就可以了。效果如下:

在这里插入图片描述

二、通过插件AvPro进行实现

1.通过demo发现,这里就需要与他们匹配的视频格式进行处理,下面先大致讲一下视频的制作流程:

保证视频底色为纯色 尽量不要与视频中的有同样的颜色 这里我们以绿色背景为例测试:
将视频导入到AE中 记住视频的分辨率,如下图:

在这里插入图片描述

创建一个新的合成组1,将其像素大小设置为视频的分辨率大小
将视频放到新建的合成组1中,然后右键选择视频选择效果 颜色键,具体如下图:
在这里插入图片描述
然后点击特效控制台中的键颜色的吸管吸取背景色 ,同时调整参数,是达到自己想要的效果:
在这里插入图片描述
这时候在合成组1中添加一个白色固态层,并将轨道蒙版设置为alpha,就会得到下面的视频效果:
在这里插入图片描述
在这里插入图片描述
这时候新建合成组2,像素大小设置为之前的宽度的两倍,便于将两个视频,对称放置.
然后将合成组1和视频分别放到合成组2中,并对称放置:
在这里插入图片描述
导出合成组2中的视频文件,可以AVI格式视频文件,最后可以通过格式工厂转换成自己想要的mp4格式的文件,这样视频素材就准备好了。
2.将上面准备好的视频放置到StreamingAssets文件夹下,后续方便通过url方式加载视频

创建一个plane

创建一个MediaPlayer组件:
在这里插入图片描述

将MediaPlayer的视频读取方式设置为左右还是上下方式,这里我们设置为左右方式:

在这里插入图片描述

在plane上添加ApplyToMesh组件,同时将创建的MediaPlayer拖拽到相应的位置:

在这里插入图片描述

然后创建一个材质球到plane上:
在这里插入图片描述

下面通过代码方式播放想播放的视频:

 void InitVideo()
{
    if (mediaPlayer == null)
    {
        mediaPlayer = gameObject.GetComponent<MediaPlayer>();
    }
    mediaPlayer.m_VideoPath = Application.streamingAssetsPath + "/" + name;
    mediaPlayer.Play();
}

播放效果为:

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值