蓝松SDK技术文档289
发表时间:2022-11-18 15:09 蓝松SDK技术文档 • 此文档由开发人员持续更新,建议您收藏此链接。 • (建议您放到浏览器的书签栏,以方便阅览) • SDK最新版本:蓝松SDK- 5.0.0 产品说明
系统和素材格式支持
系统: 1. Android:android6.0+ , Opengles2.0, OpenCL。 2. iOS: iOS9.0+,(AI抠图建议ios13+) 3. windows: window7+ 素材格式: 1. 图片: jpg, jpeg, png, heic,webp。 2. 视频: mp4,mov, 分辨率支持 720P,1080P,4K。 3. 动画: GIF,蓝松SDK定义的mv视频, SVGA 4. 声音: mp3,m4a,wav,有声音的mp4文件; 语言支持: 1. android : java, C++ 2. ios : object-c; 3. windows:C++,(C#可调用C++ 接口,提供调用demo) 4. 其他1: Flutter:可配置调用android的java或ios的 object-c 5. 其他2:uni-app:可配置调用android的java 或ios的object-c 规格说明: iOS 1. 最大编辑时长:30分钟 2. 最大图片数量:300张。 3. 最大视频时长:30分钟。 4. 如超过,则会提示无法加载。 Android 1. TODO 集成和授权
蓝松SDK的API设计规律:1+1
Android集成 1. 导入过程: 在你的项目中点击 File/import module 弹出对话框, 选中LanSongSDK和LanSongAISDK文件夹,点击导入, 然后在你需要调用的module里, 打开build.gradle, 增加 implementation project(':LanSongSDK') implementation project(':LanSongAISDK') 2. 初始化: 把授权文件放到 app的assets文件夹下,在继承Application类的onCreate方法中,调用一下方法:
3. 其他代码的集成:
4. 代码混淆:
iOS集成 1. 把<<LanSongSDK>>和 <<LanSongAISDK>>文件夹拖进您的Xcode中, 并检查Build Phases的Link和Copy中是否有对应的文件. 2. 增加各种系统头文件
3. 初始化: ○ 把授权文件拖到您项目中,并确保在bundl phases中。 ○ 把一下代码复制到AppDelegate.m中的didFinishLaunchingWithOptions方法中.
Windows集成 1. SDK是一个《LanSongSDK》文件夹,里面有多个文件,其中有dll和模型文件。 2. dll文件采用动态加载库的形式执行,故在您的项目中没有引用和配置,只需要把dll文件和模型文件放到执行文件夹下,并在代码里设置好路径即可。 3. 参考我们demo中的加载dll的形式,把3个方法的指针函数加载进来
演示工程代码说明
Android:
iOS :
API 接口文档说明
绿幕抠图-android
绿幕抠图-iOS
AI人像抠图-Android
AI 人像抠图- iOS
AI人像抠图- widows
绿幕抠图- 图层版 • 因我们android和ios的接口代码都是公开的,可以在您集成好我们SDK后,在SDK的文件中即可看到每个类每个接口的说明。 • android:类名:LSOCameraLive.java;位置:在LanSongSDK文件夹的main/java目录下。 • ios:类名:LSOCameraLive.h;位置在:LanSongEditorFrameWork/LSOCameraLive.h 下。 • 大致说明:LSOCameraLive是一个相机预览容器,我们默认是封装了系统的相机Camera,如你不需要系统相机,则可以设置为隐藏;可输入各种图层,每个图层可设置位置、大小、旋转、抠绿,滤镜,图层之间可上下叠加,显示,隐藏,替换,删除等操作。 AI人像抠图- 录制版 • 因我们android和ios的接口代码都是公开的,可以在您集成好我们SDK后,在SDK的文件即可看到每个类中每个接口的说明 • android:类名:LSOCamera.java 位置:在LanSongSDK文件夹的main/java目录下。 • Ios: 类名: LSOCamera.h 位置在:LanSongEditorFrameWork/LSOCamera.h 下。 • 大致说明:是一个容器,可输入各种图层,每个图层可设置位置、大小、旋转、滤镜,图层之间可上下叠加,显示,隐藏,替换,删除,分段录制,回删,合成等操作。 视频编辑 • 因我们android和ios的接口代码都是公开的,可以在您集成好我们SDK后,在SDK的文件即可看到每个类中每个接口的说明 • android:类名:LSOEditPlayer. Java 位置:在LanSongSDK文件夹的main/java目录下。 • ios:类名: VisionSDKEditPlayer.h 位置在:LanSongEditorFrameWork/VisionSDKEditPlayer.h 下。 • 大致说明:名字是一个编辑播放器,播放的是一个容器里的图层,可以增加一个或多个,多个图层之间可拼接,可叠加,可调节上下位置,每个图层可设置不同的调色,滤镜,动画,遮罩,特效文字,有时间轴,时间轴可拖动,缩放,裁剪;支持画布,比例,贴纸,文字,声音,水印,马赛克,涂鸦等功能。 自由编辑 • (待续) 图层方法说明 • 因我们SDK里不同的产品的图层名字不同,大致为XXXLayer, • 如视频编辑则是LSOLayer,摄像头相关的是LSOCamLayer,积木剪辑是LSOMindLayer,AE模板是LSOAexLayer • 但他们的功能,方法名字,用法,大致相同,只是因使用场景不同,具有的方法属性略有不同。 • 一下是视频编辑的图层LSOLayer类的说明,其他图层xxxLayer类中的方法名和用法 大致相同,不再一一列出。 • 每个方法的说明,在此方法的下一行;(文字描述的是上一行的方法作用)
其他说明
AI人像抠图推理策略 • 因AI 抠图是智能识别推理的过程,运行在不同的设备上耗时情况不同,我们做了如下策略: • 当前SDK内部已包含多个分辨率的模型,以方便不同的平台,不同性能差异很大的设备可以流畅运行。 • 以流畅度为先。 • 如果检测到设备性能差,会使用抠图精度低但速度快的模型,以尽可能的让画面流畅,具体如下: • Android : ○ Android10+(包含10)且非NPU手机,第一次开启AI抠图时,先试运行一下,测试当前手机性能如何, 然后使用相关的模型, 以确保流畅运行.(试跑有进度和完毕的监听) ○ Android 10以下且非NPU手机,则直接用快的模型。 ○ NPU手机,则直接用好的模型(晓龙870、880不试跑,直接用好的模型)。 ○ 试跑大概在1--3秒左右, 如果检查到执行两三帧速度已经很快或很慢, 就会立即结束, 不然执行大概10次左右得到一个平均耗时,从而采用不同的模型 • iOS: ○ 会根据手机的不同型号用不同的模型, 其中iphone11, 12, 13用最好的, iphone6精度最低。 • Windows ○ 会第一次初始化的时候,会用x86指令集(CPU), OpenCL指令集(GPU),CUDA指令集(显卡),都跑一次,计算得到每个模块的执行时间,然后选择最快的模块去做推理执行(当前大部分的场景是用OpenCL推理) ○ windows在比较完模块后,为了尽可能的让画面流畅,会根据一帧的耗时,去选择对应的抠图模型,如果一帧的耗时时间大于50毫秒,则会降低抠图精度以尽可能的去适配流畅度。 • 其他 ○ 我们把抠图分成10个等级, 1级是最快,但抠图效果差一些,适合性能低的设备; 10级是抠图效果最好,但速度慢,适合性能高的设备; • 抠像的好坏,还和当前环境的光线,摄像头的成像水平有关系,成像质量越好,则抠图的越精准。 • 总结:AI人像抠图,会试跑一次评估设备性能,然后流畅为主,遇到性能差的处理器会主动降低抠像精度,如果性能相近的处理器,则摄像头成像水平高的设备会抠的精准一些。 绿幕抠图--转场动画的制作 1. 用AE或其他软件做出连续逐渐透明的动画,可以是任意效果,最终导出30张连续的PNG图片即可。 2. 分辨率要求是:544x960,时长1秒钟,帧率30帧每秒。 3. 原理是:SDK会检查每张PNG图片的透明度系数,把透明度系数映射到当前图像中: PNG图片中的像素不透明,则图层对应的像素也不透明;PNG像素透明,则图层对应的像素也透明; Android版错误代码
绿幕抠图SDK-调节建议 • 适用版本:4.9.6 • 2022年08月24日 • 此版本抠绿说明: ○ 当前版本的效果是以稳为主,会把绿色周边相似的颜色全部抠掉,抠的会过度一些,比如手动晃动引起的虚影也会被抠掉。 ○ 好处是:抠的全面一些,几乎没有绿色的存在。 ○ 缺点是:一些和绿色很接近的颜色也会抠掉或变色,比如淡淡的黄色(拖影颜色)。 ○ 缺点的矫正:把绿幕抠图的最小阈值调整到80.0即可。(我们演示工程里的黄色保护,即是这个例子) • 抠绿建议 ○ 图像的原始画面质量很重要,图像的原始画面清晰度直接决定了抠像的好坏。比如你用同一个处理器的Oppo手机和别的手机对比,OPPO的抠像效果相对较好一些。(OPPO最近两年的手机普遍成像较好) ○ 聚焦:建议在摄像头调节时,尽可能的把聚焦点放到不被抠的主播或物体上,这样主播或物体就会清晰度高一些,细节展现的多一些,从而抠的好一些。 ○ 分辨率:建议普通上1920x1080,如果是直播机,可以跑4k的,则建议上4k,分辨率越大,呈现的细节越多,再缩放到低分辨率时,会呈现出抠的很精细。 ○ 曝光度:建议尽可能的调大一些相机的曝光度(exposure),从而获取更多的亮度。 ○ 距离:建议距离绿布不低于1.5米左右,并尽量参考灯光厂家的布局参数,(比如光照度等)以尽量避免绿色反射到主播或物体上,抠绿的原理是:遇到绿色就会抠掉,如果距离太近,主播或物体上就会有大量的绿色,从而也会被抠掉。 ○ 打光:建议左侧和右侧,上方都打光。 ○ 衣物:不要穿着绿色服装,基本上暗绿色草绿色之类的衣服都不建议穿,会被抠掉。 • 《抠像强度》说明 ○ 抠的厉害程度;越厉害,则很多相似的颜色就会被抠掉。默认是40;如果灯光偏弱,则调大一些,如果灯光很强,建议调低一些;范围是0--100; ○ 当然,值越大,如果摄像头成像能力不是很好的情况下,会出现边缘闪烁的情况,这时,降低强度会改善一些; • 《抠绿的阈值》说明 ○ 最小阈值范围:0---100;默认是0 表示抠的厉害一些,把绿色和周边的颜色都抠掉,如果您不想被抠掉,则建议调整为80.0, ○ 最大阈值范围:150---210;默认是210,表示和绿色相近的青色也会被抠掉,如果您不想把青色抠掉,则建议调整为170; ○ 【完。后续持续更新...】 |