From 4d9f00d63c3898ccf0a35696f37094529adea292 Mon Sep 17 00:00:00 2001 From: deepch Date: Mon, 28 Mar 2022 15:47:46 +0300 Subject: [PATCH] ts dur ts audio never key --- format/ts/demuxer.go | 13 +++++++++++++ format/ts/stream.go | 8 ++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/format/ts/demuxer.go b/format/ts/demuxer.go index 63fcd9e..6dba682 100644 --- a/format/ts/demuxer.go +++ b/format/ts/demuxer.go @@ -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 diff --git a/format/ts/stream.go b/format/ts/stream.go index 171ca68..d4d3020 100644 --- a/format/ts/stream.go +++ b/format/ts/stream.go @@ -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 }