コード例 #1
0
 @Override
 public void roomStop(IScope scope) {
   log.debug(APP + ":roomStop " + scope.getName());
   layoutApplication.destroyRoom(scope.getName());
   if (!hasSharedObject(scope, LAYOUT_SO)) {
     clearSharedObjects(scope, LAYOUT_SO);
   }
 }
コード例 #2
0
 @Override
 public boolean roomStart(IScope scope) {
   log.debug(APP + ":roomStart " + scope.getName());
   layoutApplication.createRoom(scope.getName());
   if (!hasSharedObject(scope, LAYOUT_SO)) {
     if (createSharedObject(scope, LAYOUT_SO, false)) {
       return true;
     }
   }
   log.error("Failed to start room " + scope.getName());
   return false;
 }
コード例 #3
0
  @Override
  public void roomStop(IScope room) {
    log.debug("Stopping room [" + room.getName() + "].");
    super.roomStop(room);
    assert participantsApplication != null;
    participantsApplication.destroyRoom(room.getName());
    BigBlueButtonSession bbbSession = getBbbSession();
    assert bbbSession != null;

    /** Need to figure out if the next 2 lines should be removed. (ralam nov 25, 2010). */
    assert recorderApplication != null;
    recorderApplication.destroyRecordSession(bbbSession.getSessionName());

    log.debug("Stopped room [" + room.getName() + "].");
  }
コード例 #4
0
  @Override
  public boolean roomStart(IScope room) {
    log.debug("Starting room [" + room.getName() + "].");
    assert participantsApplication != null;

    return super.roomStart(room);
  }
コード例 #5
0
  /**
   * Starts transcoding this stream. This method is a no-op if this stream is already a stream copy
   * created by this transcoder.
   *
   * @param aStream The stream to copy.
   * @param aScope The application scope.
   */
  public synchronized void startTranscodingStream(IBroadcastStream aStream, IScope aScope) {
    System.out.println(
        "startTranscodingStream(" + aStream.getPublishedName() + "," + aScope.getName() + ")");
    if (aStream.getPublishedName().startsWith(getStreamPrefix())) {
      System.out.println("Not making a copy of a copy: " + aStream.getPublishedName());
      return;
    }
    System.out.println("Making transcoded version of: " + aStream.getPublishedName());

    /*
     * Now, we need to set up the output stream we want to broadcast to.
     * Turns out aaffmpeg-red5 provides one of those.
     */
    String outputName = getStreamPrefix() + aStream.getPublishedName();
    BroadcastStream outputStream = new BroadcastStream(outputName);
    outputStream.setPublishedName(outputName);
    outputStream.setScope(aScope);

    IContext context = aScope.getContext();

    IProviderService providerService =
        (IProviderService) context.getBean(IProviderService.BEAN_NAME);
    if (providerService.registerBroadcastStream(aScope, outputName, outputStream)) {
      IBroadcastScope bsScope =
          (BroadcastScope) providerService.getLiveProviderInput(aScope, outputName, true);

      bsScope.setAttribute(IBroadcastScope.STREAM_ATTRIBUTE, outputStream);
    } else {
      System.out.println("Got a fatal error; could not register broadcast stream");
      throw new RuntimeException("fooey!");
    }
    mOutputStreams.put(aStream.getPublishedName(), outputStream);
    outputStream.start();

    /** Now let's give aaffmpeg-red5 some information about what we want to transcode as. */
    ISimpleMediaFile outputStreamInfo = new SimpleMediaFile();
    outputStreamInfo.setHasAudio(true);
    outputStreamInfo.setAudioBitRate(32000);
    outputStreamInfo.setAudioChannels(1);
    outputStreamInfo.setAudioSampleRate(22050);
    outputStreamInfo.setAudioCodec(ICodec.ID.CODEC_ID_MP3);
    outputStreamInfo.setHasVideo(true);
    // Unfortunately the Trans-coder needs to know the width and height
    // you want to output as; even if you don't know yet.
    outputStreamInfo.setVideoWidth(640);
    outputStreamInfo.setVideoHeight(480);
    outputStreamInfo.setVideoBitRate(320000);
    outputStreamInfo.setVideoCodec(ICodec.ID.CODEC_ID_FLV1);
    outputStreamInfo.setVideoGlobalQuality(0);

    /** And finally, let's create out transcoder */
    Transcoder transcoder =
        new Transcoder(aStream, outputStream, outputStreamInfo, null, null, mVideoPictureListener);
    Thread transcoderThread = new Thread(transcoder);
    transcoderThread.setDaemon(true);
    mTranscoders.put(aStream.getPublishedName(), transcoder);
    System.out.println("Starting transcoding thread for: " + aStream.getPublishedName());
    transcoderThread.start();
  }
コード例 #6
0
 /**
  * Stop transcoding a stream.
  *
  * @param aStream The stream to stop transcoding.
  * @param aScope The application scope.
  */
 public synchronized void stopTranscodingStream(IBroadcastStream aStream, IScope aScope) {
   System.out.println(
       "stopTranscodingStream(" + aStream.getPublishedName() + "," + aScope.getName() + ")");
   String inputName = aStream.getPublishedName();
   Transcoder transcoder = mTranscoders.get(inputName);
   if (transcoder != null) {
     transcoder.stop();
   }
   BroadcastStream outputStream = mOutputStreams.get(inputName);
   if (outputStream != null) {
     outputStream.stop();
   }
 }
コード例 #7
0
 @Override
 public boolean appStart(IScope scope) {
   log.debug("VoiceConferenceApplication appStart[" + scope.getName() + "]");
   callStreamFactory = new CallStreamFactory();
   callStreamFactory.setScope(scope);
   sipPeerManager.setCallStreamFactory(callStreamFactory);
   sipPeerManager.setClientConnectionManager(clientConnManager);
   sipPeerManager.createSipPeer("default", sipServerHost, sipPort, startAudioPort, stopAudioPort);
   try {
     sipPeerManager.register("default", username, password);
   } catch (PeerNotFoundException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }
   return true;
 }
コード例 #8
0
 @Override
 public void roomLeave(IClient client, IScope scope) {
   log.debug(APP + ":roomLeave " + scope.getName());
 }
コード例 #9
0
 @Override
 public boolean roomJoin(IClient client, IScope scope) {
   log.debug(APP + ":roomJoin " + scope.getName() + " - " + scope.getParent().getName());
   return true;
 }
コード例 #10
0
 @Override
 public void appStop(IScope scope) {
   log.debug(APP + ":appStop " + scope.getName());
 }
コード例 #11
0
 @Override
 public boolean appStart(IScope scope) {
   log.debug(APP + ":appStart " + scope.getName());
   return true;
 }
コード例 #12
0
 @Override
 public boolean appJoin(IClient client, IScope scope) {
   log.debug(APP + ":appJoin " + scope.getName());
   return true;
 }
コード例 #13
0
 @Override
 public void appStop(IScope scope) {
   log.debug("VoiceConferenceApplication appStop[" + scope.getName() + "]");
   sipPeerManager.destroyAllSessions();
 }