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

Loading…
Cancel
Save