ts dur ts audio never key

This commit is contained in:
deepch 2022-03-28 15:47:46 +03:00
parent 68ae487ae8
commit 4d9f00d63c
2 changed files with 17 additions and 4 deletions

View File

@ -173,6 +173,9 @@ func (self *Demuxer) readTSPacket() (err error) {
} else { } else {
for _, stream := range self.streams { for _, stream := range self.streams {
if pid == stream.pid { if pid == stream.pid {
if stream.streamType == tsio.ElementaryStreamTypeAdtsAAC {
iskeyframe = false
}
if err = stream.handleTSPacket(start, iskeyframe, payload); err != nil { if err = stream.handleTSPacket(start, iskeyframe, payload); err != nil {
return return
} }
@ -187,16 +190,26 @@ func (self *Demuxer) readTSPacket() (err error) {
func (self *Stream) addPacket(payload []byte, timedelta time.Duration) { func (self *Stream) addPacket(payload []byte, timedelta time.Duration) {
dts := self.dts dts := self.dts
pts := self.pts pts := self.pts
if dts == 0 { if dts == 0 {
dts = pts dts = pts
} }
dur := time.Duration(0)
if self.pt > 0 {
dur = dts + timedelta - self.pt
}
self.pt = dts + timedelta
demuxer := self.demuxer demuxer := self.demuxer
pkt := av.Packet{ pkt := av.Packet{
Idx: int8(self.idx), Idx: int8(self.idx),
IsKeyFrame: self.iskeyframe, IsKeyFrame: self.iskeyframe,
Time: dts + timedelta, Time: dts + timedelta,
Data: payload, Data: payload,
Duration: dur,
} }
if pts != dts { if pts != dts {
pkt.CompositionTime = pts - dts pkt.CompositionTime = pts - dts

View File

@ -21,7 +21,7 @@ type Stream struct {
idx int idx int
iskeyframe bool iskeyframe bool
pts, dts time.Duration pts, dts, pt time.Duration
data []byte data []byte
datalen int datalen int
} }