1. 摄像机功能

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

1.1. 视频直播

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

1.1.1. 初始化

ICameraP2P 需要绑定渲染视图,使用者要创建 ICameraP2PTuyaCameraView ,再使用 TuyaCameraView 构造渲染视图,同时也需要注册 OnP2PCameraListenerCreateVideoViewCallback

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 ""