提供两种形式.
方式1: 业务功能型
- 完整的拍摄,抠图,叠加背景/前景,多机位,网络流输入, 最后图像输出等一整套直播采集图像解决方案API
- 对应的类是:LSOCameraLive;是一个容器类, 内部把系统的Camera封装为一个图层, 把背景图片/视频,前景图片等封装为一个一个的图层, 然后每个图层都可以设置抠绿调节等;最后输出图像流.
- LSOCameraLive类每个API说明见下面;
- 演示代码在:GreenMattingLiveActivity.java(android) / ios是:LSOLiveBroadController.m(IOS)
形式2: 纯净API类型
- 一个类:LSOGreenMatting
- 使用方法是:
//工作在opengles中, 纹理输入+ 宽度+高度输入, 内部抠图后, 以纹理的形式返回.
public int renderOnGPU(Context context, int textureId, int width, int height)
集成说明
- 见我们的A2文档的, 通用集成说明,大致是:android是import LanSongSDK module; ios是把LanSongSDK拖入到您工程里.
常见问答
1. 如何支持多机位.
- 我们提供了多个输入接口, 让你把外面的图像数据实时的输入到SDK里.
- android系统常见的有:MediaPlayer播放器, ijkplayer, usb摄像头, MediaCodec接口等 这些接口都有一个API叫 setSurface, 意思是设置一个图像输入口, 我们SDK提供了一个创建surface的可与之匹配.把我们创建好的surface设置到这些播放控件中, 即可把外面的图像数据引入到我们SDK中.
- 接入后,我们把多机位的控制分为两部分, 播放控制和图像画面控制, 播放控制是在外面完成, SDK因只传递了画面进来, 故需要用您的控件来控制播放流的各种动作,比如暂停/调速,切换等; 对图像画面的显示位置,显示大小,是否抠绿等的调节, 是在SDK内部完成的.
- 现在支持的有MediaPlayer, ijkPlayer, MediaCodec, USB摄像头-uvc格式.
- USB摄像头举例代码如下:
//增加一个图层到容器里,可增加多层,返回这一次的控制对象LSOCamLayer
usbUvcLayer=lsoCamera.addSurfaceLayer(width ,height, true, 0);
if(usbUvcLayer!=null){
//图层对象获取到surface设置到usb播放控件中
uvcCameraHandler.startPreview( usbUvcLayer.getSurface());
//图层设置抠绿功能
usbUvcLayer.setGreenMatting(LSOSegmentType.GREEN_MATTING);
}
// 可增加多层, 并有removeLayer()删除这个图层.
MediaPlayer mediaPlayer=null;
private void addMediaPlayer(){
if(mediaPlayer==null){
mediaPlayer=new MediaPlayer();
try {