ShareREC官网: http://rec.mob.com/
Vuforia官网: https://developer.vuforia.com/
截止目前,Vuforia SDK版本为8.1.7,已内置与Unity引擎内。
常常会有在应用内录屏的需求,试用了几个录屏SDK都不太理想,如EveryPlay和Vuforia共用时录制不到AR内声音,也不在维护,NatCorder录制时破音等。ShareREC支持应用内音频和麦克风录制,唯一不是那么尽善尽美的大概就是不能分层级录制,只能录制全屏画面,和必须联网。
1.注册ShareREC,导入SDK
在官网注册好对应的账号,进入服务中心进行个人或企业认证。REC SDK官网上版本偏旧,可联系客服索取最新的版本和问题解答,服务好的不要不要的。了解到近期REC SDK会并入Share SDK中,之前接入的不受影响,可以放心的使用,这里仅以Andorid版本为例。
将SDK导入Unity内,并在游戏对象上挂载ShareREC,设置完成对应的参数选项。填入官网上获取的App key和App Secret,其中MaxFrameSize表示录制出来的视频最大分辨率;VideoQuality表示视频质量,会根据视频分辨率自动调整视频码率;MinDuration是视频最短时长,单位为秒,RecordAudioFromMic表示从麦克风捕获声音输入;SoftwareAudioEncoder和SoftwareVideoEncoder表示强制使用软件音视频编码器对视频进行编码,勾选后兼容性更高;CacheFolder表示视频文件输出目录的路径。除了Appkey和AppSecret外的字段都是可选的。
需要注意的坑分别有Player Settings内的Other Settings的Multithreaded Rendering一定不要勾选,否则调用相关的代码会返回不支持录屏功能和录屏失败。还有就是在勾选了Development Build的情况下,会有功能缺失,具体原因不得而知。
2.调用录屏代码,开始录屏
主要调用StartRecorder和StopRecorder两个函数,并且在对应的回调函数内注册事件,完成业务逻辑。
using cn.sharerec;
using UnityEngine;
using UnityEngine.UI;
public class RECHandle : MonoBehaviour
{
public Button satrtButton;
public Button stopButton;
// Start is called before the first frame update
void Start()
{
satrtButton.interactable = ShareREC.IsAvailable();
stopButton.interactable= ShareREC.IsAvailable();
satrtButton.onClick.AddListener(()=> {
ShareREC.StartRecorder();
});
stopButton.onClick.AddListener(()=> {
ShareREC.StopRecorder();
});
ShareREC.OnRecorderStartedHandler += () => {
satrtButton.gameObject.SetActive(false);
stopButton.gameObject.SetActive(true);
};
ShareREC.OnRecorderStoppedHandler += () => {
satrtButton.gameObject.SetActive(true);
stopButton.gameObject.SetActive(false);
};
}
}
3.去除多余权限请求
在Unity内搜索Androidmanifest,用文本打开直接将下方权限列表内不需要的权限删除,在应用上架的时候,可能需要对敏感权限做出说明。
网友评论