yun2win官网:www.yun2win.com
SDK下载地址:http://www.yun2win.com/h-col-107.html
简介
yun2win-sdk-web提供web端实时音视频功能完整解决方案,方便客户快速集成音视频功能. SDK 提供整套解决方案
yun2win官网:www.yun2win.com
SDK下载地址:http://www.yun2win.com/h-col-107.html
开发准备
1、准备Chrome浏览器版本49及以上
2、给网站配置CA证书
3、导入y2wVideo.js文件并添加到main.html
复制
<script src="js/core/y2wVideo.js?v=0.1"></script>
4、添加自定义界面videoAudio.html
提醒
本地开发,需要生成CA证书,用https访问,并点击盾牌,选择加载不安全的脚本

创建聊天房间
调用以下代码创建房间:
复制
var y2wVideo = new RTCManager(); //currentUser.id 当前用户ID currentUser.imToken 当前用户的ImToken y2wVideo.createVideo(currentUser.id, currentUser.imToken, function (error, channelId) { if (error) { return; } //发送通知通知其他人,具体看下面 y2w.sendVideoMessage(scene, receiverIds, mode, channelId); //发起方打开视频语音聊天界面 window.open("../yun2win/videoAudio.html?userid=" + currentUser.id + "&channelId=" + channelId + "&type=" + mode, "_blank"); });
群聊视频发起与加入
发起方:
复制
//发送通知通知其他人 var receiverIds=[];//已经选择群聊的群成员用户ID for (var i = 0; i < obj.selected.length; i++) { receiverIds[receiverIds.length] = obj.selected[i].id; } y2w.sendVideoMessage('group', receiverIds, 'video', channelId);//channelId 房间ID //发起方打开视频语音聊天界面 window.open("../yun2win/videoAudio.html?userid=" + currentUser.id + "&channelId=" + channelId + "&type=" + 'video', "_blank");
接收方:
复制
if (syncObj.type == "groupavcall") { var receiversIds = syncObj.content.participants.receiversIds; if (receiversIds) { for (var j = 0; j < receiversIds.length; j++) { if (receiversIds[j] == currentUser.id) { y2w.receive_AV_Mesage(syncObj); break; } } } break; }
群聊音频发起与加入
发起方:
复制
var receiverIds=[];//已经选择群聊的群成员用户ID for (var i = 0; i < obj.selected.length; i++) { receiverIds[receiverIds.length] = obj.selected[i].id; } //发送通知通知其他人 y2w.sendVideoMessage('group', receiverIds, 'audio', channelId);//channelId 房间ID //发起方打开视频语音聊天界面 window.open("../yun2win/videoAudio.html?userid=" + currentUser.id + "&channelId=" + channelId + "&type=" + 'audio', "_blank");
接收方:
复制
if (syncObj.type == "groupavcall") { var receiversIds = syncObj.content.participants.receiversIds; if (receiversIds) { for (var j = 0; j < receiversIds.length; j++) { if (receiversIds[j] == currentUser.id) { y2w.receive_AV_Mesage(syncObj); break; } } } break; }
一对一视频发起与加入
发起方:
复制
var receiverIds=[]; receiverIds[receiverIds.length] = obj;//obj 对方用户ID //发送通知通知其他人 y2w.sendVideoMessage('p2p', receiverIds, 'video', channelId);//channelId 房间ID //发起方打开视频语音聊天界面 window.open("../yun2win/videoAudio.html?userid=" + currentUser.id + "&channelId=" + channelId + "&type=" + 'video', "_blank");
接收方:
复制
if (syncObj.type == "singleavcall") { var receiversIds = syncObj.content.participants.receiversIds; if (receiversIds) { for (var j = 0; j < receiversIds.length; j++) { if (receiversIds[j] == currentUser.id) { y2w.receive_AV_Mesage(syncObj); break; } } } break; }
一对一音频发起与加入
发起方:
复制
var receiverIds=[]; receiverIds[receiverIds.length] = obj;//obj 对方用户ID //发送通知通知其他人 y2w.sendVideoMessage('p2p', receiverIds, 'audio', channelId);//channelId 房间ID //发起方打开视频语音聊天界面 window.open("../yun2win/videoAudio.html?userid=" + currentUser.id + "&channelId=" + channelId + "&type=" + 'audio', "_blank");
接收方:
复制
if (syncObj.type == "singleavcall") { var receiversIds = syncObj.content.participants.receiversIds; if (receiversIds) { for (var j = 0; j < receiversIds.length; j++) { if (receiversIds[j] == currentUser.id) { y2w.receive_AV_Mesage(syncObj); break; } } } break; }
桌面共享
发起方:
复制
var receiverIds=[]; receiverIds[receiverIds.length] = obj;//obj 对方用户ID //发送通知通知其他人 y2w.sendVideoMessage('sharescreen', receiverIds, 'audio', channelId);//channelId 房间ID //发起方打开视频语音聊天界面 window.open("../yun2win/videoAudio.html?userid=" + currentUser.id + "&channelId=" + channelId + "&type=" + 'audio', "_blank");
接收方:
复制
if (syncObj.type == "sharescreen") { var receiversIds = syncObj.content.participants.receiversIds; if (receiversIds) { for (var j = 0; j < receiversIds.length; j++) { if (receiversIds[j] == currentUser.id) { y2w.receive_AV_Mesage(syncObj); break; } } } break; }
组装地址前准备
1、判断是否已经登录
复制
var currentUserid = localStorage.getItem('y2wIMCurrentUserId'); var currentuserinfo = JSON.parse(localStorage.getItem(currentUserid)); if (currentuserinfo == null) { if (window.confirm("您还没有登录,请先登录")) { window.location.href = '../yun2win/index.html'; } return; //重新登录 }
2、检测浏览器版本
复制
var sUserAgent = navigator.userAgent; //parseFloat 运行时逐个读取字符串中的字符,当他发现第一个非数字符是就停止 var appVersion = navigator.appVersion; var index = appVersion.indexOf('Chrome/'); var sub = appVersion.substring(index+7); var fAppVersion = parseFloat(sub); if (fAppVersion < 49) { alert('您的浏览器版本太低!为了不影响您的视频聊天,请升级到最新版本'); }
提醒
请记住使用chrome浏览器49版本及以上
3、通过登录token获取access_token
复制
var params = { grant_type: 'client_credentials', client_id: currentuserinfo.key,//用户的app Key client_secret: currentuserinfo.secret //密钥 }; var token = currentuserinfo.token;//登录token $.ajax({ url: config.y2wAutorizeUrl + 'oauth/token', type: 'POST', data: params, dataType: 'json', contentType: 'application/x-www-form-urlencoded', beforeSend: function (req) { if (token) req.setRequestHeader('Authorization', 'Bearer ' + token); }, success: function (data) { var token = data.access_token;//获取access_token //组装的地址 //document.getElementById("iframe_videoaudio").src = "https://av-api.liyueyun.com/media/?userid=" + memberId + "&channelId=" + channelId + "&type=" + initype + "&token=" + token + "&avatarUrl=" + avatarUrl + "&name=" + name; }, error: function (e) {//验证失败,重新登陆 if (e.status ==400){ if (window.confirm("验证失败,请重新登录")) { window.location.href = '../yun2win/index.html'; } } } });
组装地址
复制
//memberId 当前用户ID channelId 房间ID //initype默认开启类型 (video/audio) token access_token avatarUrl 用户头像地址 name用户名字 document.getElementById("iframe_videoaudio").src = "https://av-api.liyueyun.com/media/?userid=" + memberId + "&channelId=" + channelId + "&type=" + initype + "&token=" + token + "&avatarUrl=" + avatarUrl + "&name=" + name;