You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2019/02/28 16:34:21 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2017] initial
attempt to fix Safari permission multimedia issue
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push:
new 9787b39 [OPENMEETINGS-2017] initial attempt to fix Safari permission multimedia issue
9787b39 is described below
commit 9787b39e6cd607d016e1aad3574c13411dc0c086
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Feb 28 23:31:36 2019 +0700
[OPENMEETINGS-2017] initial attempt to fix Safari permission multimedia issue
---
.../apache/openmeetings/web/room/RoomPanel.html | 3 +++
.../apache/openmeetings/web/room/raw-video-util.js | 24 ++++++++++++++++++
.../apache/openmeetings/web/room/wb/raw-player.js | 29 ++++++++++++++++++----
3 files changed, 51 insertions(+), 5 deletions(-)
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
index a0f3dda..2ea2711 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
@@ -123,6 +123,9 @@
<button class="share-start-stop" wicket:message="data-start:732, data-stop:733"><wicket:message key="732"/></button>
<button class="record-start-stop ui-state-error" wicket:message="data-start:871, data-stop:872"><wicket:message key="871"/></button>
</div>
+ <div id="ask-permission" title="Ask Permission" data-btn-ok="OK">
+ Extra permission is required to play audio/video. Press OK to play video.
+ </div>
</div>
</wicket:panel>
</html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
index dcf7304..e14656a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
@@ -135,6 +135,29 @@ var VideoUtil = (function() {
function _setPos(v, pos) {
v.dialog('widget').css(pos);
}
+ function _askPermission(callback) {
+ const perm = $('#ask-permission');
+ if (undefined === perm.dialog('instance')) {
+ perm.data('callbacks', [callback]).dialog({
+ appendTo: '.room.holder .room.box'
+ , autoOpen: true
+ , buttons: [
+ {
+ text: perm.data('btn-ok')
+ , click: function() {
+ while (perm.data('callbacks').length > 0) {
+ perm.data('callbacks').pop()();
+ }
+ $(this).dialog('close');
+ }
+ }
+ ]
+ });
+ } else if (!perm.dialog('isOpen')) {
+ perm.dialog('open')
+ }
+ perm.data('callbacks').push(callback);
+ }
self.getVid = _getVid;
self.isSharing = _isSharing;
@@ -155,5 +178,6 @@ var VideoUtil = (function() {
};
self.isEdge = _isEdge;
self.setPos = _setPos;
+ self.askPermission = _askPermission;
return self;
})();
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-player.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-player.js
index b273d14..83e16d4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-player.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-player.js
@@ -83,9 +83,15 @@ var Player = (function() {
}
player.create = function(canvas, _o, wb) {
- const vid = $('<video>').hide().attr('class', 'wb-video slide-' + canvas.slide).attr('id', 'wb-video-' + _o.uid)
- .attr("width", _o.width).attr("height", _o.height)
- .append($('<source>').attr('type', 'video/mp4').attr('src', _o._src));
+ const vid = $('<video>').hide()
+ .attr('class', 'wb-video slide-' + canvas.slide)
+ .attr('id', 'wb-video-' + _o.uid)
+ .attr("width", _o.width)
+ .attr("height", _o.height)
+ .prop('controls', true)
+ .append($('<source>')
+ .attr('type', 'video/mp4')
+ .attr('src', _o._src));
$('#wb-tab-' + canvas.wbId).append(vid);
fabric.Image.fromURL(_o._poster, function(poster) {
poster.scaleX = poster.scaleY = _o.width / poster.getOriginalSize().width;
@@ -205,8 +211,21 @@ var Player = (function() {
if (group.status.paused) {
video.getElement().pause();
} else {
- video.getElement().play();
- fabric.util.requestAnimFrame(render);
+ const prom = video.getElement().play();
+ if (prom !== undefined) {
+ prom.then(function() {
+ fabric.util.requestAnimFrame(render);
+ }).catch(function(err) {
+ if ('NotAllowedError' === err.name) {
+ VideoUtil.askPermission(function() {
+ video.getElement().play();
+ fabric.util.requestAnimFrame(render);
+ });
+ }
+ });
+ } else {
+ fabric.util.requestAnimFrame(render);
+ }
}
}
group.setPlayable(wb.getRole());