ts: WriteTrailer need flush bufio.Writer
This commit is contained in:
parent
a102eab6c1
commit
b0fd58b57d
@ -12,7 +12,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Muxer struct {
|
type Muxer struct {
|
||||||
W io.Writer
|
w *bufio.Writer
|
||||||
streams []*Stream
|
streams []*Stream
|
||||||
PaddingToMakeCounterCont bool
|
PaddingToMakeCounterCont bool
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ func (self *Muxer) writePaddingTSPackets(tsw *TSWriter) (err error) {
|
|||||||
PID: tsw.PID,
|
PID: tsw.PID,
|
||||||
ContinuityCounter: tsw.ContinuityCounter,
|
ContinuityCounter: tsw.ContinuityCounter,
|
||||||
}
|
}
|
||||||
if _, err = WriteTSHeader(self.W, header, 0); err != nil {
|
if _, err = WriteTSHeader(self.w, header, 0); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
tsw.ContinuityCounter++
|
tsw.ContinuityCounter++
|
||||||
@ -69,6 +69,10 @@ func (self *Muxer) writePaddingTSPackets(tsw *TSWriter) (err error) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
func (self *Muxer) WriteTrailer() (err error) {
|
func (self *Muxer) WriteTrailer() (err error) {
|
||||||
|
if err = self.w.Flush(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if self.PaddingToMakeCounterCont {
|
if self.PaddingToMakeCounterCont {
|
||||||
for _, stream := range self.streams {
|
for _, stream := range self.streams {
|
||||||
@ -83,7 +87,7 @@ func (self *Muxer) WriteTrailer() (err error) {
|
|||||||
|
|
||||||
func NewMuxer(w io.Writer) *Muxer {
|
func NewMuxer(w io.Writer) *Muxer {
|
||||||
return &Muxer{
|
return &Muxer{
|
||||||
W: bufio.NewWriterSize(w, pio.RecommendBufioSize),
|
w: bufio.NewWriterSize(w, pio.RecommendBufioSize),
|
||||||
peshdr: make([]byte, MaxPESHeaderLength),
|
peshdr: make([]byte, MaxPESHeaderLength),
|
||||||
tshdr: make([]byte, MaxTSHeaderLength),
|
tshdr: make([]byte, MaxTSHeaderLength),
|
||||||
adtshdr: make([]byte, aacparser.ADTSHeaderLength),
|
adtshdr: make([]byte, aacparser.ADTSHeaderLength),
|
||||||
@ -121,10 +125,10 @@ func (self *Muxer) WritePATPMT() (err error) {
|
|||||||
|
|
||||||
self.tswPMT = NewTSWriter(0x1000)
|
self.tswPMT = NewTSWriter(0x1000)
|
||||||
self.tswPAT = NewTSWriter(0)
|
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
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,7 +286,7 @@ func (self *Muxer) WritePacket(pkt av.Packet) (err error) {
|
|||||||
self.datav[1] = self.adtshdr
|
self.datav[1] = self.adtshdr
|
||||||
self.datav[2] = pkt.Data
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,7 +313,7 @@ func (self *Muxer) WritePacket(pkt av.Packet) (err error) {
|
|||||||
n := FillPESHeader(self.peshdr, StreamIdH264, -1, pts, dts)
|
n := FillPESHeader(self.peshdr, StreamIdH264, -1, pts, dts)
|
||||||
datav[0] = self.peshdr[:n]
|
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
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user