1. 摄像机功能

Camera SDK 提供智能摄像机的实时视频播放,设备存储卡录像播放,对当前正在播放的视频截图、录制视频, 与摄像机实时通话等基础能力,并提供视频帧解码后的 YUV 数据,开发者可以对视频数据进行二次处理。

1.1. 视频直播

视频直播需要获取云端服务器信息,接着创建 ICameraP2P 对象,然后进行 P2P 连接后,就可以播放实时视频,截图、录制视频和实时对讲数据传输。

1.1.1. 初始化

ICameraP2P 需要绑定渲染视图,使用者要创建 ICameraP2P 和 TuyaCameraView ,再使用 TuyaCameraView 构造渲染视图,同时也需要注册 OnP2PCameraListener、CreateVideoViewCallback 。

1. 创建 ICameraP2P 对象

接口说明

public static ICameraP2P generateTuyaSmartCamera(int sdkprovider);

参数说明

参数 说明
sdkprovider 设备 P2P 类型,从 DeviceBean 中获取,详见P2P 类型

示例代码

ICameraP2P mCameraP2P = TuyaSmartCameraP2PFactory.generateTuyaSmartCamera(sdkProvider);

2. 为渲染视图容器设置回调

接口说明

public void setCameraViewCallback(CreateVideoViewCallback callback)

参数说明

参数 说明
callback 回调接口

示例代码

TuyaCameraView mVideoView = findViewById(R.id.camera_video_view);
mVideoView.setCameraViewCallback(new TuyaCameraView.CreateVideoViewCallback() {
    @Override
    public void onCreated(Object o) {
        //渲染视图构造完成时回调
    }

    @Override
    public void videoViewClick() {

    }

    @Override
    public void startCameraMove(PTZDirection ptzDirection) {

    }

    @Override
    public void onActionUP() {

    }
});

3. 构造渲染视图

接口说明

public void createVideoView(int provider);

参数说明

参数 说明
provider 设备类型

示例代码

TuyaCameraView mVideoView = findViewById(R.id.camera_video_view);
mVideoView.createVideoView(sdkProvider);

接口说明

获取视频渲染视图

需要注意如果未构造视频渲染视图会返回 null

public Object createdView();

示例代码

TuyaCameraView mVideoView = findViewById(R.id.camera_video_view);
mVideoView.createdView()

4. 为 ICameraP2P 绑定渲染视图

接口说明

void generateCameraView(T view);

示例代码

mCameraP2P.generateCameraView(mVideoView.createdView());

链路

示例代码

// 1. 创建 ICameraP2P
ICameraP2P mCameraP2P = TuyaSmartCameraP2PFactory.generateTuyaSmartCamera(sdkProvider);
// 2. 为渲染视图容器设置回调
TuyaCameraView mVideoView = findViewById(R.id.camera_video_view);
mVideoView.setCameraViewCallback(new TuyaCameraView.CreateVideoViewCallback() {
    @Override
    public void onCreated(Object o) {
        //4. 渲染视图构造完成后,为 ICameraP2P 绑定渲染视图
        mCameraP2P.generateCameraView(mVideoView.createdView());
    }

    @Override
    public void videoViewClick() {

    }

    @Override
    public void startCameraMove(PTZDirection ptzDirection) {

    }

    @Override
    public void onActionUP() {

    }
});
// 3. 构造渲染视图 IMonitorView
mVideoView.createVideoView(sdkProvider);

1.1.2. 获取设备信息

通过调用云端接口,获取设备配置相关信息。

接口说明

void requestCameraInfo(String devId, ICameraConfig callback);

参数说明

参数 说明
devId 设备 id
callback 结果回调

示例代码

TuyaSmartCameraP2P mSmartCameraP2P = new TuyaSmartCameraP2P();
mSmartCameraP2P.requestCameraInfo(devId, new ICameraConfig() {
    @Override
    public void onSuccess(BusinessResponse var1, ConfigCameraBean var2, String var3) {
        //获取信息成功
    }

    @Override
    public void onFailure(BusinessResponse var1, ConfigCameraBean var2, String var3) {
        //获取信息失败
    }
}

1.1.3. 创建设备

需要在获取设备配置信息之后创建设备才能进行 P2P 连接

接口说明

void createDevice(OperationDelegateCallBack callback, ConfigCameraBean bean);

参数说明

参数 说明
callback 结果回调
bean 配置信息,获取设备信息时会返回

示例代码

mCameraP2P.createDevice(new OperationDelegateCallBack() {
    @Override
    public void onSuccess(int sessionId, int requestId, String data) {
        //创建成功
    }

    @Override
    public void onFailure(int sessionId, int requestId, int errCode) {
        //创建失败
    }
}, bean);

1.1.4. P2P 连接

在开始视频播放之前,需要先连接 P2P 通道。P2P 状态需要使用者自己维护,SDK 只负责下发指令和接收摄像机响应结果。

接口说明

开始连接 P2P 通道

void connect(OperationDelegateCallBack callBack);

断开 P2P 通道

void disconnect(OperationDelegateCallBack callBack);

参数说明

参数 说明
callBack 操作结果回调

示例代码

mCameraP2P.connect(new OperationDelegateCallBack() {
    @Override
    public void onSuccess(int sessionId, int requestId, String data) {
        //连接成功
    }

    @Override
    public void onFailure(int sessionId, int requestId, int errCode) {
        //连接失败
    }
});

1.1.5. 实时播放视频

P2P连接成功之后,就能进行实时视频播放了。

接口说明

开始播放实时视频

void startPreview(int clarity, OperationDelegateCallBack callBack);

停止播放实时视频

int stopPreview(OperationDelegateCallBack callBack);

参数说明

参数 说明
clarity 清晰度模式
callBack 操作结果回调

清晰度模式

public interface ICameraP2P<T> {
  /**
   * 高清
   */
  int HD = 4;
  /**
   * 标清
   */
  int STANDEND = 2;
  ...
}

示例代码

mCameraP2P.startPreview(new OperationDelegateCallBack() {
    @Override
    public void onSuccess(int sessionId, int requestId, String data) {
        //开始播放实时视频成功
    }

    @Override
    public void onFailure(int sessionId, int requestId, int errCode) {
        //开始播放实时视频失败
    }
});

注意:startPreview 成功回调之后,onReceiveFrameYUVData 回调会开始接收视频数据,并抛给业务层。

1.1.6. 销毁 ICameraP2P 对象

destroy 销毁对象,不再使用 camera 功能的时候,一定要调用 destroy

示例代码

TuyaSmartCameraP2PFactory.onDestroyTuyaSmartCamera();

1.2. 流程图

results matching ""

    No results matching ""