From c4855b68ed9bc4b83e0d512c4dcdc117f244fcb9 Mon Sep 17 00:00:00 2001 From: nareix Date: Fri, 29 Jul 2016 07:50:33 +0800 Subject: [PATCH] avutil: seek after probe --- av/avutil/avutil.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/av/avutil/avutil.go b/av/avutil/avutil.go index e18cb06..68b4a7f 100644 --- a/av/avutil/avutil.go +++ b/av/avutil/avutil.go @@ -184,8 +184,17 @@ func (self *Handlers) Open(uri string) (demuxer av.DemuxCloser, err error) { for _, handler := range self.handlers { if handler.Probe != nil && handler.Probe(probebuf[:]) && handler.ReaderDemuxer != nil { + var _r io.Reader + if rs, ok := r.(io.ReadSeeker); ok { + if _, err = rs.Seek(0, 0); err != nil { + return + } + _r = rs + } else { + _r = io.MultiReader(bytes.NewReader(probebuf[:]), r) + } demuxer = &HandlerDemuxer{ - Demuxer: handler.ReaderDemuxer(io.MultiReader(bytes.NewReader(probebuf[:]), r)), + Demuxer: handler.ReaderDemuxer(_r), r: r, } return