flv/rtmp: packet read logic bugfix

This commit is contained in:
nareix 2016-07-13 13:13:32 +08:00
parent e1f6aa15fe
commit 4b5f50e03f
3 changed files with 10 additions and 12 deletions

View File

@ -312,9 +312,9 @@ func (self *Muxer) WriteHeader(streams []av.CodecData) (err error) {
func (self *Muxer) WritePacket(pkt av.Packet) (err error) { func (self *Muxer) WritePacket(pkt av.Packet) (err error) {
stream := self.streams[pkt.Idx] stream := self.streams[pkt.Idx]
tag, ts := PacketToTag(pkt, stream) tag, timestamp := PacketToTag(pkt, stream)
if err = flvio.WriteTag(self.pw, tag, ts); err != nil { if err = flvio.WriteTag(self.pw, tag, timestamp); err != nil {
return return
} }
@ -361,7 +361,7 @@ func (self *Demuxer) prepare() (err error) {
for !self.prober.Probed() { for !self.prober.Probed() {
var tag flvio.Tag var tag flvio.Tag
var timestamp int32 var timestamp int32
if tag, _, err = flvio.ReadTag(self.pr); err != nil { if tag, timestamp, err = flvio.ReadTag(self.pr); err != nil {
return return
} }
if err = self.prober.PushTag(tag, timestamp); err != nil { if err = self.prober.PushTag(tag, timestamp); err != nil {
@ -374,6 +374,12 @@ func (self *Demuxer) prepare() (err error) {
return return
} }
func dumptag(_tag flvio.Tag, timestamp int32) {
if tag, ok := _tag.(*flvio.Videodata); ok {
fmt.Printf("video ts=%d cts=%d FrameType=%d AVCPacketType=%d\n", timestamp, tag.CompositionTime, tag.FrameType, tag.AVCPacketType)
}
}
func (self *Demuxer) Streams() (streams []av.CodecData, err error) { func (self *Demuxer) Streams() (streams []av.CodecData, err error) {
if err = self.prepare(); err != nil { if err = self.prepare(); err != nil {
return return

View File

@ -247,7 +247,6 @@ type Videodata struct {
AVCPacketType uint8 AVCPacketType uint8
Data []byte Data []byte
Datav [][]byte
CompositionTime int32 CompositionTime int32
} }
@ -256,7 +255,7 @@ func (self Videodata) Type() uint8 {
} }
func (self Videodata) Len() int { func (self Videodata) Len() int {
return 5 + len(self.Data) + pio.VecLen(self.Datav) return 5 + len(self.Data)
} }
func (self *Videodata) Unmarshal(r *pio.Reader) (err error) { func (self *Videodata) Unmarshal(r *pio.Reader) (err error) {
@ -297,11 +296,6 @@ func (self Videodata) Marshal(w *pio.Writer) (err error) {
if _, err = w.Write(self.Data); err != nil { if _, err = w.Write(self.Data); err != nil {
return return
} }
for _, data := range self.Datav {
if _, err = w.Write(data); err != nil {
return
}
}
} }
return return
} }

View File

@ -715,12 +715,10 @@ func (self *Conn) ReadPacket() (pkt av.Packet, err error) {
return return
} }
/*
if !self.prober.Empty() { if !self.prober.Empty() {
pkt = self.prober.PopPacket() pkt = self.prober.PopPacket()
return return
} }
*/
for { for {
var tag flvio.Tag var tag flvio.Tag