更新时间:2023-05-22 06:38:32下载pdf
TYCloudVideoPlayer
是视频消息播放器的容器的实体对象,提供了 报警消息 涉及的视频相关的 API。
接口说明
创建视频消息播放器容器的实体对象。
ITYCloudVideo createVideoMessagePlayer();
示例代码
private ITYCloudVideo mCloudVideo;
ITuyaIPCMsg message = TuyaIPCSdk.getMessage();
if (message != null) {
mCloudVideo = message.createVideoMessagePlayer();
}
接口说明
注册监听器,只有注册之后才能获取到视频播放的回调数据。
void registerP2PCameraListener(AbsP2pCameraListener listener);
参数说明
参数 | 说明 |
---|---|
AbsP2pCameraListener | 视频播放回调数据 |
示例代码
private ITYCloudVideo mCloudVideo;
mCloudVideo.registerP2PCameraListener(new AbsP2pCameraListener() {
@Override
public void onSessionStatusChanged(Object camera, int sessionId, int sessionStatus) {
super.onSessionStatusChanged(camera, sessionId, sessionStatus);
}
});
接口说明
注入播放器 View,用来渲染视频画面。
void generateCloudCameraView(IRegistorIOTCListener view);
参数说明
参数 | 说明 |
---|---|
IRegistorIOTCListener | 播放器组件 |
接口说明
创建云视频播放设备。
void createCloudDevice(String cachePath, String devId, OperationDelegateCallBack callBack);
参数说明
参数 | 说明 |
---|---|
cachePath | 缓存文件地址 |
devId | 设备 ID |
OperationDelegateCallBack | 操作回调 |
示例代码
cloudVideo.createVideoMessagePlayer().createCloudDevice(cachePath, devId, new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_MEDIA_DEVICE, ICameraVideoPlayModel.OPERATE_SUCCESS, data));
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_MEDIA_DEVICE, ICameraVideoPlayModel.OPERATE_FAIL, errCode));
}
});
接口说明
播放报警消息中的视频。
void playVideo(String videoUrl, int startTime, String encryptKey, OperationCallBack callback, OperationCallBack playFinishedCallBack);
参数说明
参数 | 说明 |
---|---|
videoUrl | 视频播放地址 |
startTime | 开始播放时间,初始值为 0 |
encryptKey | 播放视频的秘钥 |
callback | 操作回调 |
playFinishedCallBack | 结束播放的操作回调 |
示例代码
public void playVideo(String videoUrl, int startTime, String encryptKey) {
if (cloudVideo == null) {
return;
}
cloudVideo.playVideo(videoUrl, startTime, encryptKey, new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
playState = CloudPlayState.STATE_PLAYING;
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_PLAY, ICameraVideoPlayModel.OPERATE_SUCCESS));
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
playState = CloudPlayState.STATE_ERROR;
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_PLAY, ICameraVideoPlayModel.OPERATE_FAIL));
}
}, new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
playState = CloudPlayState.STATE_COMPLETED;
cloudVideo.audioClose();
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_STOP, ICameraVideoPlayModel.OPERATE_SUCCESS));
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
cloudVideo.audioClose();
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_STOP, ICameraVideoPlayModel.OPERATE_FAIL));
}
});
}
接口说明
void pauseVideo(OperationCallBack callback);
参数说明
参数 | 说明 |
---|---|
OperationDelegateCallBack | 操作回调 |
示例代码
public void pauseVideo() {
if (cloudVideo == null) {
return;
}
cloudVideo.pauseVideo(new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
playState = CloudPlayState.STATE_PAUSED;
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_PAUSE, ICameraVideoPlayModel.OPERATE_SUCCESS));
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_PAUSE, ICameraVideoPlayModel.OPERATE_FAIL));
}
});
}
接口说明
void resumeVideo(OperationCallBack callback);
参数说明
参数 | 说明 |
---|---|
OperationDelegateCallBack | 操作回调 |
示例代码
public void resumeVideo() {
if (cloudVideo == null) {
return;
}
cloudVideo.resumeVideo(new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
playState = CloudPlayState.STATE_PLAYING;
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_RESUME, ICameraVideoPlayModel.OPERATE_SUCCESS));
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_RESUME, ICameraVideoPlayModel.OPERATE_FAIL));
}
});
}
接口说明
void stopVideo(OperationCallBack callback);
参数说明
参数 | 说明 |
---|---|
OperationDelegateCallBack | 操作回调 |
示例代码
public void stopVideo() {
if (cloudVideo == null) {
return ;
}
cloudVideo.stopVideo(new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
playState = CloudPlayState.STATE_STOP;
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_STOP, ICameraVideoPlayModel.OPERATE_SUCCESS));
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_STOP, ICameraVideoPlayModel.OPERATE_FAIL));
}
});
}
接口说明
设置视频播放的声音开关。
void setCloudVideoMute(int mute, OperationDelegateCallBack callBack);
参数说明
参数 | 说明 |
---|---|
mute | 拾音器模式
|
OperationDelegateCallBack | 操作回调 |
示例代码
private void setCloudVideoMute(int voiceMode) {
if (cloudVideo == null) {
return ;
}
cloudVideo.setCloudVideoMute(voiceMode, new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_MUTE, IPanelModel.ARG1_OPERATE_SUCCESS, data));
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_MUTE, IPanelModel.ARG1_OPERATE_FAIL));
}
});
}
接口说明
当云视频不再使用的时候,销毁云视频播放设备。
void deinitCloudVideo();
接口说明
public void onReceiveFrameYUVData(int sessionId, ByteBuffer y, ByteBuffer u, ByteBuffer v, int width, int height, int nFrameRate, int nIsKeyFrame, long timestamp, long nProgress, long nDuration, Object camera);
参数说明
参数 | 说明 |
---|---|
sessionId | 会话 ID |
Y | 视频 Y 数据 |
u | 视频 U 数据 |
v | 视频 V 数据 |
width | 视频画面的宽 |
height | 视频画面的高 |
nFrameRate | 帧率 |
nIsKeyFrame | 是否 I 帧 |
timestamp | 时间戳 |
nProgress | 播放进度,即消息中心视频播放的进度 |
nDuration | 播放时长,即消息中心视频播放的时长 |
camera | 视频采集的摄像头设备 |
视频播放只要设置 nProgress
和 nDuration
的取值即可。
示例代码
public void onReceiveFrameYUVData(int sessionId, ByteBuffer y, ByteBuffer u, ByteBuffer v, int width, int height, int nFrameRate, int nIsKeyFrame, long timestamp, long nProgress, long nDuration, Object camera) {
Map map = new HashMap<String, Long>(2);
map.put("progress", nProgress);
map.put("duration", nDuration);
mHandler.sendMessage(MessageUtil.getMessage(ICameraVideoPlayModel.MSG_CLOUD_VIDEO_INFO, ICameraVideoPlayModel.OPERATE_SUCCESS, map));
}
报警消息 和 存储卡视频回放 没有直接联系,但存在视频录制和消息触发的时间交叉点。
报警消息和存储卡视频回放唯一的关联是在 存储卡事件录制模式 的情况下,报警消息和存储卡视频录制的触发原因和时间点是一样的。
侦测报警的开关和存储卡录制的开关没有关联。即使在存储卡事件录制模式下,报警消息和存储卡中的视频也不是一一对应的。
存在报警消息发生的时间点有视频录像的情况,IPC SDK 没有提供这种关联查找的接口。您可以根据报警消息的触发时间,在当天的存储卡录像视频片段中查找是否有对应的视频录像来建立关联。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈