add writePaddingTSPackets
This commit is contained in:
parent
12f2f28f55
commit
5b03e2383f
10
demuxer.go
10
demuxer.go
@ -45,7 +45,7 @@ func (self *Demuxer) ReadHeader() (err error) {
|
||||
if self.pmt != nil {
|
||||
n := 0
|
||||
for _, stream := range self.streams {
|
||||
if len(stream.pkts) > 0 {
|
||||
if len(stream.CodecData()) > 0 {
|
||||
n++
|
||||
}
|
||||
}
|
||||
@ -186,10 +186,6 @@ func (self *Stream) readPacket() (ret av.Packet, ok bool) {
|
||||
}
|
||||
|
||||
func (self *Stream) payloadStart() {
|
||||
if false {
|
||||
fmt.Println("payloadStart:", self)
|
||||
}
|
||||
|
||||
dts := self.peshdr.DTS
|
||||
pts := self.peshdr.PTS
|
||||
if dts == 0 {
|
||||
@ -218,10 +214,6 @@ func (self *Stream) payloadStart() {
|
||||
}
|
||||
|
||||
func (self *Stream) payloadEnd() (err error) {
|
||||
if false {
|
||||
fmt.Println("payloadEnd:", self)
|
||||
}
|
||||
|
||||
payload := self.buf.Bytes()
|
||||
|
||||
curpkt := &self.pkts[len(self.pkts)-1]
|
||||
|
33
muxer.go
33
muxer.go
@ -12,6 +12,10 @@ import (
|
||||
type Muxer struct {
|
||||
W io.Writer
|
||||
streams []*Stream
|
||||
PaddingToMakeCounterCont bool
|
||||
|
||||
tswPAT *TSWriter
|
||||
tswPMT *TSWriter
|
||||
}
|
||||
|
||||
func (self *Muxer) NewStream() av.Stream {
|
||||
@ -26,7 +30,28 @@ func (self *Muxer) NewStream() av.Stream {
|
||||
return stream
|
||||
}
|
||||
|
||||
func (self *Muxer) writePaddingTSPackets(tsw *TSWriter) (err error) {
|
||||
for tsw.ContinuityCounter&0xf != 0x0 {
|
||||
header := TSHeader{
|
||||
PID: tsw.PID,
|
||||
ContinuityCounter: tsw.ContinuityCounter,
|
||||
}
|
||||
if _, err = WriteTSHeader(self.W, header, 0); err != nil {
|
||||
return
|
||||
}
|
||||
tsw.ContinuityCounter++
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (self *Muxer) WriteTrailer() (err error) {
|
||||
if self.PaddingToMakeCounterCont {
|
||||
for _, stream := range self.streams {
|
||||
if err = self.writePaddingTSPackets(stream.tsw); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@ -57,18 +82,18 @@ func (self *Muxer) WriteHeader() (err error) {
|
||||
}
|
||||
WritePMT(bufPMT, pmt)
|
||||
|
||||
tswPMT := &TSWriter{
|
||||
self.tswPMT = &TSWriter{
|
||||
PID: 0x1000,
|
||||
DiscontinuityIndicator: true,
|
||||
}
|
||||
tswPAT := &TSWriter{
|
||||
self.tswPAT = &TSWriter{
|
||||
PID: 0,
|
||||
DiscontinuityIndicator: true,
|
||||
}
|
||||
if err = tswPAT.WriteTo(self.W, bufPAT.Bytes()); err != nil {
|
||||
if err = self.tswPAT.WriteTo(self.W, bufPAT.Bytes()); err != nil {
|
||||
return
|
||||
}
|
||||
if err = tswPMT.WriteTo(self.W, bufPMT.Bytes()); err != nil {
|
||||
if err = self.tswPMT.WriteTo(self.W, bufPMT.Bytes()); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user