add NewMuxer(writeFlusher) for ts/flv

This commit is contained in:
nareix 2016-07-29 16:19:17 +08:00
parent 9e12fc5722
commit c06f934d9e
2 changed files with 24 additions and 6 deletions

View File

@ -312,18 +312,27 @@ func PacketToTag(pkt av.Packet, stream av.CodecData) (_tag flvio.Tag, timestamp
} }
type Muxer struct { type Muxer struct {
bufw *bufio.Writer bufw writeFlusher
b []byte b []byte
streams []av.CodecData streams []av.CodecData
} }
func NewMuxer(w io.Writer) *Muxer { type writeFlusher interface {
io.Writer
Flush() error
}
func NewMuxerWriteFlusher(w writeFlusher) *Muxer {
return &Muxer{ return &Muxer{
bufw: bufio.NewWriterSize(w, pio.RecommendBufioSize), bufw: w,
b: make([]byte, 256), b: make([]byte, 256),
} }
} }
func NewMuxer(w io.Writer) *Muxer {
return NewMuxerWriteFlusher(bufio.NewWriterSize(w, pio.RecommendBufioSize))
}
var CodecTypes = []av.CodecType{av.H264, av.AAC, av.SPEEX} var CodecTypes = []av.CodecType{av.H264, av.AAC, av.SPEEX}
func (self *Muxer) WriteHeader(streams []av.CodecData) (err error) { func (self *Muxer) WriteHeader(streams []av.CodecData) (err error) {

View File

@ -15,7 +15,7 @@ import (
var CodecTypes = []av.CodecType{av.H264, av.AAC} var CodecTypes = []av.CodecType{av.H264, av.AAC}
type Muxer struct { type Muxer struct {
w *bufio.Writer w writeFlusher
streams []*Stream streams []*Stream
PaddingToMakeCounterCont bool PaddingToMakeCounterCont bool
@ -29,9 +29,14 @@ type Muxer struct {
tswpat, tswpmt *tsio.TSWriter tswpat, tswpmt *tsio.TSWriter
} }
func NewMuxer(w io.Writer) *Muxer { type writeFlusher interface {
io.Writer
Flush() error
}
func NewMuxerWriteFlusher(w writeFlusher) *Muxer {
return &Muxer{ return &Muxer{
w: bufio.NewWriterSize(w, pio.RecommendBufioSize), w: w,
psidata: make([]byte, 188), psidata: make([]byte, 188),
peshdr: make([]byte, tsio.MaxPESHeaderLength), peshdr: make([]byte, tsio.MaxPESHeaderLength),
tshdr: make([]byte, tsio.MaxTSHeaderLength), tshdr: make([]byte, tsio.MaxTSHeaderLength),
@ -43,6 +48,10 @@ func NewMuxer(w io.Writer) *Muxer {
} }
} }
func NewMuxer(w io.Writer) *Muxer {
return NewMuxerWriteFlusher(bufio.NewWriterSize(w, pio.RecommendBufioSize))
}
func (self *Muxer) newStream(codec av.CodecData) (err error) { func (self *Muxer) newStream(codec av.CodecData) (err error) {
ok := false ok := false
for _, c := range CodecTypes { for _, c := range CodecTypes {