Package org.red5.io.flv.impl

Examples of org.red5.io.flv.impl.FLVWriter


     */
  private void writeMetadataTag(double duration, Integer videoCodecId, Integer audioCodecId) throws IOException {
    metaPosition = channel.position();
    IoBuffer buf = IoBuffer.allocate(1024);
    buf.setAutoExpand(true);
    Output out = new Output(buf);
    out.writeString("onMetaData");
    Map<Object, Object> params = new HashMap<Object, Object>(4);
    params.put("duration", duration);
    if (videoCodecId != null) {
      params.put("videocodecid", videoCodecId.intValue());
    }
    if (audioCodecId != null) {
      params.put("audiocodecid", audioCodecId.intValue());
    }
    params.put("canSeekToEnd", true);
    out.writeMap(params, new Serializer());
    buf.flip();

    if (fileMetaSize == 0) {
      fileMetaSize = buf.limit();
    }
View Full Code Here


   *
   * @throws IOException      Any I/O exception
   */
  public void writeHeader() throws IOException {
    //Header fields (in same order than spec, for comparison purposes)
    FLVHeader flvHeader = new FLVHeader();
    flvHeader.setSignature("FLV".getBytes());
    flvHeader.setVersion ((byte)0x01);
    flvHeader.setFlagReserved01 ((byte) 0x0);
    flvHeader.setFlagAudio (true);
    flvHeader.setFlagReserved02 ((byte) 0x0);
    flvHeader.setFlagVideo (true);
    flvHeader.write(out);
   
    //Dump header to output channel
    channel.write(out.buf());
  }
View Full Code Here

    if (writer != null && !this.isClosed) {
      try {
       
        log.debug("#################### -start- closeStream ########################");
        log.debug("#################### -start- closeStream ########################");
        FLVWriter flvWriter = (FLVWriter) writer;
        //log.debug("duration: "+flvWriter.getDuration());
        //log.debug(writer.getClass().getName());
       
        writer.close();
       
View Full Code Here

   */
  public void write(IMetaData meta) throws IOException {
    // Get cue points, FLV reader and writer
    IMetaCue[] metaArr = meta.getMetaCue();
    FLVReader reader = new FLVReader(file, false);
    FLVWriter writer = new FLVWriter(fos, false);
    ITag tag = null;

    // Read first tag
    if (reader.hasMoreTags()) {
      tag = reader.readTag();
      if (tag.getDataType() == IoConstants.TYPE_METADATA) {
        if (!reader.hasMoreTags())
          throw new IOException(
              "File we're writing is metadata only?");
      }
    }

    meta.setDuration(((double) reader.getDuration() / 1000));
    meta.setVideoCodecId(reader.getVideoCodecId());
    meta.setAudioCodecId(reader.getAudioCodecId());

    ITag injectedTag = injectMetaData(meta, tag);
    injectedTag.setPreviousTagSize(0);
    tag.setPreviousTagSize(injectedTag.getBodySize());

    writer.writeHeader();
    writer.writeTag(injectedTag);
    writer.writeTag(tag);

    int cuePointTimeStamp = 0;
    int counter = 0;

    if (metaArr != null) {
      Arrays.sort(metaArr);
      cuePointTimeStamp = getTimeInMilliseconds(metaArr[0]);
    }

    while (reader.hasMoreTags()) {
      tag = reader.readTag();

      // if there are cuePoints in the array
      if (counter < metaArr.length) {

        // If the tag has a greater timestamp than the
        // cuePointTimeStamp, then inject the tag
        while (tag.getTimestamp() > cuePointTimeStamp) {

          injectedTag = injectMetaCue(metaArr[counter], tag);
          writer.writeTag(injectedTag);

          tag.setPreviousTagSize(injectedTag.getBodySize());

          // Advance to the next CuePoint
          counter++;

          if (counter > (metaArr.length - 1)) {
            break;
          }

          cuePointTimeStamp = getTimeInMilliseconds(metaArr[counter]);

        }
      }

      if (tag.getDataType() != IoConstants.TYPE_METADATA) {
        writer.writeTag(tag);
      }

    }
    writer.close();

  }
View Full Code Here

       
        int timeStamp = streampacket.getTimestamp();
       
        timeStamp -= startTimeStamp;
       
              ITag tag = new Tag();
              tag.setDataType(streampacket.getDataType());
             
              //log.debug("data.limit() :: "+data.limit());
        tag.setBodySize(data.limit());
        tag.setTimestamp(timeStamp);
        tag.setBody(data);
       
       
        if (this.isInterview) {
          if (timeStamp <= 500) {
            //We will cut the first 0.5 seconds
View Full Code Here

    if (fileMetaSize == 0) {
      fileMetaSize = buf.limit();
    }

    ITag onMetaData = new Tag(ITag.TYPE_METADATA, 0, fileMetaSize, buf, 0);
    writeTag(onMetaData);
  }
View Full Code Here

         
          FlvRecordingMetaDeltaDaoImpl.getInstance().addFlvRecordingMetaDelta(flvRecordingMetaDelta);
         
        }
       
              ITag tag = new Tag();
              tag.setDataType(streampacket.getDataType());
             
              //log.debug("data.limit() :: "+data.limit());
        tag.setBodySize(data.limit());
        tag.setTimestamp(timeStamp);
        tag.setBody(data);
       
        writer.writeTag(tag);
     
      }
     
View Full Code Here

//           
//          }
         
        }
             
              ITag tag = new Tag();
              tag.setDataType(streampacket.getDataType());
             
              //log.debug("data.limit() :: "+data.limit());
        tag.setBodySize(data.limit());
        tag.setTimestamp(timeStamp);
        tag.setBody(data);
       
        //log.debug("duration: "+flvWriter.getDuration());
       
        if (debug) {
         
          String filePath = folderPath + File.separatorChar
              + "Packet"
              +"_t_"+tag.getTimestamp()
              +"_d_"+deltaTime
              +"_s_"+tag.getBodySize()
              +".flv";
         
          //File out = new File();
         
          FLVDebugWriter flvWriterDebug = new FLVDebugWriter( new File( filePath ), false);
         
          flvWriterDebug.writeBytesFromTag(streampacket.getData().asReadOnlyBuffer());

          flvWriterDebug.closeBytesFile();
         
        }

        writer.writeTag(tag);
 
      } else if (streampacket.getDataType() == 9) {
       
        //Video data is handled just without calculating deltas
        int timeStamp = streampacket.getTimestamp();
       
        timeStamp -= startTimeStamp;
       
        ITag tag = new Tag();
              tag.setDataType(streampacket.getDataType());
             
              //log.debug("data.limit() :: "+data.limit());
        tag.setBodySize(data.limit());
        tag.setTimestamp(timeStamp);
        tag.setBody(data);
       
        writer.writeTag(tag);
       
      }
     
View Full Code Here

    }
    if (audioCodecId != null) {
      params.put("audiocodecid", audioCodecId.intValue());
    }
    params.put("canSeekToEnd", true);
    out.writeMap(params, new Serializer());
    buf.flip();

    if (fileMetaSize == 0) {
      fileMetaSize = buf.limit();
    }
View Full Code Here

    public void onStreamEvent( Notify notify ) {

        logger.debug( "onStreamEvent " + notify );

        ObjectMap map = (ObjectMap) notify.getCall().getArguments()[ 0 ];
        String code = (String) map.get( "code" );

        if ( StatusCodes.NS_PUBLISH_START.equals( code ) ) {
            logger.debug( "onStreamEvent Publish start" );
            startPublish = true;
        }
View Full Code Here

TOP

Related Classes of org.red5.io.flv.impl.FLVWriter

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.