unity 录屏插件总结 以及 AVProMovieCapture 5.0.0 安卓录制失败问题

项目中的需求,安卓端和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();//结束录制

猜你喜欢

转载自blog.csdn.net/z_19990815/article/details/126116580