Package com.itstherules.metadata

Source Code of com.itstherules.metadata.FlvHeader

package com.itstherules.metadata;

import com.itstherules.io.ByteHelper;
import com.itstherules.io.FileReader;
import com.itstherules.io.IOHelper;

public class FlvHeader {
 
  public FlvHeader() {
    signature = null;
    version = 0;
    containsAudio = false;
    containsVideo = false;
    dataOffset = 0;
    extraData = null;
  }
 
  public FlvHeader(IOHelper ioh) {
    this.ioh = ioh;
    FileReader fh = ioh.getFileReader();
    fh.setDebug(ioh.isDebug());
    signature = fh.readString(3);
    version = fh.readUint(1);
    int typeFlags = fh.readUint(1);
    containsAudio = (typeFlags & 4) == 1;
    containsVideo = (typeFlags & 1) == 1;
    dataOffset = fh.readUint(4);
    if (dataOffset - 9 > 0) extraData = fh.readString(dataOffset - 9);
    else extraData = "";
  }
 
  public byte[] getFlvHeaderBytes() {
    int fpos = 0;
    int typeFlags = 0;
    if (containsAudio) typeFlags += 4;
    if (containsVideo) typeFlags++;
    ByteHelper bh = ioh.getByteHelper();
    byte flv[] = (new String("FLV")).getBytes();
    byte typ[] = bh.getUintBytes(1, 1);
    byte typFlag[] = bh.getUintBytes(typeFlags, 1);
    byte extDataLen[] = bh.getUintBytes(9 + extraData.length(), 4);
    byte extData[] = extraData.getBytes();
    byte flvhBytes[] = new byte[flv.length + typ.length + typFlag.length + extDataLen.length + extData.length];
    System.arraycopy(flv, 0, flvhBytes, 0, flv.length);
    fpos += flv.length;
    System.arraycopy(typ, 0, flvhBytes, fpos, typ.length);
    fpos += typ.length;
    System.arraycopy(typFlag, 0, flvhBytes, fpos, typFlag.length);
    fpos += typFlag.length;
    System.arraycopy(extDataLen, 0, flvhBytes, fpos, extDataLen.length);
    fpos += extDataLen.length;
    System.arraycopy(extData, 0, flvhBytes, fpos, extData.length);
    flv = null;
    typ = null;
    typFlag = null;
    extDataLen = null;
    extData = null;
    return flvhBytes;
  }
 
  public String getSignature() {
    return signature;
  }
 
  public void setSignature(String signature) {
    this.signature = signature;
  }
 
  public int getVersion() {
    return version;
  }
 
  public void setVersion(int version) {
    this.version = version;
  }
 
  public boolean hasAudio() {
    return containsAudio;
  }
 
  public void setHasAudio(boolean containsAudio) {
    this.containsAudio = containsAudio;
  }
 
  public boolean hasVideo() {
    return containsVideo;
  }
 
  public void setHasVideo(boolean containsVideo) {
    this.containsVideo = containsVideo;
  }
 
  public int getDataOffset() {
    return dataOffset;
  }
 
  public void setDataOffset(int dataOffset) {
    this.dataOffset = dataOffset;
  }
 
  public String getExtraData() {
    return extraData;
  }
 
  public void setExtraData(String extraData) {
    this.extraData = extraData;
  }
 
  private String signature;
  private int version;
  private boolean containsAudio;
  private boolean containsVideo;
  private int dataOffset;
  private String extraData;
  private IOHelper ioh;
}
TOP

Related Classes of com.itstherules.metadata.FlvHeader

TOP
Copyright © 2018 www.massapi.com. 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.