0.4.3 • Published 2 years ago

ubox-auto-sdk-web v0.4.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

ubox-auto-sdk-web

UCloud 智能盒子 web 端 SDK

How ot use

安装

npm install ubox-auto-sdk-web

使用

初始化实例

// 引用包
const UBoxAuto = require('ubox-auto-sdk-web');
// 实例化调用端
const client = UBoxAuto({
    publicKey: 'xxx', // 在 API 密钥中查看管理自己的密钥: https://console.ucloud.cn/uaccount/api_manage
    privateKey: 'xxx', // 在 API 密钥中查看管理自己的密钥: https://console.ucloud.cn/uaccount/api_manage
    projectId: 'xxx' // 在项目管理中查看需要管理的项目 id: https://console.ucloud.cn/uaccount/iam/project_manage
});

请注意管理好自己的公私钥,不要直接暴露在页面中,建议通过 api 从服务端获取公私钥

debug

可通过传入 debug 参数,开始 debug,会在某些环节打印出一些 log 帮助调试

const client = UBoxAuto(
    {
        publicKey: 'xxx',
        privateKey: 'xxx',
        projectId: 'xxx'
    },
    { debug: true }
);

调用 client 获取数据

Promise 类错误请统一通过 catch 获取,或使用 await 通过 try/catch 获取

client
    .getSdnboxCameraList()
    .then(list => {})
    .catch(console.error);
client
    .startSdnboxCameraPushing()
    .then(() => {
        console.log('start success');
    })
    .catch(console.error);

try {
    const player = client.play(
        document.querySelector('#videoContainer'),
        // 也可自行提供对应地址的流进行播放,url 为 webrtc 地址
        { url: 'webrtc://xxxxxx' }
    );
} catch (e) {
    console.error('play fail', e);
}
  1. 获取盒子和摄像头列表
// 获取盒子,摄像头的列表数据
client.getSdnboxCameraList().then(list => {
    console.log(list);
});

返回数据格式参考文档页

  1. 开启/关闭摄像头推流
// 开启对应摄像头的推流
client.startSdnboxCameraPushing({ cameraId, sdnboxId }).then(() => {
    console.log('start success');
});
// 关闭对应摄像头的推流
client.stopSdnboxCameraPushing({ cameraId, sdnboxId }).then(() => {
    console.log('stop success');
});

播放对应摄像头 webrtc 流

  • 播放器基本功能

    • 播放器会自动播放流的最新桢,网络差可能会出现跳帧
    • 播放器会在出错时自动重试直到播放成功
  • play 创建播放器实例

// 播放对应盒子对应摄像头的流,需要调用 getSdnboxCameraList 才可采用这种方式,会从返回结果中获取对应的流地址
// video 元素样式自定义,建议背景设计为黑色,否则重试播放时会出现闪烁
const player = client.play(
    // 播放器实例化应用的容器标签元素 <div id="videoContainer"></div>
    document.querySelector('#videoContainer'),
    // 通过传入 sdnboxId 和 cameraId 可快速从之前调用过的 getSdnboxCameraList 缓存数据中获取到对应的流地址
    { cameraId, sdnboxId }
);

const player = client.play(
    document.querySelector('#videoContainer'),
    // 也可自行提供对应地址的流进行播放,url 为 webrtc 地址
    { url: 'webrtc://xxxxxx' }
);

播放器大小

  • 播放器默认大小为容器的大小
  • 可通过传入 width、height 来自定义
  • 如果容器宽高和参数都没有则默认使用 640*480
  • 也可直接使用 fill 参数来让播放器充满容器(自适应,需要注意容器设置宽高,不然视频自适应可能会导致容器抖动)
const player = client.play(
    // 播放器实例化应用的容器标签元素 <div id="videoContainer"></div>
    document.querySelector('#videoContainer'),
    // 通过传入 sdnboxId 和 cameraId 可快速从之前调用过的 getSdnboxCameraList 缓存数据中获取到对应的流地址
    { cameraId, sdnboxId, width: 800, height: 600 }
);

fill demo

const player = client.play(
    // 播放器实例化应用的容器标签元素 <div id="videoContainer" style="width: 100%;height: 400px;"></div>
    document.querySelector('#videoContainer'),
    // 通过传入 sdnboxId 和 cameraId 可快速从之前调用过的 getSdnboxCameraList 缓存数据中获取到对应的流地址
    { cameraId, sdnboxId, fill: true }
);

options

播放时可传入 options 参数

client.play(document.querySelector('#videoContainer'), info, options);

接口定义如下

{
    // 是否自动播放,为 true 时会在调用 play 后自动开始播放,不需要再调用 start
    autoplay?: boolean;
    // 播放过程中出错时会触发,可监听来做一些错误处理、日志等
    // 错误触发时播放器会自动重试播放
    // 错误类型可通过 error.name 获取
    onError?: (error: Error) => void;
    // 错误后重连成功时触发,触发时机会存在一定延时
    onRestore?: () => void;
}
  • 开始播放
// 调用 start 开始播放
player.start();
  • 停止播放
// 终止播放
player.stop();
  • 销毁播放器 - 卸载播放器时注意销毁,避免内存泄漏
player.destroy();
  • 获取播放信息
// 获取播放信息,stats 内容参考 https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/getStats#example
player.stats().then(stats => stats.forEach(console.log));

错误类型列表

  • VIDEO_ENDED

    播放器播放结束(理论不会出现)

  • VIDEO_SEEKING

    播放器一直在寻找资源而没播放

  • VIDEO_NO_FUTURE_DATA

    播放器接受不到更多数据,无法继续播放

  • NO_MORE_RECEIVED_DATA

    拉流未拉到数据(一般是推流端中断推流,或网络断开)

  • GET_BYTES_RECEIVED_FAIL

    无法获取到拉流的信息(一般是连接建立失败触发)

0.4.3

2 years ago

0.3.0

2 years ago

0.1.2

2 years ago

0.2.0

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.4.1

2 years ago

0.3.2

2 years ago

0.4.0

2 years ago

0.3.1

2 years ago

0.3.4

2 years ago

0.4.2

2 years ago

0.3.3

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.2

2 years ago