前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >实时音视频,小程序端WebRTC互通

实时音视频,小程序端WebRTC互通

原创
作者头像
腾讯云-chaoli
发布于 2019-05-24 09:23:00
发布于 2019-05-24 09:23:00
11.3K00
代码可运行
举报
运行总次数:0
代码可运行

版本支持

我们在 LiteAVSDK 的最新版本里面加入了对 WebRTC 的支持能力,并且已经跟随微信APP的 6.6.6 版本发布出来,此文档主要介绍如何使用原生的 <live-pusher> 和 <live-player> 标签实现 WebRTC 互通能力。

接入成本

此文档介绍的方法接入成本偏高,适合喜欢全面定制的同学;我们同步提供了一套封装度更高的自定义组件方案 —— <webrtc-room> ,更加推荐您来使用。

接入流程

step1. 开通云服务

小程序跟 WebRTC 的互通是基于实时音视频TRTC)服务实现的,需要开通该服务。

  • 进入实时音视频管理控制台,如果服务还没有开通,点击申请开通,之后会进入腾讯云人工审核阶段,审核通过后即可开通。
  • 服务开通后,进入管理控制台 创建实时音视频应用,点击【确定】按钮即可。
  • 从实时音视频控制台获取sdkAppID、accountType、privateKey,在 step4 中会用的:

step2. 生成key信息

按照如下表格获取关键的key信息,这是使用腾讯云互通直播服务所必须的几个信息:

KEY

示例

作用

获取方案

sdkappid

1400087915

用于计费和业务区分

上文中有介绍

userid

xiaoming

用户名

可以由您的服务器指定,或者使用小程序的openid

usersig

加密字符串

相当于 userid 对应的登录密码

由您的服务器签发(PHP / JAVA)

roomid

12345

房间号

可以由您的服务器指定

privateMapKey

加密字符串

进房票据:相当于是进入 roomid 的钥匙

由您的服务器签发(PHP / JAVA)

下载 sign_src.zip 可以获得服务端签发 usersig 和 privateMapKey 的示例代码。

生成 usersig 和 privateMapKey 的签名算法是 ECDSA-SHA256

step3. 获取roomsig

小程序端可以通过如下 url 向腾讯云请求 roomsig,roomsig 是小程序跟 WebRTC 互通必须的关键信息,请求 roomsig 所使用的关键信息已经在 step2 中做了详细描述 (这里的 identifier 就是上文中的 userid ):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://official.opensso.tencent-cloud.com/v4/openim/jsonvideoapp?
       sdkappid=xxx&identifier=xiaoming&usersig=yyy&random=9999&contenttype=json
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
body:
{
    "ReqHead":
    {
        "Cmd":1,                               //命令字,固定填1
        "SeqNo":1,                             //请求序列号,uint32
        "BusType": 7,                          //业务类型,固定填7
        "GroupId": 10001                       //群组Id(房间Id),uint32
    },
    "ReqBody":
    {
        "PrivMap": 255,                        //非必填,明文权限位
        "PrivMapEncrypt": "ed868cdc281d8b",    //必填,权限位加密串
        "IsIpRedirect": 0,                     //非必填,默认0;0非重定向;1是重定向
        "TerminalType": 1,                     //必填,终端类型,对应0x109中的TERMINAL_TYPE;Android:4;ios:2;
        "FromType": 3,                         //必填,请求来源类型:1:avsdk;2:webrtc;3:微信小程序;
        "SdkVersion": 26280566                 //非必填,整型版本号
    }
}

Attention: 获取roomsig的操作必须在客户端完成,后台完成会引入选路错位问题,导致视频卡顿严重。

step4. 拼装URL

如果希望将小程序跟 WebRTC 打通,不能使用普通的 rtmp:// 推流地址,而是使用新的 room:// 协议的推流地址,该地址的格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
room://cloud.tencent.com?sdkappid=xxx&roomid=12345&userid=xiaoming&roomsig=yyy

step5. 加入(或创建)房间

在小程序的 <live-pusher> 标签里,指定 url 属性为 step4 中拼装出的url,这相当于进入指定的 roomid, <live-pusher> 的 视频画面会显示本地摄像头的影像。

如果您指定的 roomid 是第一次使用,腾讯云后台会自动为您创建一个房间号为 roomid 的房间。

step6. 远程的视频画面

step5 解决了本地camera画面的问题,远程的画面怎么获取呢?

当 <live-pusher> 开始推流后,腾讯云会通过 onPushEvent (PUSH_EVT_ROOM_USERLIST = 1020) 通知您的小程序代码:房间里还有哪些人?

当有新的人加入房间以后,<live-pusher> 也会重新通知 onPushEvent (PUSH_EVT_ROOM_USERLIST = 1020),这样客户可以根据 ROOM_USERLIST 的变化,了解房间里有哪些人进入了,或者哪些人离开了。

ROOM_USERLIST 里每一项都是一个二元组(如果是 1v1 的视频通话,ROOM_USERLIST 里只会有一个人): useridplayurl。 userid 代表是哪个用户, playurl 则是这个用户远程画面的播放地址。

ROOM_USERLIST内容格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "userlist": [
        {
            "userid": "webrtc11",
            "playurl": "room://183.3.225.15:1935/webrtc/1400037025_107688_webrtc11"
        },
        {
            "userid": "webrtc12",
            "playurl": "room://183.3.225.15:1935/webrtc/1400037025_107688_webrtc12"
        }
    ]
}

之后,使用 <live-player> 标签,并指定 src 为 ROOM_USERLIST 里的 playurl, 即可看到远程画面了。

step7. Chrome 对接

了解腾讯云官网的 webrtc 服务,可以对接 Chrome 端的 H5 视频通话,因为不是本文档的重点,此处不做赘述。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
打通小程序音视频和webRTC
2017年腾讯视频云团队跟微信团队联合,将视频云 SDK 跟微信小程序整合在一起,并开放内部功能。
腾讯视频云终端团队
2018/05/03
19.4K14
打通小程序音视频和webRTC
实时音视频开发学习10 - 小程序端一
小程序端双人通话、多人会议和语音聊天室三个功能。双人通话中实现1V1视频通话,在结合Web IM SDK可实现在线问诊或客服;语音聊天室能支持多人互动语音聊天,混音、混响等声音特效,适用于狼人杀、在线语音直播等社交场景;多人会议支持多路音视频通话、大小画面和屏幕分享等功能,适用于远程培训、在线教育等。
金林学音视频
2020/08/27
1.4K0
实时音视频开发学习10 - 小程序端一
从零开始创建一个超简单的TRTC音视频通讯程序(小程序篇)
出于政策和合规的考虑,微信暂未放开所有小程序对实时音视频功能(即 <live-pusher> 和 <live-player> 标签)的支持:
F颜
2020/06/18
2.1K0
实时音视频开发学习9 - 进房权限和画质
开启进房权限的目的是为了避免非会员模式能够进入高级房间,同时解决客户端限制被破解的问题。目前进房权限在iOS、Android、Windows、Electron、微信小程序和Chrome 浏览器都支持。
金林学音视频
2020/08/27
1.8K0
实时音视频开发学习9 - 进房权限和画质
实时音视频 TRTC 常见问题汇总---小程序篇
如有更多需求,或希望深度合作,可以 提交工单 或致电4009100100联系我们。
腾讯视频云-Zachary
2021/09/21
5.8K0
实时音视频 TRTC 常见问题汇总---小程序篇
腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践
本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征、差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebRTC互通的实现思路以及技术方案。希望能带给你启发。
JackJiang
2018/10/11
2.7K0
MLVBLiveRoom 方案 - 管理后台RoomService接口文档
本文用于介绍移动直播 MLVBLiveRoom 方案的管理后台部分,MLVBLiveRoom 方案包含了两部分内容:客户端 MLVBLiveRoom 组件 + 房间管理服务 RoomService。MLVBLiveRoom 组件说明见 https://cloud.tencent.com/developer/article/1488540
腾讯云-chaoli
2019/08/16
21.5K31
MLVBLiveRoom 方案 - 管理后台RoomService接口文档
实时音视频 TRTC 常见问题汇总---集成接入篇
TRTC 的日志默认压缩加密,后缀为 .xlog。日志是否加密是可以通过 setLogCompressEnabled 来控制,生成的文件名里面含 C(compressed) 的就是加密压缩的,含 R(raw) 的就是明文的。
腾讯视频云-Zachary
2019/11/01
14.4K1
实时音视频 TRTC 常见问题汇总---集成接入篇
实时音视频开发学习14 - 常见问题
V1和V2主要区别在于IM的SDK是否内嵌于TRTC中,V1线路是内嵌,而V2则可选,默认不打包IM的SDK包。V2在通话质量、线路规格、接入难度以及功能扩展上均比V1更有优势。
金林学音视频
2020/08/30
2.8K0
实时音视频开发学习14 - 常见问题
微信小程序使用TRTC
在使用之前我们需要了解 <live-player> 和 <live-pusher> 微信小程序原生组件,因为小程序TRTC组件标签 <trtc-room> 是基于这两个标签实现的组件,所以在运行调试时开发工具是不支持的,只能在真机上运行。
yuliang
2021/03/10
3K0
从零开始创建一个超简单的TRTC音视频通讯程序(web篇)
WebRTC 技术由 Google 最先提出,目前主要在桌面版 Chrome 浏览器、桌面版 Safari 浏览器以及移动版的 Safari 浏览器上有较为完整的支持,其他平台(例如 Android 平台的浏览器)支持情况均比较差。
F颜
2020/06/19
4.5K7
腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践
本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征、差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebRTC互通的实现思路以及技术方案。希望能带给你启发。
JackJiang
2018/09/29
3.3K0
TRTC Android端开发接入学习之常见问题(十一)
V1和V2主要区别在于IM的SDK是否内嵌于TRTC中,V1线路是内嵌,而V2则可选,默认不打包IM的SDK包。V2在通话质量、线路规格、接入难度以及功能扩展上均比V1更有优势。
腾讯云-hongyang
2020/09/27
3.1K0
【TRTC小程序】跨房连麦功能实现(不混流实现)
推拉流可通过live-pusher/player自身标签赋值或者wx提供的方法进行控制,参考文档:
circleRich
2022/05/13
2.4K1
【TRTC小程序】跨房连麦功能实现(不混流实现)
实时音视频SDK,如何实现类似微信的纯语音通话功能?
实时音视频TRTCSDK适用的业务场景是视频会议、坐席视频、在线教育等,如果您希望实现类似微信的语音通话、语音会议功能,TRTCSDK也是支持的,只需要微调几个参数就可以实现,将采集音视频的api,换成只采集音频。
腾讯云-chaoli
2019/03/05
8.1K2
实时音视频SDK,如何实现类似微信的纯语音通话功能?
微信小程序TRTC使用custom自定义面板(实现篇)
本文主要是使用 custom 面板实现直播互动,上下麦操作。如有疑问可参考 微信小程序TRTC使用custom自定义面板(理解篇)。本文只是简单演示如何实现主播与观众进行连麦互动,在实际中,通常是有主播端发起与粉丝进行直播互动,通过粉丝来接受,进行连麦。发送这种消息可以使用IM(即时通讯)完成。
yuliang
2021/03/16
1.4K0
【玩转腾讯云】<trtc-room>小程序组件使用
< trtc-room >是目前腾讯推出的多端实时音视频的处理方案,官方地址介绍。这里记录一下个人使用这个组件的一些经验。 用上TRTC后,各端互通,甚至可以用小程序,在QQ和微信互通,在网页端,pc端都有很好的支持(Electron也有,前端福音)。加上TIM的即时通信能力,直接可以搭建一个企业级的直播应用,如果加上腾讯白板,直接变成会议小帮手,教学大杀器,业务场景完全可以在实时音视频业务之上自由组合。
sskingss
2021/04/14
10.3K0
实时音视频 TRTC 常见问题汇总---咨询问题篇
支持的平台包括 iOS、Android、Windows(C++)、Windows(C#)、Mac、Web、Electron、微信小程序、Flutter,更多详情请参见 平台支持。
腾讯视频云-Zachary
2019/11/01
13.2K0
实时音视频 TRTC 常见问题汇总---咨询问题篇
实时音视频开发学习1 - 音视频初体验
随着移动互联网速度越来越快的发展,实时音视频的发展也越来越收到重视。腾讯实时音视频(Tencent Real-Time Communication,TRTC)经过了10多年在网络音视频技术的发展与积累,并以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,使得开发者能快速实现低成本、低延时、高品质的音频互动解决方案。
金林学音视频
2020/08/20
4K0
实时音视频开发学习1 - 音视频初体验
小程序实时音视频参数透传
腾讯视频云小程序里面的实时音视频方案支持给协议地址添加相关参数实现特定的音视频功能,实现步骤如下: 在拼接实时音视频上行协议地址room://cloud.tencent.com的时候加上bizbuf参数,然后赋值给live-pusher标签的url属性,这样上行音视频的时候就会具备对应的能力。
腾讯云-chaoli
2019/03/13
2.8K0
小程序实时音视频参数透传
推荐阅读
相关推荐
打通小程序音视频和webRTC
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验