1package flv 2 3import ( 4 "fmt" 5 "github.com/gwuhaolin/livego/av" 6) 7 8var ( 9 ErrAvcEndSEQ = fmt.Errorf("avc end sequence") 10) 11 12type Demuxer struct { 13} 14 15func NewDemuxer() *Demuxer { 16 return &Demuxer{} 17} 18 19func (d *Demuxer) DemuxH(p *av.Packet) error { 20 var tag Tag 21 _, err := tag.ParseMediaTagHeader(p.Data, p.IsVideo) 22 if err != nil { 23 return err 24 } 25 p.Header = &tag 26 27 return nil 28} 29 30func (d *Demuxer) Demux(p *av.Packet) error { 31 var tag Tag 32 n, err := tag.ParseMediaTagHeader(p.Data, p.IsVideo) 33 if err != nil { 34 return err 35 } 36 if tag.CodecID() == av.VIDEO_H264 && 37 p.Data[0] == 0x17 && p.Data[1] == 0x02 { 38 return ErrAvcEndSEQ 39 } 40 p.Header = &tag 41 p.Data = p.Data[n:] 42 43 return nil 44} 45