mirror of
https://github.com/bluenviron/mediamtx
synced 2025-03-05 03:47:30 +00:00
hls: fix intermittent audio on iOS
This commit is contained in:
parent
18a6e04854
commit
bb5129d219
@ -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) {
|
||||
|
@ -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))
|
||||
|
||||
err = m.currentSegment.writeAAC(m.startPCR, pts, enc)
|
||||
if err != nil {
|
||||
return err
|
||||
for i, au := range aus {
|
||||
pkts[i] = &aac.ADTSPacket{
|
||||
Type: m.aacConf.Type,
|
||||
SampleRate: m.aacConf.SampleRate,
|
||||
ChannelCount: m.aacConf.ChannelCount,
|
||||
AU: au,
|
||||
}
|
||||
}
|
||||
|
||||
if m.videoTrack == nil {
|
||||
m.audioAUCount++
|
||||
}
|
||||
enc, err := aac.EncodeADTS(pkts)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pts += 1000 * time.Second / time.Duration(m.aacConf.SampleRate)
|
||||
err = m.currentSegment.writeAAC(m.startPCR, pts, enc)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if m.videoTrack == nil {
|
||||
m.audioAUCount += len(aus)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
Loading…
Reference in New Issue
Block a user