diff --git a/internal/hls/muxer_test.go b/internal/hls/muxer_test.go index eff1ff50..cc62cd78 100644 --- a/internal/hls/muxer_test.go +++ b/internal/hls/muxer_test.go @@ -114,14 +114,18 @@ func TestMuxer(t *testing.T) { // PES (AAC) checkTSPacket(t, byts, 257, 3) - byts = byts[177:] - aus, err := aac.DecodeADTS(byts[:11]) + byts = byts[166:] + aus, err := aac.DecodeADTS(byts[:22]) require.NoError(t, err) - require.Equal(t, 1, len(aus)) + require.Equal(t, 2, len(aus)) require.Equal(t, 2, aus[0].Type) require.Equal(t, 44100, aus[0].SampleRate) require.Equal(t, 2, aus[0].ChannelCount) require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, aus[0].AU) + require.Equal(t, 2, aus[1].Type) + require.Equal(t, 44100, aus[1].SampleRate) + require.Equal(t, 2, aus[1].ChannelCount) + require.Equal(t, []byte{0x05, 0x06, 0x07, 0x08}, aus[1].AU) } func TestMuxerCloseBeforeFirstSegment(t *testing.T) { diff --git a/internal/hls/muxer_ts_generator.go b/internal/hls/muxer_ts_generator.go index 92b4ac51..1868ad78 100644 --- a/internal/hls/muxer_ts_generator.go +++ b/internal/hls/muxer_ts_generator.go @@ -145,29 +145,29 @@ func (m *muxerTSGenerator) writeAAC(pts time.Duration, aus [][]byte) error { } } - for _, au := range aus { - enc, err := aac.EncodeADTS([]*aac.ADTSPacket{ - { - Type: m.aacConf.Type, - SampleRate: m.aacConf.SampleRate, - ChannelCount: m.aacConf.ChannelCount, - AU: au, - }, - }) - if err != nil { - return err + pkts := make([]*aac.ADTSPacket, len(aus)) + + for i, au := range aus { + pkts[i] = &aac.ADTSPacket{ + Type: m.aacConf.Type, + SampleRate: m.aacConf.SampleRate, + ChannelCount: m.aacConf.ChannelCount, + AU: au, } + } - err = m.currentSegment.writeAAC(m.startPCR, pts, enc) - if err != nil { - return err - } + enc, err := aac.EncodeADTS(pkts) + if err != nil { + return err + } - if m.videoTrack == nil { - m.audioAUCount++ - } + err = m.currentSegment.writeAAC(m.startPCR, pts, enc) + if err != nil { + return err + } - pts += 1000 * time.Second / time.Duration(m.aacConf.SampleRate) + if m.videoTrack == nil { + m.audioAUCount += len(aus) } return nil