muxer: use h264parser.CheckNALUsType

This commit is contained in:
nareix 2016-07-01 18:31:42 +08:00
parent 6b887066cf
commit 7530d353fd

View File

@ -146,9 +146,7 @@ func (self *Muxer) writePacket(pkt av.Packet) (err error) {
case av.AAC:
codec := stream.CodecData.(aacparser.CodecData)
data := pkt.Data
if !aacparser.IsADTSFrame(data) {
data = append(codec.MakeADTSHeader(1024, len(data)), data...)
}
data = append(codec.MakeADTSHeader(1024, len(data)), data...)
buf := &bytes.Buffer{}
pes := PESHeader{
@ -174,10 +172,15 @@ func (self *Muxer) writePacket(pkt av.Packet) (err error) {
}
WritePESHeader(buf, pes, 0)
nalus, _ := h264parser.SplitNALUs(pkt.Data)
if pkt.IsKeyFrame {
nalus = append([][]byte{codec.SPS(), codec.PPS()}, nalus...)
if typ := h264parser.CheckNALUsType(pkt.Data); typ != h264parser.NALU_RAW {
err = fmt.Errorf("ts: h264 nalu format=%d invalid", typ)
return
}
nalus := [][]byte{}
if pkt.IsKeyFrame {
nalus = append([][]byte{codec.SPS(), codec.PPS()})
}
nalus = append(nalus, pkt.Data)
h264parser.WalkNALUsAnnexb(nalus, func(b []byte) {
buf.Write(b)
})