Browse Source

hls client: improve video / audio sync

pull/956/head
aler9 4 years ago
parent
commit
ae23dde169
  1. 20
      internal/hls/client_audio_processor.go

20
internal/hls/client_audio_processor.go

@ -64,20 +64,17 @@ func (p *clientAudioProcessor) doProcess(
} }
aus := make([][]byte, 0, len(adtsPkts)) aus := make([][]byte, 0, len(adtsPkts))
pktPts := pts
now := time.Now()
for _, pkt := range adtsPkts { elapsed := time.Since(p.clockStartRTC)
elapsed := now.Sub(p.clockStartRTC) if pts > elapsed {
select {
if pktPts > elapsed { case <-p.ctx.Done():
select { return fmt.Errorf("terminated")
case <-p.ctx.Done(): case <-time.After(pts - elapsed):
return fmt.Errorf("terminated")
case <-time.After(pktPts - elapsed):
}
} }
}
for _, pkt := range adtsPkts {
if !p.trackInitialized { if !p.trackInitialized {
p.trackInitialized = true p.trackInitialized = true
@ -93,7 +90,6 @@ func (p *clientAudioProcessor) doProcess(
} }
aus = append(aus, pkt.AU) aus = append(aus, pkt.AU)
pktPts += aac.SamplesPerAccessUnit * time.Second / time.Duration(pkt.SampleRate)
} }
p.onData(pts, aus) p.onData(pts, aus)

Loading…
Cancel
Save