ts dur ts audio never key
This commit is contained in:
parent
68ae487ae8
commit
4d9f00d63c
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user