更新时间:2024-10-28 09:20:33下载pdf
@ray-js/video-streams-sdk
提供在 H5 应用上实时音视频播放、变声对讲以及日志视频回放的相关方法。
$ npm install @ray-js/video-streams-sdk
npm install weixin-js-sdk
// 或者
$ yarn add @ray-js/video-streams-sdk
yarn install weixin-js-sdk
<script src = 'https://static1.tuyacn.com/static/txp-ray-VideoStreams/video-streams-sdk.min.js' />
<script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js" />
import { Utils } from '@ray-js/video-streams-sdk';
base64Decode
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
url | string | 加密的首帧图片 URL,如果是从云端获取的图片,需要进行解密 | true |
请求示例
Utils.base64Decode(
'aHR0cHM6Ly9lbmNyeXB0LXBpYy50dXlhY24uY29tL3YxL2FwaS9waWNzP3BpY0tleT1hYzdhOWUzZTM2MzI5YmVlY2YxNDI3MTA5ZT*****'
);
// return: https://**********
建议在服务端请求以下接口,可以相对地减少客户端拉流的时间。
import { API } from '@ray-js/video-streams-sdk';
getToken
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
params | IParams |
身份验证信息 | true |
ctx | object | 服务端登录的上下文信息,客户端可以不传 | false |
IParams
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
accessId | string | 小程序的 clientId ,可通过小程序接口获取 |
true |
ticket | string | 身份票据,可通过小程序接口获取 | true |
返回参数
参数名 | 类型 | 描述 |
---|---|---|
access_token | string | 用户的身份令牌 |
refresh_token | string | 用户的刷新令牌 |
请求示例
const { result } = await API.getToken({ accessId, ticket }, ctx);
getMqttConfig
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
params | IParams |
身份信息 | true |
ctx | object | 服务端登录的上下文信息,客户端可以不传 | false |
IParams
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
accessToken | string | 用户的身份令牌,服务端必传 | true |
refreshToken | string | 用户的刷新令牌,服务端必传 | true |
schema | string | 微信小程序的 Schema |
true |
请求示例
const { result } = await API.getMqttConfig({ accessToken, refreshToken, schema }, ctx);
返回示例
// 该结果为 WebRTC 协议的请求参数字段 mqttConfigResponse
{
password: 'xxxxxxxxxx',
topics: [],
url: 'wss://xxxxxxx',
username: 'xxxxxx'
}
getWebRTCConfig
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
params | IParams |
身份信息和设备 ID | true |
ctx | object | 服务端登录的上下文信息,客户端可以不传 | false |
IParams
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
deviceId | string | 设备 ID | true |
accessToken | string | 用户的身份令牌,服务端必传 | true |
refreshToken | string | 用户的刷新令牌,服务端必传 | true |
schema | string | 微信小程序的 Schema |
true |
请求示例
const { result } = await API.getWebRTCConfig({ deviceId, accessToken, refreshToken, schema }, ctx);
返回示例
// 该结果为 WebRTC 协议的请求参数字段 p2pConfigResponse
{
auth: 'xxxxxxxxxx',
audio_attributes: [],
gateway_id: '',
id: 'xxxxxx',
moto_id: 'xxxxx',
p2p_config: [],
skill: ''
}
提供音视频自动拉流以及对讲。自动拉流仅限 H.264 以及 H.265 设备,不支持 MJPEG 设备的视频播放。
WebRtcVideo
import { WebRtcVideo } from '@ray-js/video-streams-sdk';
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
video | HTMLVideoElement | <video> 标签的实例 |
true |
url | string | 门锁实时视频的媒体链接 URL | true |
mqttConfigResponse | object | MQTT 协议建立连接的配置参数,API.getMqttConfig 方法的返回值 |
true |
p2pConfigResponse | object | WebRTC 协议建立连接的配置参数,API.getWebRTCConfig 方法的返回值 |
true |
codecType | string | 设备的视频协议类型
|
false |
isMuted | boolean | 是否开启静音,默认不开启 | false |
angle | number | 设备的旋转角度,默认值为 0 | false |
isOnlySupportSpeak | boolean | 是否仅开启对讲功能,默认不是。当设备为 MJPEG 协议设备时,可使用该能力对讲,因为 WebRTC 协议不支持 MJPEG 设备的视频播放,但支持对讲 | false |
isCarryAudio | boolean | 是否支持音频播放,默认支持 | false |
videoWidth | number | 预设的视频播放器宽度,默认为屏幕宽度 | false |
videoHeight | number | 预设的视频播放器高度,默认为屏幕高度 | false |
请求示例
// 获取 video
const video = document.getElementById('video');
const WebRtcVideoRef = new WebRtcVideo({
url: 'https://xxxxxxxx',
video,
codecType: '2',
mqttConfigResponse,
mqttConfigResponse,
angle: 90,
});
onStatusChange
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
callback | (message, data) => void | 监听的回调事件 | true |
IMessage
videoStyle
:适配出的视频播放器的宽高speed
:视频的速率,单位为 KB/sconnectStatus
:接口的连接状态
unLink
:接口未连接linked
:连接成功linkFail
:连接失败busy
:服务器繁忙fail
:加载或播放失败speakStatus
:对讲的状态
start
:打开对讲success
:对讲成功inUse
:对讲被占用stop
:关闭对讲nonSupport
:手机设备不支持对讲streamStatus
:出流的状态
success
:出流成功nonSupport
:手机设备不支持 WebRTC请求示例
const handleStatusChange = (message, data) => {
// message:事件名称
// data:值
};
WebRtcVideoRef.onStatusChange(handleStatusChange);
startSpeak
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
type | string | 变声的类型
|
true |
WebRtcVideoRef.startSpeak('female');
stopSpeak
WebRtcVideoRef.stopSpeak();
setVideoVoice
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
isMuted | bool | 是否静音 | true |
WebRtcVideoRef.setVideoVoice(true);
reconnectVideo
WebRtcVideoRef.reconnectVideo();
stopVideo
WebRtcVideoRef.stopVideo();
WebSocketVideo
提供音视频自动拉流以及对讲,存在对讲丢字等情况。通常用在 MJPEG 协议设备音视频的播放,搭配 WebRTC 能力的对讲功能。
import { WebSocketVideo } from '@ray-js/video-streams-sdk';
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
video | HTMLCanvasElement | <canvas> 标签的实例 |
true |
url | string | 门锁实时视频的媒体链接 URL,从微信小程序的 getLockMediaStream 方法中获取 |
true |
expiration | string | 开始生效时间,从微信小程序的 getLockMediaStream 方法中获取 |
true |
signInfo | string | 注册信息,从微信小程序的 getLockMediaStream 方法中获取 |
true |
isMuted | boolean | 是否开启静音,默认开启静音 | false |
angle | number | 设备的旋转角度,默认值为 0 | false |
isCarryAudio | boolean | 是否支持音频播放,默认支持 | false |
videoWidth | number | 预设的视频播放器宽度,默认为屏幕宽度 | false |
videoHeight | number | 预设的视频播放器高度,默认为屏幕高度 | false |
请求示例
// 获取 canvas
const canvas = document.getElementById('canvas');
const WebSocketVideoRef = new WebSocketVideo({
url: 'https://xxxxxxxx',
canvas,
expiration: '1726020430',
signInfo: 'xxxxxxxxx',
angle: 90,
});
onStatusChange
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
callback | (message, data) => void | 监听的回调事件 | true |
IMessage
speed
:视频的速率,单位为 KB/sconnectStatus
:接口的连接状态
unLink
:接口未连接linked
:连接成功linkFail
:连接失败speakStatus
:对讲的状态
start
:打开对讲success
:对讲成功inUse
:对讲被占用stop
:关闭对讲nonSupport
:手机设备不支持对讲streamStatus
:出流的状态
success
:出流成功fail
:出流失败请求示例
const handleStatusChange = (message, data) => {
// message:事件名称
// data:值
};
WebSocketVideoRef.onStatusChange(handleStatusChange);
startSpeak
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
type | string | 变声的类型
|
true |
WebSocketVideoRef.startSpeak('female');
stopSpeak
WebSocketVideoRef.stopSpeak();
setVideoVoice
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
isMuted | bool | 是否静音 | true |
WebSocketVideoRef.setVideoVoice(true);
reconnectVideo
WebSocketVideoRef.reconnectVideo();
stopVideo
WebSocketVideoRef.stopVideo();
RecordVideo
import { RecordVideo } from '@ray-js/video-streams-sdk';
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
canvas | HTMLCanvasElement | <canvas> 画布标签的实例 |
true |
url | string | 门锁日志信息的媒体链接 URL | true |
deviceWidth | number | 门锁设备的宽度 | true |
deviceHeight | number | 门锁设备的高度 | true |
mediaKey | string | 门锁日志信息的媒体密钥 | true |
angle | number | 设备的旋转角度,默认值为 0 | false |
canvasWidth | number | 预设的画布宽度,默认为屏幕宽度 | false |
canvasHeight | number | 预设的画布高度,默认为屏幕高度 | false |
请求示例
// 获取 canvas
const canvas = document.getElementById('canvas');
const RecordVideoRef = new RecordVideo({
url: 'https://xxxxxxxx',
canvas,
deviceWidth: 1280,
deviceHeight: 720,
mediaKey: '9ged77k5sntq4fct',
angle: 90,
});
onStatusChange
请求参数
参数名 | 类型 | 描述 | 是否必传 |
---|---|---|---|
callback | (message, data) => void | 监听的回调事件 | true |
IMessage
canvasSize
:适配出的画布的宽高status
:回放视频播放的状态,值有如下
ready
:资源加载完成playing
:播放中pause
:暂停end
:结束fail
:加载或播放失败durations
:回放视频的总时长,单位为秒currentDuration
:视频播放的当前进度,单位为秒请求示例
const handleStatusChange = (message, data) => {
// message:事件名称
// data:值
};
RecordVideoRef.onStatusChange(handleStatusChange);
startVideo
请求示例
RecordVideoRef.startVideo();
pauseVideo
请求示例
RecordVideoRef.pauseVideo();
stopVideo
请求示例
RecordVideoRef.stopVideo();
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈