flv: add NELLYMOSER support

This commit is contained in:
nareix 2016-07-12 15:58:21 +08:00
parent 4b181e84e0
commit 79f3f92350
2 changed files with 17 additions and 5 deletions

View File

@ -27,7 +27,7 @@ func NewMuxer(w io.Writer) *Muxer {
} }
func (self *Muxer) SupportedCodecTypes() []av.CodecType { func (self *Muxer) SupportedCodecTypes() []av.CodecType {
return []av.CodecType{av.H264, av.AAC} return []av.CodecType{av.H264, av.AAC, av.NELLYMOSER}
} }
func (self *Muxer) WriteHeader(streams []av.CodecData) (err error) { func (self *Muxer) WriteHeader(streams []av.CodecData) (err error) {
@ -57,6 +57,8 @@ func (self *Muxer) WriteHeader(streams []av.CodecData) (err error) {
} }
_tag = tag _tag = tag
case av.NELLYMOSER:
case av.AAC: case av.AAC:
aac := stream.(aacparser.CodecData) aac := stream.(aacparser.CodecData)
tag := flvio.MakeAACAudiodata(aac, aac.MPEG4AudioConfigBytes()) tag := flvio.MakeAACAudiodata(aac, aac.MPEG4AudioConfigBytes())
@ -99,6 +101,13 @@ func (self *Muxer) WritePacket(pkt av.Packet) (err error) {
case av.AAC: case av.AAC:
tag := flvio.MakeAACAudiodata(stream.(av.AudioCodecData), pkt.Data) tag := flvio.MakeAACAudiodata(stream.(av.AudioCodecData), pkt.Data)
_tag = &tag _tag = &tag
case av.NELLYMOSER:
tag := &flvio.Audiodata{
SoundFormat: flvio.SOUND_NELLYMOSER,
Data: pkt.Data,
}
_tag = tag
} }
if err = flvio.WriteTag(self.pw, _tag, timeToTs(pkt.Time)); err != nil { if err = flvio.WriteTag(self.pw, _tag, timeToTs(pkt.Time)); err != nil {

View File

@ -173,17 +173,20 @@ func (self Audiodata) Marshal(w *pio.Writer) (err error) {
return return
} }
if self.SoundFormat == SOUND_AAC { switch self.SoundFormat {
case SOUND_AAC:
if err = w.WriteU8(self.AACPacketType); err != nil { if err = w.WriteU8(self.AACPacketType); err != nil {
return return
} }
if _, err = w.Write(self.Data); err != nil { if _, err = w.Write(self.Data); err != nil {
return return
} }
} else {
err = fmt.Errorf("flvio: Audiodata.Marshal: unsupported SoundFormat=%d", self.SoundFormat) default:
if _, err = w.Write(self.Data); err != nil {
return return
} }
}
return return
} }