First commit
This commit is contained in:
181
public/demo/ezuikit-talk.js
Executable file
181
public/demo/ezuikit-talk.js
Executable file
@@ -0,0 +1,181 @@
|
||||
/**
|
||||
* ezuikit-talk v0.0.1-beta
|
||||
*/
|
||||
(function (global, factory) {
|
||||
|
||||
"use strict";
|
||||
|
||||
if (typeof module === "object" && typeof module.exports === "object") {
|
||||
module.exports = global.document ?
|
||||
factory(global, true) :
|
||||
function (w) {
|
||||
if (!w.document) {
|
||||
throw new Error("EZUIPlayer requires a window with a document");
|
||||
}
|
||||
return factory(w);
|
||||
};
|
||||
} else {
|
||||
factory(global);
|
||||
}
|
||||
|
||||
// Pass this if window is not defined yet
|
||||
})(typeof window !== "undefined" ? window : this, function (window, noGlobal) {
|
||||
// 加载js
|
||||
function addJs(filepath, callback) {
|
||||
var oJs = document.createElement("script");
|
||||
oJs.setAttribute("src", filepath);
|
||||
oJs.onload = callback;
|
||||
document.getElementsByTagName("head")[0].appendChild(oJs);
|
||||
}
|
||||
// 通用请求方法
|
||||
function request(url, method, params, header, success, error) {
|
||||
var _url = url;
|
||||
var http_request = new XMLHttpRequest();
|
||||
http_request.onreadystatechange = function () {
|
||||
if (http_request.readyState == 4) {
|
||||
if (http_request.status == 200) {
|
||||
var _data = JSON.parse(http_request.responseText);
|
||||
success(_data);
|
||||
}
|
||||
}
|
||||
};
|
||||
http_request.open(method, _url, true);
|
||||
// http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||
var data = new FormData();
|
||||
for (i in params) {
|
||||
data.append(i, params[i]);
|
||||
}
|
||||
http_request.send(data);
|
||||
};
|
||||
var EZUITalk = function (params) {
|
||||
console.log("params",params);
|
||||
// this.opt = {
|
||||
// apiDomain: 'https://test12open.ys7.com/api/lapp/live/talk/url'
|
||||
// }
|
||||
this.opt = {
|
||||
apiDomain: 'https://open.ys7.com/api/lapp/live/talk/url',
|
||||
filePath: '',
|
||||
accessToken: undefined,
|
||||
deviceSerial: undefined,
|
||||
channelNo: undefined,
|
||||
talkLink: '',
|
||||
rtcUrl: '',
|
||||
ttsUrl: '',
|
||||
stream: '',
|
||||
}
|
||||
if(params.accessToken){
|
||||
this.opt.accessToken = params.accessToken;
|
||||
}
|
||||
if(params.url){
|
||||
this.opt.deviceSerial = params.url.split("/")[3];
|
||||
this.opt.channelNo = params.url.split("/")[4].split(".")[0];
|
||||
}
|
||||
if(params.filePath){
|
||||
this.opt.filePath = params.filePath;
|
||||
}
|
||||
var _this = this;
|
||||
function apiSuccess(data){
|
||||
console.log("data",data);
|
||||
if(data.code == 200){
|
||||
var apiResult = data.data;
|
||||
if(apiResult){
|
||||
// 临时将https转换为websocket
|
||||
var rtcTrunk = apiResult.rtcUrl;
|
||||
if(rtcTrunk.indexOf("ws") === -1){
|
||||
rtcTrunk = rtcTrunk.replace("https","wss").replace("rtcgw","rtcgw-ws");
|
||||
}
|
||||
_this.opt.rtcUrl = rtcTrunk;
|
||||
_this.opt.ttsUrl = "tts://" + apiResult.ttsUrl;
|
||||
var talk = "talk://" + _this.opt.deviceSerial + ":0:" + _this.opt.channelNo + ":cas.ys7.com:6500";
|
||||
_this.opt.talkLink = _this.opt.ttsUrl + "/" + talk;
|
||||
_this.opt.stream = apiResult.stream;
|
||||
console.log("_this.opt",_this.opt)
|
||||
// 加载依赖
|
||||
// this.init();
|
||||
var adapeterJS = _this.opt.filePath + '/adapeter.js';
|
||||
var janusJS = _this.opt.filePath + '/janus.js';
|
||||
var ttsJS = _this.opt.filePath + '/tts.js';
|
||||
console.log("加载jquery.js");
|
||||
addJs(adapeterJS,function(){
|
||||
console.log("加载adapeter.js");
|
||||
addJs(janusJS,function(){
|
||||
console.log("加载janus.js");
|
||||
addJs(ttsJS,function(){
|
||||
console.log("加载tts.js");
|
||||
// 文件加载完毕;
|
||||
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
function apiError(err){
|
||||
if(params.handleError){
|
||||
params.handleError(err);
|
||||
}
|
||||
|
||||
}
|
||||
request(
|
||||
this.opt.apiDomain,
|
||||
'POST',
|
||||
{
|
||||
accessToken: this.opt.accessToken,
|
||||
deviceSerial: this.opt.deviceSerial,
|
||||
channelNo: this.opt.channelNo
|
||||
},
|
||||
'',
|
||||
apiSuccess,
|
||||
apiError
|
||||
);
|
||||
|
||||
console.log("this.opt",this.opt)
|
||||
}
|
||||
// EZUITalk.prototype.init = function () {
|
||||
// console.log();
|
||||
|
||||
// $.ajax({
|
||||
// type: 'POST',
|
||||
// url: 'https://test12open.ys7.com/api/lapp/live/talk/url',
|
||||
// // contentType: "application/json;charset=utf-8",
|
||||
// dataType: 'json',
|
||||
// data: {
|
||||
// accessToken: accessToken,
|
||||
// deviceSerial: serial,
|
||||
// channelNo: channelNo,
|
||||
// },
|
||||
// success: function (data) {
|
||||
// log("对讲api调用成功" + JSON.stringify(data));
|
||||
// if (data.code == 200) {
|
||||
// var result = data.data;
|
||||
// ttsUrl = result.ttsUrl,
|
||||
// rtcUrl = "wss://test12.ys7.com/rtcgw-ws", //result.ttsUrl
|
||||
// stream = result.stream;
|
||||
// $('#tts_url').attr("value", matchTalkLink);
|
||||
// $("#start").attr('disabled', false);
|
||||
// } else {
|
||||
// }
|
||||
// },
|
||||
// error: function (err) {
|
||||
// },
|
||||
// })
|
||||
// }
|
||||
|
||||
// this.prototype.init = function(){
|
||||
// var adapeterJS = this.opt.filepath + '/js/adapeter.js';
|
||||
// addJs(adapeterJS,function(){
|
||||
// console.log("加载adapeter.js")
|
||||
// })
|
||||
// }
|
||||
EZUITalk.prototype.startTalk = function(){
|
||||
window.startTalk();
|
||||
}
|
||||
EZUITalk.prototype.stopTalk = function(){
|
||||
window.stopTalk();
|
||||
}
|
||||
if (!noGlobal) {
|
||||
window.EZUITalk = EZUITalk;
|
||||
}
|
||||
return EZUITalk;
|
||||
})
|
||||
2080
public/demo/ezuikit.js
Executable file
2080
public/demo/ezuikit.js
Executable file
File diff suppressed because it is too large
Load Diff
224
public/demo/index.html
Executable file
224
public/demo/index.html
Executable file
@@ -0,0 +1,224 @@
|
||||
<!--
|
||||
* @Description:
|
||||
* @Author: xiao li
|
||||
* @Date: 2020-07-20 14:08:46
|
||||
* @LastEditTime: 2022-04-15 10:21:17
|
||||
* @LastEditors: xiao li
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
|
||||
<meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
|
||||
<meta name="referrer" content="never">
|
||||
|
||||
<title>监控详情</title>
|
||||
<script src="./ezuikit.js"></script>
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<style>
|
||||
|
||||
body{
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.page-main{
|
||||
width: 100%;
|
||||
height: auto;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.play-box,
|
||||
#myPlayer{
|
||||
width: 100%;
|
||||
height: 40vh;
|
||||
background: #000;
|
||||
}
|
||||
|
||||
.flex-center{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.mt-lg{
|
||||
margin-top: 30px;
|
||||
}
|
||||
.text{
|
||||
color: #999;
|
||||
}
|
||||
.console-bg{
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
border-radius: 50%;
|
||||
border: 20px solid #f4f6f8;
|
||||
}
|
||||
.center{
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -15px;
|
||||
margin-left: -15px;
|
||||
border: 2px solid #eee;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.top{
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
top: 0%;
|
||||
left: 50%;
|
||||
margin-top: 10px;
|
||||
margin-left: -5px;
|
||||
border-width: 2px 0 0 2px;
|
||||
border-color: #999;
|
||||
border-style: solid;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.bottom{
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
bottom: 0%;
|
||||
left: 50%;
|
||||
margin-bottom: 10px;
|
||||
margin-left: -5px;
|
||||
border-width: 0 2px 2px 0;
|
||||
border-color: #999;
|
||||
border-style: solid;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.left{
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -5px;
|
||||
margin-left: -65px;
|
||||
border-width: 0 0 2px 2px;
|
||||
border-color: #999;
|
||||
border-style: solid;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.right{
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
top: 50%;
|
||||
right: 50%;
|
||||
margin-top: -5px;
|
||||
margin-right: -65px;
|
||||
border-width: 2px 2px 0 0;
|
||||
border-color: #999;
|
||||
border-style: solid;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
.rel{
|
||||
position: relative;
|
||||
}
|
||||
.abs{
|
||||
position: absolute;
|
||||
}
|
||||
</style>
|
||||
<script src="./ezuikit.js"></script>
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="page-main">
|
||||
<div class="play-box"></div>
|
||||
|
||||
<div class="flex-center mt-lg">
|
||||
<div class="text">请通过操控云台来调整摄像机视角</div>
|
||||
</div>
|
||||
<div class="flex-center" style="margin-top: 50px;">
|
||||
<div class="console-bg rel">
|
||||
<div class="center abs"></div>
|
||||
<div onclick="toStartTurn(0)" class="top abs"></div>
|
||||
<div onclick="toStartTurn(1)" class="bottom abs"></div>
|
||||
<div onclick="toStartTurn(2)" class="left abs" data-key="left"></div>
|
||||
<div onclick="toStartTurn(3)" class="right abs"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let _href = window.location.href
|
||||
let url = _href.split('/demo/index.html?')[0]
|
||||
let {0:id,1:uniacid} = _href.split('/demo/index.html?')[1].split('&')
|
||||
let ajax_url = `${url}/index.php?i=${uniacid}&m=farm&s=`
|
||||
let player = null
|
||||
$(function() {
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url: `${ajax_url}farm/app/Index/getMonitorInfo`,
|
||||
dataType: 'json',
|
||||
data: {
|
||||
id
|
||||
},
|
||||
success: function(data) {
|
||||
console.log(data)
|
||||
let {token:accessToken,url} = data.data
|
||||
let html = `<video id="myPlayer" autoplay controls playsInline webkit-playsinline src=`
|
||||
html += url
|
||||
html += ` ></video>`
|
||||
$('.play-box').append(html)
|
||||
player = new EZUIKit.EZUIPlayer('myPlayer');
|
||||
player.play()
|
||||
// player = new EZUIKit.EZUIKitPlayer({
|
||||
// id: 'video-container', // 视频容器ID
|
||||
// accessToken,
|
||||
// url: 'ezopen://open.ys7.com/J59194950/1.hd.live',
|
||||
// autoplay: true ,
|
||||
// audio: 1, // 是否默认开启声音 0 - 关闭 1 - 开启
|
||||
// plugin: ['talk'], // 加载插件,talk-对讲
|
||||
// openSoundCallBack: (data) => console.log("开启声音回调",data),
|
||||
// closeSoundCallBack: (data) => console.log("关闭声音回调",data),
|
||||
// startSaveCallBack: (data) => console.log("开始录像回调",data),
|
||||
// stopSaveCallBack: (data) => console.log("录像回调",data),
|
||||
// capturePictureCallBack: (data) => console.log("截图成功回调",data),
|
||||
// fullScreenCallBack: (data) => console.log("全屏回调",data),
|
||||
// getOSDTimeCallBack: (data) => console.log("获取OSDTime回调",data),
|
||||
// handleSuccess: (data) = function(){console.log("播放成功回调",data)},
|
||||
// handleError: (data) => console.log("播放失败回调",data),
|
||||
// })
|
||||
}
|
||||
})
|
||||
})
|
||||
function toStartTurn(direction) {
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url: `${ajax_url}farm/app/Index/ysStartTurn`,
|
||||
dataType: 'json',
|
||||
data: {
|
||||
id,
|
||||
direction
|
||||
},
|
||||
success: function(data) {
|
||||
let {msg=''} = data.data
|
||||
if(msg && msg!='操作成功'){
|
||||
alert(msg)
|
||||
}
|
||||
setTimeout(()=>{
|
||||
toStopTurn()
|
||||
},500)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function toStopTurn() {
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url: `${ajax_url}farm/app/Index/ysStopTurn`,
|
||||
dataType: 'json',
|
||||
data: {id},
|
||||
success: function(data) {
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user