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 {
|
} 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
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user