diff --git a/demuxer.go b/demuxer.go index f6e8a29..3d278d4 100644 --- a/demuxer.go +++ b/demuxer.go @@ -30,7 +30,11 @@ type Demuxer struct { streams []*Stream } -func (self *Demuxer) Streams() (streams []av.CodecData) { +func (self *Demuxer) Streams() (streams []av.CodecData, err error) { + if len(self.streams) == 0 { + err = fmt.Errorf("ts: no streams") + return + } for _, stream := range self.streams { streams = append(streams, stream) } @@ -116,7 +120,12 @@ func (self *Demuxer) readTSPacket() (err error) { } } self.pktque = &pktqueue.Queue{} - self.pktque.Alloc(self.Streams()) + + var streams []av.CodecData + if streams, err = self.Streams(); err != nil { + return + } + self.pktque.Alloc(streams) self.pktque.Poll = self.poll } } diff --git a/muxer.go b/muxer.go index ec6ee8b..7e95420 100644 --- a/muxer.go +++ b/muxer.go @@ -134,7 +134,7 @@ func (self *Muxer) WritePacket(streamIndex int, pkt av.Packet) (err error) { stream := self.streams[streamIndex] if stream.Type() == av.AAC { - codec := stream.CodecData.(av.AACCodecData) + codec := stream.CodecData.(aacparser.CodecData) data := pkt.Data if !aacparser.IsADTSFrame(data) { data = append(codec.MakeADTSHeader(1024, len(data)), data...) @@ -157,7 +157,7 @@ func (self *Muxer) WritePacket(streamIndex int, pkt av.Packet) (err error) { stream.time += pkt.Duration } else if stream.Type() == av.H264 { - codec := stream.CodecData.(av.H264CodecData) + codec := stream.CodecData.(h264parser.CodecData) buf := &bytes.Buffer{} pes := PESHeader{ StreamId: StreamIdH264,