mirror of https://github.com/OpenVidu/openvidu.git
Merge remote-tracking branch 'upstream/master'
commit
4e2be64c46
|
@ -8,7 +8,7 @@
|
||||||
"sdp-translator": "0.1.24",
|
"sdp-translator": "0.1.24",
|
||||||
"ua-parser-js": "0.7.17",
|
"ua-parser-js": "0.7.17",
|
||||||
"uuid": "3.1.0",
|
"uuid": "3.1.0",
|
||||||
"webrtc-adapter": "6.1.1",
|
"webrtc-adapter": "6.1.4",
|
||||||
"wolfy87-eventemitter": "5.2.4"
|
"wolfy87-eventemitter": "5.2.4"
|
||||||
},
|
},
|
||||||
"description": "OpenVidu Browser",
|
"description": "OpenVidu Browser",
|
||||||
|
@ -32,5 +32,5 @@
|
||||||
"updatetsc": "cd ts/OpenViduInternal && tsc && cd ../OpenVidu && tsc && cd ../.. && tsc --declaration ts/OpenVidu/index.ts --outDir lib --sourceMap --lib dom,es5,es2015.promise,scripthost && tsc --declaration ts/OpenVidu/Main.ts --outDir lib --sourceMap --lib dom,es5,es2015.promise,scripthost"
|
"updatetsc": "cd ts/OpenViduInternal && tsc && cd ../OpenVidu && tsc && cd ../.. && tsc --declaration ts/OpenVidu/index.ts --outDir lib --sourceMap --lib dom,es5,es2015.promise,scripthost && tsc --declaration ts/OpenVidu/Main.ts --outDir lib --sourceMap --lib dom,es5,es2015.promise,scripthost"
|
||||||
},
|
},
|
||||||
"types": "lib/OpenVidu/index.d.ts",
|
"types": "lib/OpenVidu/index.d.ts",
|
||||||
"version": "1.8.0"
|
"version": "1.9.0-beta-1"
|
||||||
}
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -94,8 +94,7 @@ function bufferizeCandidates(pc, onerror) {
|
||||||
if (this.signalingState === 'stable') {
|
if (this.signalingState === 'stable') {
|
||||||
while (candidatesQueue.length) {
|
while (candidatesQueue.length) {
|
||||||
var entry = candidatesQueue.shift()
|
var entry = candidatesQueue.shift()
|
||||||
|
pc.addIceCandidate(entry.candidate, entry.callback, entry.callback)
|
||||||
this.addIceCandidate(entry.candidate, entry.callback, entry.callback)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -332,7 +331,7 @@ function WebRtcPeer(mode, options, callback) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
pc.ontrack = options.onaddstream
|
pc.onaddstream = options.onaddstream
|
||||||
pc.onnegotiationneeded = options.onnegotiationneeded
|
pc.onnegotiationneeded = options.onnegotiationneeded
|
||||||
this.on('newListener', function (event, listener) {
|
this.on('newListener', function (event, listener) {
|
||||||
if (event === 'icecandidate' || event === 'candidategatheringdone') {
|
if (event === 'icecandidate' || event === 'candidategatheringdone') {
|
||||||
|
@ -424,19 +423,18 @@ function WebRtcPeer(mode, options, callback) {
|
||||||
|
|
||||||
function setRemoteVideo() {
|
function setRemoteVideo() {
|
||||||
if (remoteVideo) {
|
if (remoteVideo) {
|
||||||
var stream = pc.getRemoteStreams()[0]
|
|
||||||
var url = stream ? URL.createObjectURL(stream) : ''
|
|
||||||
|
|
||||||
remoteVideo.pause()
|
remoteVideo.pause()
|
||||||
remoteVideo.src = url
|
|
||||||
remoteVideo.load()
|
|
||||||
|
|
||||||
logger.debug('Remote URL:', url)
|
var stream = pc.getRemoteStreams()[0]
|
||||||
|
remoteVideo.srcObject = stream
|
||||||
|
logger.debug('Remote stream:', stream)
|
||||||
|
|
||||||
|
remoteVideo.load()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.showLocalVideo = function () {
|
this.showLocalVideo = function () {
|
||||||
localVideo.src = URL.createObjectURL(videoStream)
|
localVideo.srcObject = videoStream
|
||||||
localVideo.muted = true
|
localVideo.muted = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -621,14 +619,14 @@ function WebRtcPeer(mode, options, callback) {
|
||||||
this.on('_dispose', function () {
|
this.on('_dispose', function () {
|
||||||
if (localVideo) {
|
if (localVideo) {
|
||||||
localVideo.pause()
|
localVideo.pause()
|
||||||
localVideo.src = ''
|
localVideo.srcObject = null
|
||||||
localVideo.load()
|
localVideo.load()
|
||||||
//Unmute local video in case the video tag is later used for remote video
|
//Unmute local video in case the video tag is later used for remote video
|
||||||
localVideo.muted = false
|
localVideo.muted = false
|
||||||
}
|
}
|
||||||
if (remoteVideo) {
|
if (remoteVideo) {
|
||||||
remoteVideo.pause()
|
remoteVideo.pause()
|
||||||
remoteVideo.src = ''
|
remoteVideo.srcObject = null
|
||||||
remoteVideo.load()
|
remoteVideo.load()
|
||||||
}
|
}
|
||||||
self.removeAllListeners()
|
self.removeAllListeners()
|
||||||
|
|
|
@ -242,7 +242,7 @@ export class OpenVidu {
|
||||||
let browser = DetectRTC.browser.name;
|
let browser = DetectRTC.browser.name;
|
||||||
let version = DetectRTC.browser.version;
|
let version = DetectRTC.browser.version;
|
||||||
|
|
||||||
if ((browser !== 'Chrome') && (browser !== 'Firefox') && (browser !== 'Opera')) {
|
if ((browser !== 'Chrome') && (browser !== 'Firefox') && (browser !== 'Opera') && (browser !== 'Safari')) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return defaultWebRTCSupport ? 1 : 0;
|
return defaultWebRTCSupport ? 1 : 0;
|
||||||
|
|
|
@ -309,6 +309,7 @@ export class Stream {
|
||||||
return this.video;
|
return this.video;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.isReadyToPublish = true;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>io.openvidu</groupId>
|
<groupId>io.openvidu</groupId>
|
||||||
<artifactId>openvidu-parent</artifactId>
|
<artifactId>openvidu-parent</artifactId>
|
||||||
<version>1.1.0</version>
|
<version>1.9.0-beta-1</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>openvidu-client</artifactId>
|
<artifactId>openvidu-client</artifactId>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>io.openvidu</groupId>
|
<groupId>io.openvidu</groupId>
|
||||||
<artifactId>openvidu-parent</artifactId>
|
<artifactId>openvidu-parent</artifactId>
|
||||||
<version>1.1.0</version>
|
<version>1.9.0-beta-1</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>openvidu-java-client</artifactId>
|
<artifactId>openvidu-java-client</artifactId>
|
||||||
|
|
|
@ -2,20 +2,20 @@ FROM ubuntu:16.04
|
||||||
MAINTAINER miguel.rodriguez@cocodin.com
|
MAINTAINER miguel.rodriguez@cocodin.com
|
||||||
|
|
||||||
# Install Kurento Media Server (KMS)
|
# Install Kurento Media Server (KMS)
|
||||||
RUN echo "deb http://ubuntu.kurento.org xenial kms6" | tee /etc/apt/sources.list.d/kurento.list \
|
RUN echo "deb http://ubuntu.openvidu.io/6.7.0 xenial kms6" | tee /etc/apt/sources.list.d/kurento.list \
|
||||||
&& apt-key adv --keyserver keyserver.ubuntu.com --recv 2F819BC0 \
|
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83 \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get -y dist-upgrade \
|
&& apt-get -y dist-upgrade \
|
||||||
&& apt-get -y install kurento-media-server-6.0 \
|
&& apt-get -y install kurento-media-server \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& apt-get -y install openh264-gst-plugins-bad-1.5
|
||||||
|
|
||||||
COPY kms.sh /kms.sh
|
COPY kms.sh /kms.sh
|
||||||
|
|
||||||
# Install Java
|
# Install Java
|
||||||
RUN apt-get update && apt-get install -y openjdk-8-jdk && rm -rf /var/lib/apt/lists/*
|
RUN apt-get install -y openjdk-8-jdk
|
||||||
|
|
||||||
# Install supervisor
|
# Install supervisor
|
||||||
RUN apt-get update && apt-get install -y supervisor && rm -rf /var/lib/apt/lists/*
|
RUN apt-get install -y supervisor && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Configure supervisor
|
# Configure supervisor
|
||||||
RUN mkdir -p /var/log/supervisor
|
RUN mkdir -p /var/log/supervisor
|
||||||
|
|
|
@ -5,14 +5,14 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>io.openvidu</groupId>
|
<groupId>io.openvidu</groupId>
|
||||||
<artifactId>openvidu-parent</artifactId>
|
<artifactId>openvidu-parent</artifactId>
|
||||||
<version>1.1.0</version>
|
<version>1.9.0-beta-1</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>openvidu-server</artifactId>
|
<artifactId>openvidu-server</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>OpenVidu Server</name>
|
<name>OpenVidu Server</name>
|
||||||
<version>1.8.0</version>
|
<version>1.9.0-beta-1</version>
|
||||||
<description>OpenVidu Server</description>
|
<description>OpenVidu Server</description>
|
||||||
<url>https://github.com/OpenVidu/openvidu</url>
|
<url>https://github.com/OpenVidu/openvidu</url>
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
"@angular/router": "5.0.5",
|
"@angular/router": "5.0.5",
|
||||||
"core-js": "2.5.1",
|
"core-js": "2.5.1",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
"openvidu-browser": "1.8.0",
|
"openvidu-browser": "1.9.0-beta-1",
|
||||||
"rxjs": "5.5.3",
|
"rxjs": "5.5.3",
|
||||||
"zone.js": "0.8.18"
|
"zone.js": "0.8.18"
|
||||||
},
|
},
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"sources":["webpack/bootstrap a86aab8ac212e4073a88"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAY,2BAA2B;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA,kDAA0C,oBAAoB,WAAW","file":"inline.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t\"inline\": 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a86aab8ac212e4073a88"],"sourceRoot":"webpack:///"}
|
{"version":3,"sources":["webpack/bootstrap 1569d3edbc6f13a7612a"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAY,2BAA2B;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA,kDAA0C,oBAAoB,WAAW","file":"inline.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t\"inline\": 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 1569d3edbc6f13a7612a"],"sourceRoot":"webpack:///"}
|
|
@ -2322,7 +2322,7 @@ function bufferizeCandidates(pc, onerror) {
|
||||||
if (this.signalingState === 'stable') {
|
if (this.signalingState === 'stable') {
|
||||||
while (candidatesQueue.length) {
|
while (candidatesQueue.length) {
|
||||||
var entry = candidatesQueue.shift();
|
var entry = candidatesQueue.shift();
|
||||||
this.addIceCandidate(entry.candidate, entry.callback, entry.callback);
|
pc.addIceCandidate(entry.candidate, entry.callback, entry.callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -2528,7 +2528,7 @@ function WebRtcPeer(mode, options, callback) {
|
||||||
candidategatheringdone = true;
|
candidategatheringdone = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
pc.ontrack = options.onaddstream;
|
pc.onaddstream = options.onaddstream;
|
||||||
pc.onnegotiationneeded = options.onnegotiationneeded;
|
pc.onnegotiationneeded = options.onnegotiationneeded;
|
||||||
this.on('newListener', function (event, listener) {
|
this.on('newListener', function (event, listener) {
|
||||||
if (event === 'icecandidate' || event === 'candidategatheringdone') {
|
if (event === 'icecandidate' || event === 'candidategatheringdone') {
|
||||||
|
@ -2604,16 +2604,15 @@ function WebRtcPeer(mode, options, callback) {
|
||||||
};
|
};
|
||||||
function setRemoteVideo() {
|
function setRemoteVideo() {
|
||||||
if (remoteVideo) {
|
if (remoteVideo) {
|
||||||
var stream = pc.getRemoteStreams()[0];
|
|
||||||
var url = stream ? URL.createObjectURL(stream) : '';
|
|
||||||
remoteVideo.pause();
|
remoteVideo.pause();
|
||||||
remoteVideo.src = url;
|
var stream = pc.getRemoteStreams()[0];
|
||||||
|
remoteVideo.srcObject = stream;
|
||||||
|
logger.debug('Remote stream:', stream);
|
||||||
remoteVideo.load();
|
remoteVideo.load();
|
||||||
logger.debug('Remote URL:', url);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.showLocalVideo = function () {
|
this.showLocalVideo = function () {
|
||||||
localVideo.src = URL.createObjectURL(videoStream);
|
localVideo.srcObject = videoStream;
|
||||||
localVideo.muted = true;
|
localVideo.muted = true;
|
||||||
};
|
};
|
||||||
this.send = function (data) {
|
this.send = function (data) {
|
||||||
|
@ -2770,14 +2769,14 @@ function WebRtcPeer(mode, options, callback) {
|
||||||
this.on('_dispose', function () {
|
this.on('_dispose', function () {
|
||||||
if (localVideo) {
|
if (localVideo) {
|
||||||
localVideo.pause();
|
localVideo.pause();
|
||||||
localVideo.src = '';
|
localVideo.srcObject = null;
|
||||||
localVideo.load();
|
localVideo.load();
|
||||||
//Unmute local video in case the video tag is later used for remote video
|
//Unmute local video in case the video tag is later used for remote video
|
||||||
localVideo.muted = false;
|
localVideo.muted = false;
|
||||||
}
|
}
|
||||||
if (remoteVideo) {
|
if (remoteVideo) {
|
||||||
remoteVideo.pause();
|
remoteVideo.pause();
|
||||||
remoteVideo.src = '';
|
remoteVideo.srcObject = null;
|
||||||
remoteVideo.load();
|
remoteVideo.load();
|
||||||
}
|
}
|
||||||
self.removeAllListeners();
|
self.removeAllListeners();
|
||||||
|
@ -3160,7 +3159,7 @@ var OpenVidu = /** @class */ (function () {
|
||||||
var defaultWebRTCSupport = DetectRTC.isWebRTCSupported;
|
var defaultWebRTCSupport = DetectRTC.isWebRTCSupported;
|
||||||
var browser = DetectRTC.browser.name;
|
var browser = DetectRTC.browser.name;
|
||||||
var version = DetectRTC.browser.version;
|
var version = DetectRTC.browser.version;
|
||||||
if ((browser !== 'Chrome') && (browser !== 'Firefox') && (browser !== 'Opera')) {
|
if ((browser !== 'Chrome') && (browser !== 'Firefox') && (browser !== 'Opera') && (browser !== 'Safari')) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -5071,6 +5070,7 @@ var Stream = /** @class */ (function () {
|
||||||
this.isReadyToPublish = true;
|
this.isReadyToPublish = true;
|
||||||
return this.video;
|
return this.video;
|
||||||
}
|
}
|
||||||
|
this.isReadyToPublish = true;
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
Stream.prototype.playThumbnail = function (thumbnailId) {
|
Stream.prototype.playThumbnail = function (thumbnailId) {
|
||||||
|
@ -12832,12 +12832,16 @@ module.exports = function(window) {
|
||||||
return {
|
return {
|
||||||
name: {
|
name: {
|
||||||
PermissionDeniedError: 'NotAllowedError',
|
PermissionDeniedError: 'NotAllowedError',
|
||||||
InvalidStateError: 'NotReadableError',
|
PermissionDismissedError: 'NotAllowedError',
|
||||||
|
InvalidStateError: 'NotAllowedError',
|
||||||
DevicesNotFoundError: 'NotFoundError',
|
DevicesNotFoundError: 'NotFoundError',
|
||||||
ConstraintNotSatisfiedError: 'OverconstrainedError',
|
ConstraintNotSatisfiedError: 'OverconstrainedError',
|
||||||
TrackStartError: 'NotReadableError',
|
TrackStartError: 'NotReadableError',
|
||||||
MediaDeviceFailedDueToShutdown: 'NotReadableError',
|
MediaDeviceFailedDueToShutdown: 'NotAllowedError',
|
||||||
MediaDeviceKillSwitchOn: 'NotReadableError'
|
MediaDeviceKillSwitchOn: 'NotAllowedError',
|
||||||
|
TabCaptureError: 'AbortError',
|
||||||
|
ScreenCaptureError: 'AbortError',
|
||||||
|
DeviceCaptureError: 'AbortError'
|
||||||
}[e.name] || e.name,
|
}[e.name] || e.name,
|
||||||
message: e.message,
|
message: e.message,
|
||||||
constraint: e.constraintName,
|
constraint: e.constraintName,
|
||||||
|
@ -12959,8 +12963,8 @@ module.exports = {
|
||||||
shimRTCIceCandidate: function(window) {
|
shimRTCIceCandidate: function(window) {
|
||||||
// foundation is arbitrarily chosen as an indicator for full support for
|
// foundation is arbitrarily chosen as an indicator for full support for
|
||||||
// https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface
|
// https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface
|
||||||
if (window.RTCIceCandidate && 'foundation' in
|
if (!window.RTCIceCandidate || (window.RTCIceCandidate && 'foundation' in
|
||||||
window.RTCIceCandidate.prototype) {
|
window.RTCIceCandidate.prototype)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12973,23 +12977,27 @@ module.exports = {
|
||||||
args.candidate = args.candidate.substr(2);
|
args.candidate = args.candidate.substr(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Augment the native candidate with the parsed fields.
|
if (args.candidate && args.candidate.length) {
|
||||||
var nativeCandidate = new NativeRTCIceCandidate(args);
|
// Augment the native candidate with the parsed fields.
|
||||||
var parsedCandidate = SDPUtils.parseCandidate(args.candidate);
|
var nativeCandidate = new NativeRTCIceCandidate(args);
|
||||||
var augmentedCandidate = Object.assign(nativeCandidate,
|
var parsedCandidate = SDPUtils.parseCandidate(args.candidate);
|
||||||
parsedCandidate);
|
var augmentedCandidate = Object.assign(nativeCandidate,
|
||||||
|
parsedCandidate);
|
||||||
|
|
||||||
// Add a serializer that does not serialize the extra attributes.
|
// Add a serializer that does not serialize the extra attributes.
|
||||||
augmentedCandidate.toJSON = function() {
|
augmentedCandidate.toJSON = function() {
|
||||||
return {
|
return {
|
||||||
candidate: augmentedCandidate.candidate,
|
candidate: augmentedCandidate.candidate,
|
||||||
sdpMid: augmentedCandidate.sdpMid,
|
sdpMid: augmentedCandidate.sdpMid,
|
||||||
sdpMLineIndex: augmentedCandidate.sdpMLineIndex,
|
sdpMLineIndex: augmentedCandidate.sdpMLineIndex,
|
||||||
usernameFragment: augmentedCandidate.usernameFragment,
|
usernameFragment: augmentedCandidate.usernameFragment,
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
return augmentedCandidate;
|
||||||
return augmentedCandidate;
|
}
|
||||||
|
return new NativeRTCIceCandidate(args);
|
||||||
};
|
};
|
||||||
|
window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype;
|
||||||
|
|
||||||
// Hook up the augmented candidate in onicecandidate and
|
// Hook up the augmented candidate in onicecandidate and
|
||||||
// addEventListener('icecandidate', ...)
|
// addEventListener('icecandidate', ...)
|
||||||
|
@ -13189,6 +13197,10 @@ module.exports = {
|
||||||
},
|
},
|
||||||
|
|
||||||
shimSendThrowTypeError: function(window) {
|
shimSendThrowTypeError: function(window) {
|
||||||
|
if (!window.RTCPeerConnection) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Note: Although Firefox >= 57 has a native implementation, the maximum
|
// Note: Although Firefox >= 57 has a native implementation, the maximum
|
||||||
// message size can be reset for all data channels at a later stage.
|
// message size can be reset for all data channels at a later stage.
|
||||||
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831
|
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831
|
||||||
|
@ -13243,16 +13255,11 @@ module.exports = {
|
||||||
var browserDetails = utils.detectBrowser(window);
|
var browserDetails = utils.detectBrowser(window);
|
||||||
|
|
||||||
if (window.RTCIceGatherer) {
|
if (window.RTCIceGatherer) {
|
||||||
// ORTC defines an RTCIceCandidate object but no constructor.
|
|
||||||
// Not implemented in Edge.
|
|
||||||
if (!window.RTCIceCandidate) {
|
if (!window.RTCIceCandidate) {
|
||||||
window.RTCIceCandidate = function(args) {
|
window.RTCIceCandidate = function(args) {
|
||||||
return args;
|
return args;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// ORTC does not have a session description object but
|
|
||||||
// other browsers (i.e. Chrome) that will support both PC and ORTC
|
|
||||||
// in the future might have this defined already.
|
|
||||||
if (!window.RTCSessionDescription) {
|
if (!window.RTCSessionDescription) {
|
||||||
window.RTCSessionDescription = function(args) {
|
window.RTCSessionDescription = function(args) {
|
||||||
return args;
|
return args;
|
||||||
|
@ -13291,6 +13298,11 @@ module.exports = {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// Edge currently only implements the RTCDtmfSender, not the
|
||||||
|
// RTCDTMFSender alias. See http://draft.ortc.org/#rtcdtmfsender2*
|
||||||
|
if (window.RTCDtmfSender && !window.RTCDTMFSender) {
|
||||||
|
window.RTCDTMFSender = window.RTCDtmfSender;
|
||||||
|
}
|
||||||
|
|
||||||
window.RTCPeerConnection =
|
window.RTCPeerConnection =
|
||||||
shimRTCPeerConnection(window, browserDetails.version);
|
shimRTCPeerConnection(window, browserDetails.version);
|
||||||
|
@ -14264,7 +14276,7 @@ module.exports = {
|
||||||
result.browser = 'edge';
|
result.browser = 'edge';
|
||||||
result.version = extractVersion(navigator.userAgent,
|
result.version = extractVersion(navigator.userAgent,
|
||||||
/Edge\/(\d+).(\d+)$/, 2);
|
/Edge\/(\d+).(\d+)$/, 2);
|
||||||
} else if (navigator.mediaDevices &&
|
} else if (window.RTCPeerConnection &&
|
||||||
navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { // Safari.
|
navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { // Safari.
|
||||||
result.browser = 'safari';
|
result.browser = 'safari';
|
||||||
result.version = extractVersion(navigator.userAgent,
|
result.version = extractVersion(navigator.userAgent,
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -9,11 +9,12 @@ RUN apt-get update && apt-get -y upgrade
|
||||||
RUN apt-get install -y software-properties-common && apt-get install -y --no-install-recommends apt-utils
|
RUN apt-get install -y software-properties-common && apt-get install -y --no-install-recommends apt-utils
|
||||||
|
|
||||||
# Install Kurento Media Server (KMS)
|
# Install Kurento Media Server (KMS)
|
||||||
RUN echo "deb http://ubuntu.kurento.org xenial kms6" | tee /etc/apt/sources.list.d/kurento.list \
|
RUN echo "deb http://ubuntu.openvidu.io/6.7.0 xenial kms6" | tee /etc/apt/sources.list.d/kurento.list \
|
||||||
&& apt-key adv --keyserver keyserver.ubuntu.com --recv 2F819BC0 \
|
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83 \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get -y dist-upgrade \
|
&& apt-get -y dist-upgrade \
|
||||||
&& apt-get -y install kurento-media-server-6.0
|
&& apt-get -y install kurento-media-server \
|
||||||
|
&& apt-get -y install openh264-gst-plugins-bad-1.5
|
||||||
|
|
||||||
# Install Node
|
# Install Node
|
||||||
RUN apt-get update && apt-get install -y curl
|
RUN apt-get update && apt-get install -y curl
|
||||||
|
|
|
@ -23,7 +23,7 @@ node('container') {
|
||||||
stage ('Environment Launch') {
|
stage ('Environment Launch') {
|
||||||
sh 'openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -subj "/CN=www.mydom.com/O=My Company LTD./C=US" -keyout openvidu/openvidu-testapp/dist/key.pem -out openvidu/openvidu-testapp/dist/cert.pem'
|
sh 'openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -subj "/CN=www.mydom.com/O=My Company LTD./C=US" -keyout openvidu/openvidu-testapp/dist/key.pem -out openvidu/openvidu-testapp/dist/cert.pem'
|
||||||
sh 'cd openvidu/openvidu-testapp/dist && http-server -S -p 4200 &> ../testapp.log &'
|
sh 'cd openvidu/openvidu-testapp/dist && http-server -S -p 4200 &> ../testapp.log &'
|
||||||
sh 'service kurento-media-server-6.0 start'
|
sh 'service kurento-media-server start'
|
||||||
sh 'cd openvidu/openvidu-server && mvn -DskipTests=true clean -DskipTests=true compile -DskipTests=true package -DskipTests=true -Dopenvidu.publicurl=https://172.17.0.1:8443/ exec:java &> openvidu-server.log &'
|
sh 'cd openvidu/openvidu-server && mvn -DskipTests=true clean -DskipTests=true compile -DskipTests=true package -DskipTests=true -Dopenvidu.publicurl=https://172.17.0.1:8443/ exec:java &> openvidu-server.log &'
|
||||||
sh 'until $(curl --insecure --output /dev/null --silent --head --fail https://OPENVIDUAPP:MY_SECRET@localhost:8443/); do echo "Waiting for openvidu-server..."; sleep 5; done'
|
sh 'until $(curl --insecure --output /dev/null --silent --head --fail https://OPENVIDUAPP:MY_SECRET@localhost:8443/); do echo "Waiting for openvidu-server..."; sleep 5; done'
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>io.openvidu</groupId>
|
<groupId>io.openvidu</groupId>
|
||||||
<artifactId>openvidu-parent</artifactId>
|
<artifactId>openvidu-parent</artifactId>
|
||||||
<version>1.1.0</version>
|
<version>1.9.0-beta-1</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>openvidu-test-e2e</artifactId>
|
<artifactId>openvidu-test-e2e</artifactId>
|
||||||
|
|
|
@ -5,13 +5,14 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>io.openvidu</groupId>
|
<groupId>io.openvidu</groupId>
|
||||||
<artifactId>openvidu-parent</artifactId>
|
<artifactId>openvidu-parent</artifactId>
|
||||||
<version>1.1.0</version>
|
<version>1.9.0-beta-1</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>openvidu-test</artifactId>
|
<artifactId>openvidu-test</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>OpenVidu Test</name>
|
<name>OpenVidu Test</name>
|
||||||
|
<version>1.1.0</version>
|
||||||
<description>
|
<description>
|
||||||
OpenVidu Tests Framework
|
OpenVidu Tests Framework
|
||||||
|
|
||||||
|
|
|
@ -2,19 +2,19 @@ FROM ubuntu:16.04
|
||||||
MAINTAINER openvidu@gmail.com
|
MAINTAINER openvidu@gmail.com
|
||||||
|
|
||||||
# Install Kurento Media Server (KMS)
|
# Install Kurento Media Server (KMS)
|
||||||
RUN echo "deb http://ubuntu.kurento.org xenial kms6" | tee /etc/apt/sources.list.d/kurento.list \
|
RUN echo "deb http://ubuntu.openvidu.io/6.7.0 xenial kms6" | tee /etc/apt/sources.list.d/kurento.list \
|
||||||
&& apt-key adv --keyserver keyserver.ubuntu.com --recv 2F819BC0 \
|
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83 \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get -y dist-upgrade \
|
&& apt-get -y dist-upgrade \
|
||||||
&& apt-get -y install kurento-media-server-6.0 \
|
&& apt-get -y install kurento-media-server \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& apt-get -y install openh264-gst-plugins-bad-1.5
|
||||||
|
|
||||||
# Install Java
|
# Install Java
|
||||||
RUN apt-get update && apt-get install -y openjdk-8-jdk && rm -rf /var/lib/apt/lists/*
|
RUN apt-get install -y openjdk-8-jdk
|
||||||
|
|
||||||
# Configure Supervisor
|
# Configure Supervisor
|
||||||
RUN mkdir -p /var/log/supervisor
|
RUN mkdir -p /var/log/supervisor
|
||||||
RUN apt-get update && apt-get install -y supervisor && rm -rf /var/lib/apt/lists/*
|
RUN apt-get install -y supervisor && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Copy all files
|
# Copy all files
|
||||||
COPY kms.sh /kms.sh
|
COPY kms.sh /kms.sh
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
"colormap": "^2.2.0",
|
"colormap": "^2.2.0",
|
||||||
"core-js": "^2.4.1",
|
"core-js": "^2.4.1",
|
||||||
"hammerjs": "^2.0.8",
|
"hammerjs": "^2.0.8",
|
||||||
"openvidu-browser": "1.8.0",
|
"openvidu-browser": "1.9.0-beta-1",
|
||||||
"openvidu-node-client": "1.7.0",
|
"openvidu-node-client": "1.7.0",
|
||||||
"rxjs": "^5.4.2",
|
"rxjs": "^5.4.2",
|
||||||
"zone.js": "^0.8.14"
|
"zone.js": "^0.8.14"
|
||||||
|
@ -52,5 +52,5 @@
|
||||||
"start": "ng serve",
|
"start": "ng serve",
|
||||||
"test": "ng test"
|
"test": "ng test"
|
||||||
},
|
},
|
||||||
"version": "1.8.0"
|
"version": "1.9.0-beta-1"
|
||||||
}
|
}
|
4
pom.xml
4
pom.xml
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<groupId>io.openvidu</groupId>
|
<groupId>io.openvidu</groupId>
|
||||||
<artifactId>openvidu-parent</artifactId>
|
<artifactId>openvidu-parent</artifactId>
|
||||||
<version>1.1.0</version>
|
<version>1.9.0-beta-1</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<name>OpenVidu</name>
|
<name>OpenVidu</name>
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
</developers>
|
</developers>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<version.kurento>6.6.2</version.kurento>
|
<version.kurento>6.7.0</version.kurento>
|
||||||
<version.spring-boot>1.4.2.RELEASE</version.spring-boot>
|
<version.spring-boot>1.4.2.RELEASE</version.spring-boot>
|
||||||
<version.junit>4.12</version.junit>
|
<version.junit>4.12</version.junit>
|
||||||
<version.slf4j>1.7.13</version.slf4j>
|
<version.slf4j>1.7.13</version.slf4j>
|
||||||
|
|
Loading…
Reference in New Issue