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">
 		&nbsp;
 	</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               -->