mirror of
https://github.com/bluenviron/mediamtx.git
synced 2026-01-09 11:52:02 -08:00
hls: prefer Opus tracks to MPEG-4 tracks (#2158)
This commit is contained in:
parent
153463466c
commit
d9b7878c3d
1 changed files with 42 additions and 42 deletions
|
|
@ -456,8 +456,49 @@ func (m *hlsMuxer) createVideoTrack(stream *stream.Stream) (*media.Media, *gohls
|
|||
}
|
||||
|
||||
func (m *hlsMuxer) createAudioTrack(stream *stream.Stream) (*media.Media, *gohlslib.Track) {
|
||||
var audioFormatOpus *formats.Opus
|
||||
audioMedia := stream.Medias().FindFormat(&audioFormatOpus)
|
||||
|
||||
if audioMedia != nil {
|
||||
audioStartPTSFilled := false
|
||||
var audioStartPTS time.Duration
|
||||
|
||||
stream.AddReader(m, audioMedia, audioFormatOpus, func(unit formatprocessor.Unit) {
|
||||
m.ringBuffer.Push(func() error {
|
||||
tunit := unit.(*formatprocessor.UnitOpus)
|
||||
|
||||
if !audioStartPTSFilled {
|
||||
audioStartPTSFilled = true
|
||||
audioStartPTS = tunit.PTS
|
||||
}
|
||||
|
||||
pts := tunit.PTS - audioStartPTS
|
||||
err := m.muxer.WriteOpus(
|
||||
tunit.NTP,
|
||||
pts,
|
||||
tunit.Packets)
|
||||
if err != nil {
|
||||
return fmt.Errorf("muxer error: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
})
|
||||
|
||||
return audioMedia, &gohlslib.Track{
|
||||
Codec: &codecs.Opus{
|
||||
ChannelCount: func() int {
|
||||
if audioFormatOpus.IsStereo {
|
||||
return 2
|
||||
}
|
||||
return 1
|
||||
}(),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
var audioFormatMPEG4AudioGeneric *formats.MPEG4AudioGeneric
|
||||
audioMedia := stream.Medias().FindFormat(&audioFormatMPEG4AudioGeneric)
|
||||
audioMedia = stream.Medias().FindFormat(&audioFormatMPEG4AudioGeneric)
|
||||
|
||||
if audioMedia != nil {
|
||||
audioStartPTSFilled := false
|
||||
|
|
@ -539,47 +580,6 @@ func (m *hlsMuxer) createAudioTrack(stream *stream.Stream) (*media.Media, *gohls
|
|||
}
|
||||
}
|
||||
|
||||
var audioFormatOpus *formats.Opus
|
||||
audioMedia = stream.Medias().FindFormat(&audioFormatOpus)
|
||||
|
||||
if audioMedia != nil {
|
||||
audioStartPTSFilled := false
|
||||
var audioStartPTS time.Duration
|
||||
|
||||
stream.AddReader(m, audioMedia, audioFormatOpus, func(unit formatprocessor.Unit) {
|
||||
m.ringBuffer.Push(func() error {
|
||||
tunit := unit.(*formatprocessor.UnitOpus)
|
||||
|
||||
if !audioStartPTSFilled {
|
||||
audioStartPTSFilled = true
|
||||
audioStartPTS = tunit.PTS
|
||||
}
|
||||
|
||||
pts := tunit.PTS - audioStartPTS
|
||||
err := m.muxer.WriteOpus(
|
||||
tunit.NTP,
|
||||
pts,
|
||||
tunit.Packets)
|
||||
if err != nil {
|
||||
return fmt.Errorf("muxer error: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
})
|
||||
|
||||
return audioMedia, &gohlslib.Track{
|
||||
Codec: &codecs.Opus{
|
||||
ChannelCount: func() int {
|
||||
if audioFormatOpus.IsStereo {
|
||||
return 2
|
||||
}
|
||||
return 1
|
||||
}(),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue