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/03/03 12:47:20 UTC
[openmeetings] branch master updated: [OPENMEETINGS-1955] room
recording seems to work as expected
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 eeb02d2 [OPENMEETINGS-1955] room recording seems to work as expected
eeb02d2 is described below
commit eeb02d208f4f539c415b9696162cde2061a9840a
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Mar 3 19:46:57 2019 +0700
[OPENMEETINGS-1955] room recording seems to work as expected
---
.../core/converter/InterviewConverter.java | 4 +++-
.../org/apache/openmeetings/web/room/RoomPanel.java | 5 ++---
.../org/apache/openmeetings/web/room/raw-video.js | 2 +-
.../openmeetings/web/room/wb/InterviewWbPanel.html | 2 +-
.../openmeetings/web/room/wb/InterviewWbPanel.java | 20 +++++++++-----------
openmeetings-web/src/test/jetty/jetty-ssl.xml | 11 -----------
6 files changed, 16 insertions(+), 28 deletions(-)
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
index 1d12e99..f3d7890 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
@@ -280,8 +280,10 @@ public class InterviewConverter extends BaseConverter implements IRecordingConve
}
public static void add(List<PodPart> parts, long duration) {
- if (duration != 0L) {
+ if (duration > 19L) { // ffmpeg ignores durations less than 19ms, can hang
parts.add(new PodPart(duration));
+ } else {
+ log.warn("PodPart with duration less than 19ms found: {}", duration);
}
}
}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 211d2db..e267abd 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -170,7 +170,6 @@ public class RoomPanel extends BasePanel {
private void initVideos(AjaxRequestTarget target) {
StringBuilder sb = new StringBuilder();
- Client _c = getClient();
JSONArray streams = new JSONArray();
for (Client c: cm.listByRoom(getRoom().getId())) {
for (StreamDesc sd : c.getStreams()) {
@@ -180,7 +179,7 @@ public class RoomPanel extends BasePanel {
sb.append("VideoManager.play(").append(streams).append(", ").append(kHandler.getTurnServers()).append(");");
}
}
- if (interview && !streamProcessor.isRecording(r.getId()) && streams.length() > 0 && _c.hasRight(Right.moderator)) {
+ if (interview && streamProcessor.recordingAllowed(getClient())) {
sb.append("WbArea.setRecEnabled(true);");
}
if (!Strings.isEmpty(sb)) {
@@ -556,7 +555,7 @@ public class RoomPanel extends BasePanel {
if (interview && _c.hasRight(Right.moderator)) {
if (streamProcessor.isRecording(r.getId())) {
handler.appendJavaScript("if (typeof(WbArea) === 'object') {WbArea.setRecStarted(true);}");
- } else {
+ } else if (streamProcessor.recordingAllowed(getClient())) {
boolean hasStreams = false;
for (Client cl : cm.listByRoom(r.getId())) {
if (!cl.getStreams().isEmpty()) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
index d115d8b..e16fd49 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
@@ -354,7 +354,6 @@ var Video = (function() {
sd.self = sd.cuid === opts.uid;
const contSel = _initContainer(_id, name, opts);
v = $('#' + _id);
- t = v.parent().find('.ui-dialog-titlebar').attr('title', name);
f = v.find('.footer');
if (!sd.self && isSharing) {
Sharer.close();
@@ -379,6 +378,7 @@ var Video = (function() {
if (!isSharing && !isRecording) {
_initCamDialog();
}
+ t = v.parent().find('.ui-dialog-titlebar').attr('title', name);
v.on('remove', _cleanup);
vc = v.find('.video');
vc.width(_w).height(_h);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.html
index 2de9596..cb610d9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.html
@@ -23,7 +23,7 @@
<div class="pod-area" style="width: 1000px;height: 600px;">
<div class="pod-big"></div>
</div>
- <div class="rec-btn ui-state-error" wicket:message="data-title-start:871,data-title-stop:872">
+ <div class="rec-btn ui-state-error" wicket:message="data-title-start:871, data-title-stop:872">
</div>
</wicket:panel>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
index c047835..263456e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
@@ -55,17 +55,15 @@ public class InterviewWbPanel extends AbstractWbPanel {
@Override
protected void processWbAction(WbAction a, JSONObject obj, AjaxRequestTarget target) throws IOException {
Client c = rp.getClient();
- if (streamProcessor.recordingAllowed(c)) {
- switch (a) {
- case startRecording:
- streamProcessor.startRecording(c);
- break;
- case stopRecording:
- streamProcessor.stopRecording(c);
- break;
- default:
- //no-op
- }
+ switch (a) {
+ case startRecording:
+ streamProcessor.startRecording(c);
+ break;
+ case stopRecording:
+ streamProcessor.stopRecording(c);
+ break;
+ default:
+ //no-op
}
}
}
diff --git a/openmeetings-web/src/test/jetty/jetty-ssl.xml b/openmeetings-web/src/test/jetty/jetty-ssl.xml
index a739639..10f6497 100644
--- a/openmeetings-web/src/test/jetty/jetty-ssl.xml
+++ b/openmeetings-web/src/test/jetty/jetty-ssl.xml
@@ -26,17 +26,6 @@
<Set name="KeyStorePassword"><Property name="jetty.keystore.password" default="openmeetings"/></Set>
<Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="openmeetings"/></Set>
<Set name="EndpointIdentificationAlgorithm"></Set>
- <Set name="ExcludeCipherSuites">
- <Array type="String">
- <Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
- <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item>
- <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item>
- <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item>
- <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
- <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item>
- <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item>
- </Array>
- </Set>
<!-- =========================================================== -->
<!-- Create a TLS specific HttpConfiguration based on the -->
<!-- common HttpConfiguration defined in jetty.xml -->