From b0fd58b57d28159e1006f6b8dbb8b50f9dcdf2ae Mon Sep 17 00:00:00 2001 From: nareix Date: Sun, 10 Jul 2016 17:02:34 +0800 Subject: [PATCH] ts: WriteTrailer need flush bufio.Writer --- format/ts/muxer.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/format/ts/muxer.go b/format/ts/muxer.go index 016ea75..03b630c 100644 --- a/format/ts/muxer.go +++ b/format/ts/muxer.go @@ -12,7 +12,7 @@ import ( ) type Muxer struct { - W io.Writer + w *bufio.Writer streams []*Stream PaddingToMakeCounterCont bool @@ -59,7 +59,7 @@ func (self *Muxer) writePaddingTSPackets(tsw *TSWriter) (err error) { PID: tsw.PID, ContinuityCounter: tsw.ContinuityCounter, } - if _, err = WriteTSHeader(self.W, header, 0); err != nil { + if _, err = WriteTSHeader(self.w, header, 0); err != nil { return } tsw.ContinuityCounter++ @@ -69,6 +69,10 @@ func (self *Muxer) writePaddingTSPackets(tsw *TSWriter) (err error) { */ func (self *Muxer) WriteTrailer() (err error) { + if err = self.w.Flush(); err != nil { + return + } + /* if self.PaddingToMakeCounterCont { for _, stream := range self.streams { @@ -83,7 +87,7 @@ func (self *Muxer) WriteTrailer() (err error) { func NewMuxer(w io.Writer) *Muxer { return &Muxer{ - W: bufio.NewWriterSize(w, pio.RecommendBufioSize), + w: bufio.NewWriterSize(w, pio.RecommendBufioSize), peshdr: make([]byte, MaxPESHeaderLength), tshdr: make([]byte, MaxTSHeaderLength), adtshdr: make([]byte, aacparser.ADTSHeaderLength), @@ -121,10 +125,10 @@ func (self *Muxer) WritePATPMT() (err error) { self.tswPMT = NewTSWriter(0x1000) self.tswPAT = NewTSWriter(0) - if err = self.tswPAT.WritePackets(self.W, [][]byte{bufPAT.Bytes()}, 0, false, true); err != nil { + if err = self.tswPAT.WritePackets(self.w, [][]byte{bufPAT.Bytes()}, 0, false, true); err != nil { return } - if err = self.tswPMT.WritePackets(self.W, [][]byte{bufPMT.Bytes()}, 0, false, true); err != nil { + if err = self.tswPMT.WritePackets(self.w, [][]byte{bufPMT.Bytes()}, 0, false, true); err != nil { return } @@ -282,7 +286,7 @@ func (self *Muxer) WritePacket(pkt av.Packet) (err error) { self.datav[1] = self.adtshdr self.datav[2] = pkt.Data - if err = stream.tsw.WritePackets(self.W, self.datav[:3], timeToPCR(pkt.Time), true, false); err != nil { + if err = stream.tsw.WritePackets(self.w, self.datav[:3], timeToPCR(pkt.Time), true, false); err != nil { return } @@ -309,7 +313,7 @@ func (self *Muxer) WritePacket(pkt av.Packet) (err error) { n := FillPESHeader(self.peshdr, StreamIdH264, -1, pts, dts) datav[0] = self.peshdr[:n] - if err = stream.tsw.WritePackets(self.W, datav, timeToPCR(pkt.Time), pkt.IsKeyFrame, false); err != nil { + if err = stream.tsw.WritePackets(self.w, datav, timeToPCR(pkt.Time), pkt.IsKeyFrame, false); err != nil { return } }