Repository: openmeetings
Updated Branches:
  refs/heads/html5-video [created] 651c80944


[OPENMEETINGS-1649] basic stream listener is implemented


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/651c8094
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/651c8094
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/651c8094

Branch: refs/heads/html5-video
Commit: 651c80944c10cf694cbd56eb748b65a1de9f68da
Parents: 04bd734
Author: Maxim Solodovnik <[email protected]>
Authored: Wed May 24 13:01:38 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Wed May 24 13:01:38 2017 +0700

----------------------------------------------------------------------
 .../core/remote/ScopeApplicationAdapter.java    | 23 +++++++++++++++++++-
 .../installation/ImportInitvalues.java          |  2 +-
 .../org/apache/openmeetings/web/room/room.js    | 16 ++++++++++++++
 3 files changed, 39 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/651c8094/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
index cceaf2f..bab7d21 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
@@ -43,6 +43,7 @@ import java.util.Properties;
 import java.util.UUID;
 import java.util.concurrent.atomic.AtomicLong;
 
+import org.apache.commons.codec.binary.Base64;
 import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.core.remote.util.SessionVariablesUtil;
 import org.apache.openmeetings.core.util.WebSocketHelper;
@@ -82,6 +83,8 @@ import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IPendingServiceCallback;
 import org.red5.server.api.service.IServiceCapableConnection;
 import org.red5.server.api.stream.IBroadcastStream;
+import org.red5.server.api.stream.IStreamListener;
+import org.red5.server.api.stream.IStreamPacket;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -651,8 +654,26 @@ public class ScopeApplicationAdapter extends 
MultiThreadedApplicationAdapter imp
                                        return false;
                                }
                        }.start();
-                       JSONObject obj = new JSONObject().put("uid", 
c.getPublicSID()).put("screenShare", c.isScreenClient());
+                       final Long roomId = c.getRoomId();
+                       final JSONObject obj = new JSONObject().put("uid", 
c.getPublicSID()).put("screenShare", c.isScreenClient());
                        WebSocketHelper.sendRoom(new 
TextRoomMessage(c.getRoomId(), c.getUserId(), RoomMessage.Type.newStream, 
obj.toString()));
+                       stream.addStreamListener(new IStreamListener() {
+                               @Override
+                               public void packetReceived(IBroadcastStream 
str, IStreamPacket packet) {
+                                       byte[] b = new 
byte[packet.getData().limit()];
+                                       packet.getData().duplicate().get(b);
+                                       JSONObject msg = new JSONObject()
+                                               .put("type", "stream")
+                                               .put("msg", new 
JSONObject(obj.toString())
+                                                               
.put("publishedName", str.getPublishedName())
+                                                               .put("packet", 
new JSONObject()
+                                                                               
.put("type", packet.getDataType())
+                                                                               
.put("time", packet.getTimestamp())
+                                                                               
.put("data", Base64.encodeBase64String(b))
+                                                               ));
+                                       WebSocketHelper.sendRoom(roomId, msg, 
null, null);
+                               }
+                       });
                } catch (Exception err) {
                        log.error("[streamPublishStart]", err);
                }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/651c8094/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 
b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
index c620c7e..dc67542 100644
--- 
a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
+++ 
b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -362,7 +362,7 @@ public class ImportInitvalues {
                cfgDao.add(CONFIG_GOOGLE_ANALYTICS_CODE, null, null, "Code for 
Google Analytics");
                cfgDao.add(CONFIG_FLASH_SECURE, "no", null, "Wether it should 
try to connect to rtmps first or not\nValid values: yes / no");
                cfgDao.add(CONFIG_FLASH_SECURE_PROXY, "none", null, "The 
setting for the NetConnection default settings is 'none'\n set to value 'best' 
if you are trying to use rtmp over native SSL");
-               cfgDao.add(CONFIG_FLASH_VIDEO_CODEC, "h263", null, "Camera 
codecType, possible values: 'h263', 'h264'");
+               cfgDao.add(CONFIG_FLASH_VIDEO_CODEC, "h264", null, "Camera 
codecType, possible values: 'h263', 'h264'");
                cfgDao.add(CONFIG_FLASH_VIDEO_FPS, "30", null, "Camera FPS, 
should be positive number in range (0, 60]");
 
                cfgDao.add(CONFIG_HEADER_XFRAME, HEADER_XFRAME_SAMEORIGIN, 
null, "Value for 'X-Frame-Options' header (default: DENY), more info: 
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options";);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/651c8094/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
index 866d033..9dec30a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
@@ -225,6 +225,20 @@ function roomClosed(jqEvent, msg) {
                ]
        });
 }
+function roomWsHandler(jqEvent, msg) {
+       try {
+               var m = jQuery.parseJSON(msg);
+               if (m) {
+                       switch(m.type) {
+                               case "stream":
+                                       console.log(m.msg);
+                                       break;
+                       }
+               }
+       } catch (err) {
+               //no-op
+       }
+}
 function roomLoad() {
        $(".room.sidebar.left").ready(function() {
                setRoomSizes();
@@ -240,11 +254,13 @@ function roomLoad() {
        });
        Wicket.Event.subscribe("/websocket/closed", roomClosed);
        Wicket.Event.subscribe("/websocket/error", roomClosed);
+       Wicket.Event.subscribe("/websocket/message", roomWsHandler);
 }
 function roomUnload() {
        $(window).off('resize.openmeetings');
        Wicket.Event.unsubscribe("/websocket/closed", roomClosed);
        Wicket.Event.unsubscribe("/websocket/error", roomClosed);
+       Wicket.Event.subscribe("/websocket/message", roomWsHandler);
        if (!!WbArea) {
                WbArea.destroy();
        }

Reply via email to