ts dur ts audio never key
This commit is contained in:
		| @@ -173,6 +173,9 @@ func (self *Demuxer) readTSPacket() (err error) { | ||||
| 	} else { | ||||
| 		for _, stream := range self.streams { | ||||
| 			if pid == stream.pid { | ||||
| 				if stream.streamType == tsio.ElementaryStreamTypeAdtsAAC { | ||||
| 					iskeyframe = false | ||||
| 				} | ||||
| 				if err = stream.handleTSPacket(start, iskeyframe, payload); err != nil { | ||||
| 					return | ||||
| 				} | ||||
| @@ -187,16 +190,26 @@ func (self *Demuxer) readTSPacket() (err error) { | ||||
| func (self *Stream) addPacket(payload []byte, timedelta time.Duration) { | ||||
| 	dts := self.dts | ||||
| 	pts := self.pts | ||||
|  | ||||
| 	if dts == 0 { | ||||
| 		dts = pts | ||||
| 	} | ||||
|  | ||||
| 	dur := time.Duration(0) | ||||
|  | ||||
| 	if self.pt > 0 { | ||||
| 		dur = dts + timedelta - self.pt | ||||
| 	} | ||||
|  | ||||
| 	self.pt = dts + timedelta | ||||
|  | ||||
| 	demuxer := self.demuxer | ||||
| 	pkt := av.Packet{ | ||||
| 		Idx:        int8(self.idx), | ||||
| 		IsKeyFrame: self.iskeyframe, | ||||
| 		Time:       dts + timedelta, | ||||
| 		Data:       payload, | ||||
| 		Duration:   dur, | ||||
| 	} | ||||
| 	if pts != dts { | ||||
| 		pkt.CompositionTime = pts - dts | ||||
|   | ||||
| @@ -20,8 +20,8 @@ type Stream struct { | ||||
| 	tsw *tsio.TSWriter | ||||
| 	idx int | ||||
|  | ||||
| 	iskeyframe bool | ||||
| 	pts, dts   time.Duration | ||||
| 	data       []byte | ||||
| 	datalen    int | ||||
| 	iskeyframe   bool | ||||
| 	pts, dts, pt time.Duration | ||||
| 	data         []byte | ||||
| 	datalen      int | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 deepch
					deepch