更新时间:2024-06-21 07:35:12下载pdf
涂鸦开发者平台针对具备音视频传输能力的智能设备,提供了 HLS 协议的实时视频接入方式。
功能说明
用户获取 HLS 实时视频链接。
接口地址
POST /v1.0/users/{uid}/devices/{device_id}/stream/actions/allocate
请求参数
| 参数名 | 类型 | 参数位置 | 说明 | 是否必须 |
|---|---|---|---|---|
| type | String | BODY | 实时视频协议,HLS 协议固定取值为 hls |
是 |
响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| result | Url |
云存储录像解密密钥 |
| success | Boolean | 响应结果的状态 |
| t | Long | 响应结果的 10 位时间戳,精确至毫秒 |
Url| 参数名 | 类型 | 说明 |
|---|---|---|
| url | String | 实时视频地址 |
请求示例
{
"type": "hls"
}
响应示例
{
"result": {
"url": "https://wework1.wgine.com:554/hls/6cf2b6d2b09a2f8597gudm/bu4fsmh525q955j6djugBCKwOc8MJioR8BzQ63Yb.m3u8?signInfo=J%2FnrpQ1xQk5rcJc7TsGc7h7AAklEodbn0yDxm90dT0PtAl5lyB7uwq7%2Br3J0%2FeV0PixGQXys%2FLkCKr6svF3whoMVb40FEcv254VrLRdco8XeZThMAkpyL%2Fkx5Nzl8%2Fz4Jenciq%2FKiQDnap3yVvWwyub73NEzMpx4JA6a5rRZhg****"
},
"success": true,
"t": 1602813530973
}
Web 前端
Web 后端
涂鸦开发者平台
登录 云开发,在项目信息中获取 Access ID 和 Access Secret。
将 Access ID 和 Access Secret 分别更新至 webrtc.json 文件中的 clientId 和 secret。
更新授权模式和信息。
authMode:填 easyuIdauthMode:填 authcode:授权码。在 Tuya 开放平台授权 同意授权后,截取浏览器回调 URL 中的授权码。填写 deviceId。涂鸦智能 App 中选中一台 IPC,查询设备 ID。
从 Github 下载 源码,在源码根目录,先执行 go get,完成后执行 go build。
执行 ./webrtc-demo-go。
在 Chrome 打开 http://localhost:3333/api/stream/hls,获取 HLS 播放地址。
30 秒内在 VLC 中打开网络,输入 HLS 播放地址,播放 HLS 实时流。
HLS(HTTP Live Streaming)是由 Apple 公司定义的用于实时流传输的协议,涂鸦也是按照标准协议来实现的。因此,Apple 设备已经天然支持通过 video 标签,来播放 HLS 协议的视频。对于其他设备接入,前端可以使用 hls.js 库进行处理。
Safari 浏览器(PC)和其他 iOS 设备(移动端)
将获取到的 m3u8 链接直接赋值 video 的 src 即可。浏览器会根据 m3u8 的清单列表,自动拉取媒体片段列表进行播放。
<video id="video" src="https://wework1.wgine.com:554/hls/6cf2b6d2b09a2f8597gudm/bu4fsmh525q955j6djugBCKwOc8MJioR8BzQ63Yb.m3u8"></video>
<button onclick="handleClick()">play</button>
<script>
const handleClick = () => {
var video = document.getElementById('video');
video.play();
}
</script>
非 Safari 浏览器(PC)和安卓设备(移动端)
接入 hls.js 库进行播放。
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<video id="video"></video>
<script>
if (Hls.isSupported()) {
var video = document.getElementById('video');
var hls = new Hls();
// bind them together
hls.attachMedia(video);
hls.on(Hls.Events.MEDIA_ATTACHED, function () {
console.log("video and hls.js are now bound together !");
hls.loadSource("./stream/prog_index.m3u8");
hls.on(Hls.Events.MANIFEST_PARSED, function (event, data) {
console.log("manifest loaded, found " + data.levels.length + " quality level");
});
});
video.play();
}
</script>
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈