From 3a136cd8f5f4fd9892f5b944db8cd4449eac896b Mon Sep 17 00:00:00 2001 From: nareix Date: Tue, 19 Apr 2016 19:19:03 +0800 Subject: [PATCH] keep AV sync after seek --- demuxer.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/demuxer.go b/demuxer.go index 3cec635..5f62125 100644 --- a/demuxer.go +++ b/demuxer.go @@ -299,10 +299,23 @@ func (self *Demuxer) ReadPacket() (pkt av.Packet, err error) { func (self *Demuxer) SeekToTime(time float64) (err error) { for _, stream := range(self.streams) { - if err = stream.seekToTime(time); err != nil { - return + if stream.IsVideo() { + if err = stream.seekToTime(time); err != nil { + return + } + time = stream.TsToTime(stream.dts) + break } } + + for _, stream := range(self.streams) { + if !stream.IsVideo() { + if err = stream.seekToTime(time); err != nil { + return + } + } + } + return }