diff --git a/av/avutil/avutil.go b/av/avutil/avutil.go index 48659ba..a9a86f4 100644 --- a/av/avutil/avutil.go +++ b/av/avutil/avutil.go @@ -23,17 +23,26 @@ func (self *handlerDemuxer) Close() error { type handlerMuxer struct { av.Muxer w io.WriteCloser - trailerwritten bool + stage int +} + +func (self *handlerMuxer) WriteHeader(streams []av.CodecData) (err error) { + if self.stage == 0 { + if err = self.Muxer.WriteHeader(streams); err != nil { + return + } + self.stage++ + } + return } func (self *handlerMuxer) WriteTrailer() (err error) { - if self.trailerwritten { - return + if self.stage == 1 { + if err = self.Muxer.WriteTrailer(); err != nil { + return + } + self.stage++ } - if err = self.Muxer.WriteTrailer(); err != nil { - return - } - self.trailerwritten = true return }