赞
踩
项目中的需求,安卓端和ios端录制视频。我当时找了很多款录屏插件。
一:AVProMovieCapture
Unity AsstsStore中可下载,有官方文档,有技术支持。
支持平台:ios,macos,Windows(2022.7.22发布最新5.0版本 已经支持安卓)Android
功能:屏幕录屏,相机渲染,Texture,全景录制等等
ps:当时项目需求发布的时候是在7月初,并未支持Android。
AVPro Movie Capture☀️(一)一款U3D录屏插件介绍_小星星丨U3D开发支持的博客-CSDN博客
二:Unity Recarder 官方录屏插件
Unity AsstsStore中可下载
ps:仅支持编辑器模式下使用。
Unity官方录屏插件Unity Recorder的简单使用_天富儿的博客-CSDN博客_unityrecorder
三:NatCorder
支持平台:Android,macos,Windows
ps:可以调用手机摄像头录制视频与gif。
Unity录屏功能插件NatCorder使用简记_天富儿的博客-CSDN博客_natcorder
四:Corss Platform Replay Kit
Unity AsstsStore中可下载
支持平台:全平台支持录制视频保存到本地 不支持pc端
Unity3d 录屏功能教程指南 | Cross Platform Replay Kit_uPlugin学院的博客-CSDN博客_unity录屏功能
五:FFmpeg Unity Bind
Unity AsstsStore中可下载
ps:调用底层命令行形式,使用C++来实现。
FFmpeg Unity Bind简单使用_midoz的博客-CSDN博客_ffmpeg unity
六:自己写,手动拿到相机后处理前的图像,然后一组图像转码为mp4
https://copyfuture.com/blogs-details/20210801093926819a
项目中使用:
因为项目中需求可以不支持pc,但必须支持Android与ios,所以优先采用方案四和五。
在测试四的时候,打包出来可以使用,集成功能到项目中,打包出来测试。但是出现很多安卓打包的问题。最终因为安卓依赖库冲突,并且无法修改源码放弃使用。项目中使用最新的安卓x,而插件使用安卓v4,比较老。
打包遇到的问题有:
1.谷歌网络访问失败,需要翻墙,可采用本地构建。 已解决
https://blog.csdn.net/grace_yi/article/details/117111938
2.接受sdk的许可证
License for package Android SDK Build-Tools 28.0.3 not accepted._振华OPPO的博客-CSDN博客_android sdk28.0.3
3.安卓的库问题
https://blog.csdn.net/csdn_aiyang/article/details/80859771 Android Support v4\v7\v13和AndroidX的区别及应用场景
https://www.cnblogs.com/alps/p/11206482.html unity当两个以上Android插件冲突,怎么配置manifest
测试方案五的时候,出现手机端拿不到GPU渲染数据而放弃使用。
在我寻求其他方案的时候,AVProMovieCapture 最新发布,支持安卓!!!
所以采用这个插件来测试。
遇到的问题:
编辑器模式下使用一直是正常的,并且非常好用,有文档,可以支持视频帧率,分辨率,录制时长,调用简单等诸多优势,但是打包测试的时候发现,保存到本地的视频一直都是0kb,并且视频打开失败。
看源码,找问题,困扰了很久,多次测试,最终测试查看log方式,解决了问题。
解决步骤:电脑安装adb环境,连接usb,输出log,确认问题是由于插件不支持VuILan导致。解决如下:关闭自动API,并且使OpenGLES3位于上层。
如何安装adb:adb下载安装及使用_Dongs丶的博客-CSDN博客_adb安装包
最终录制成功,效果如下:path:Android/data/files/Capture/xxx.mp4
用法:
挂上这个组件,然后脚本中控制开始和关闭,按照需求更改分辨率等等。
引用:using RenderHeads.Media.AVProMovieCapture;
public CaptureBase _movieCapture;//这个脚本是控制录屏的数据
_movieCapture.OutputFolder = CaptureBase.OutputPath.RelativeToPeristentData; //视频保存路径(可自定义)
_movieCapture.StartCapture();//开始录制
_movieCapture.StopCapture();//结束录制
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。