Package org.red5.server.net.rtmp.message

Examples of org.red5.server.net.rtmp.message.Header


    }

    // Move the position back to the start
    in.position(position);

    final Header header = decodeHeader(in, rtmp
        .getLastReadHeader(channelId));

    if (header == null) {
      throw new ProtocolException("Header is null, check for error");
    }

    // Save the header
    rtmp.setLastReadHeader(channelId, header);

    // Check to see if this is a new packets or continue decoding an
    // existing one.
    Packet packet = rtmp.getLastReadPacket(channelId);

    if (packet == null) {
      packet = new Packet(header);
      rtmp.setLastReadPacket(channelId, packet);
    }

    final ByteBuffer buf = packet.getData();
    final int addSize = (header.getTimer() == 0xffffff ? 4 : 0);
    final int readRemaining = header.getSize() + addSize - buf.position();
    final int chunkSize = rtmp.getReadChunkSize();
    final int readAmount = (readRemaining > chunkSize) ? chunkSize
        : readRemaining;

    if (in.remaining() < readAmount) {
      if (log.isDebugEnabled()) {
        log.debug("Chunk too small, buffering (" + in.remaining() + ','
            + readAmount);
      }
      // skip the position back to the start
      in.position(position);
      rtmp.bufferDecoding(headerLength + readAmount);
      return null;
    }

    BufferUtils.put(buf, in, readAmount);

    if (buf.position() < header.getSize() + addSize) {
      rtmp.continueDecoding();
      return null;
    }

    if (log.isWarnEnabled()) {
      // Check workaround for SN-19 to find cause for BufferOverflowException
      if (buf.position() > header.getSize() + addSize) {
        log.warn("Packet size expanded from " + (header.getSize() + addSize) +
            " to " + buf.position() + " (" + header + ")");
      }
    }

    buf.flip();
View Full Code Here


      headerValue = (int) headerByte & 0xff;
      byteCount = 1;
    }
    final int channelId = RTMPUtils.decodeChannelId(headerValue, byteCount);
    final int headerSize = RTMPUtils.decodeHeaderSize(headerValue, byteCount);
    Header header = new Header();
    header.setChannelId(channelId);
    header.setTimerRelative(headerSize != HEADER_NEW);

    switch (headerSize) {

      case HEADER_NEW:
        header.setTimer(RTMPUtils.readUnsignedMediumInt(in));
        header.setSize(RTMPUtils.readMediumInt(in));
        header.setDataType(in.get());
        header.setStreamId(RTMPUtils.readReverseInt(in));
        break;

      case HEADER_SAME_SOURCE:
        header.setTimer(RTMPUtils.readUnsignedMediumInt(in));
        header.setSize(RTMPUtils.readMediumInt(in));
        header.setDataType(in.get());
        header.setStreamId(lastHeader.getStreamId());
        break;

      case HEADER_TIMER_CHANGE:
        header.setTimer(RTMPUtils.readUnsignedMediumInt(in));
        header.setSize(lastHeader.getSize());
        header.setDataType(lastHeader.getDataType());
        header.setStreamId(lastHeader.getStreamId());
        break;

      case HEADER_CONTINUE:
        header.setTimer(lastHeader.getTimer());
        header.setSize(lastHeader.getSize());
        header.setDataType(lastHeader.getDataType());
        header.setStreamId(lastHeader.getStreamId());
        break;

      default:
        log.error("Unexpected header size: " + headerSize);
        return null;
View Full Code Here

    log.debug("Name of CLient and Stream to be recorded: "+broadcastid);   
    //log.debug("Application.getInstance()"+Application.getInstance());
    log.debug("Scope "+conn);
    log.debug("Scope "+conn.getScope());
    // Get a reference to the current broadcast stream.
    ClientBroadcastStream stream = (ClientBroadcastStream) ScopeApplicationAdapter.getInstance()
        .getBroadcastStream(conn.getScope(), broadcastid);
    try {
      // Save the stream to disk.
      stream.saveAs(streamName, false);
    } catch (Exception e) {
      log.error("Error while saving stream: " + streamName, e);
    }
  }
View Full Code Here

      log.debug("Name of CLient and Stream to be recorded: "+broadcastid);   
      //log.debug("Application.getInstance()"+Application.getInstance());
      log.debug("Scope "+conn);
      log.debug("Scope "+conn.getScope());
      // Get a reference to the current broadcast stream.
      ClientBroadcastStream stream = (ClientBroadcastStream) ScopeApplicationAdapter.getInstance()
          .getBroadcastStream(conn.getScope(), broadcastid);
   
     
      // Save the stream to disk.
      if (isScreenData) {
        stream.addStreamListener(new StreamScreenListener(streamName, conn.getScope(), flvRecordingMetaDataId, isScreenData, isInterview));
      } else {
          
        log.debug("### stream "+stream);
        log.debug("### streamName "+streamName);
        log.debug("### conn.getScope() "+conn.getScope());
        log.debug("### flvRecordingMetaDataId "+flvRecordingMetaDataId);
        log.debug("### isScreenData "+isScreenData);
        log.debug("### isInterview "+isInterview);
       
        if (isInterview) {
         
          //Additionally record the Video Signal
          stream.addStreamListener(new StreamScreenListener("AV_"+streamName, conn.getScope(), flvRecordingMetaDataId, isScreenData, isInterview));
        }
       
        stream.addStreamListener(new StreamAudioListener(streamName, conn.getScope(), flvRecordingMetaDataId, isScreenData, isInterview));
      }
      //Just for Debug Purpose
      //stream.saveAs(streamName+"_DEBUG", false);
    } catch (Exception e) {
      log.error("Error while saving stream: " + streamName, e);
View Full Code Here

     
      if (streamToClose == null) {
        log.debug("Could not aquire Stream, maybe already closed");
      }
     
      ClientBroadcastStream stream = (ClientBroadcastStream) streamToClose;
      // Stop recording.
      stream.stopRecording();
     
    } catch (Exception err) {
      log.error("[stopRecordingShow]",err);
    }
  }
View Full Code Here

     
      if (streamToClose == null) {
        log.debug("Could not aquire Stream, maybe already closed");
      }
     
      ClientBroadcastStream stream = (ClientBroadcastStream) streamToClose;

      if (stream.getStreamListeners() != null) {
       
        for (Iterator<IStreamListener> iter = stream.getStreamListeners().iterator();iter.hasNext();) {
         
          IStreamListener iStreamListener = iter.next();
         
          ListenerAdapter listenerAdapter = (ListenerAdapter) iStreamListener;
         
          log.debug("Stream Closing ?? "+listenerAdapter.getFlvRecordingMetaDataId()+ " " +flvRecordingMetaDataId);
         
          if (listenerAdapter.getFlvRecordingMetaDataId().equals(flvRecordingMetaDataId)) {
            log.debug("Stream Closing :: "+flvRecordingMetaDataId);
            listenerAdapter.closeStream();
          }
         
        }
       
        for (IStreamListener iStreamListener : stream.getStreamListeners()) {
          stream.removeStreamListener(iStreamListener);
        }
     
      }
     
      // Just for Debugging
View Full Code Here

    log.debug("Name of CLient and Stream to be recorded: "+broadcastid);   
    //log.debug("Application.getInstance()"+Application.getInstance());
    log.debug("Scope "+conn);
    log.debug("Scope "+conn.getScope());
    // Get a reference to the current broadcast stream.
    ClientBroadcastStream stream = (ClientBroadcastStream) ScopeApplicationAdapter.getInstance()
        .getBroadcastStream(conn.getScope(), Long.valueOf(broadcastid).toString());
    try {
      // Save the stream to disk.
      stream.saveAs(streamName, false);
    } catch (Exception e) {
      log.error("Error while saving stream: " + streamName, e);
    }
  }
View Full Code Here

   * @param conn
   */
  public static void stopRecordingShow(IConnection conn, long broadcastId) throws Exception {
    log.debug("** stopRecordingShow: "+conn);
    log.debug("### Stop recording show for broadcastId: "+ broadcastId + " || " + conn.getScope().getContextPath());
    ClientBroadcastStream stream = (ClientBroadcastStream) ScopeApplicationAdapter.getInstance().
                        getBroadcastStream(conn.getScope(), Long.valueOf(broadcastId).toString());
    // Stop recording.
    stream.stopRecording();
  }
View Full Code Here

//        if ( kt < 10 ) {
//            logger.debug( "+++ " + videoData );
//            System.out.println( "+++ " + videoData);
//        }

        RTMPMessage rtmpMsg = new RTMPMessage();
        rtmpMsg.setBody( videoData );
        publishStreamData( publishStreamId, rtmpMsg );
    }
View Full Code Here

//        if ( kt < 10 ) {
//            logger.debug( "+++ " + videoData );
//            System.out.println( "+++ " + videoData);
//        }

        RTMPMessage rtmpMsg = new RTMPMessage();
        rtmpMsg.setBody( videoData );
        publishStreamData( publishStreamId, rtmpMsg );
    }
View Full Code Here

TOP

Related Classes of org.red5.server.net.rtmp.message.Header

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.