static FlvEncoder() { FlvHeader VideoFlvHeader = new FlvHeader(true, false); VideoFlvHeaderBuffer = VideoFlvHeader.ToArray().ToArray(); PreviousTagSizeDict = new ConcurrentDictionary <string, uint>(); FrameInitDict = new ConcurrentDictionary <string, bool>(); H264Decoder = new Flv.H264.H264Decoder(); }
static FlvEncoder() { FlvHeader VideoFlvHeader = new FlvHeader(true, false); VideoFlvHeaderBuffer = VideoFlvHeader.ToArray().ToArray(); VideoSPSDict = new ConcurrentDictionary <string, SPSInfo>(); FlvFrameInfoDict = new ConcurrentDictionary <string, FlvFrameInfo>(); FlvFirstFrameCache = new ConcurrentDictionary <string, byte[]>(); H264Decoder = new Flv.H264.H264Decoder(); }
/// <summary> /// 编码flv头 /// </summary> /// <param name="hasVideo">是否有视频</param> /// <param name="hasAudio">是否有音频</param> /// <returns></returns> public byte[] EncoderFlvHeader(bool hasVideo = true, bool hasAudio = false) { var flvHeader = new FlvHeader(hasVideo, hasAudio); return(flvHeader.ToArray().ToArray()); }
/// <summary> /// 编码flv头 /// <para> /// 注意:本方法已写入<see cref="previousTagSize"/> /// </para> /// </summary> /// <param name="hasVideo"></param> /// <param name="hasAudio"></param> /// <returns></returns> public byte[] EncoderFlvHeader(bool hasVideo = true, bool hasAudio = false) { previousTagSize = 0; flvHeader = new FlvHeader(hasVideo, hasAudio); return(flvHeader.ToArray().ToArray()); }