diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs index 2fb7f81421..787727cd3a 100644 --- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs @@ -120,8 +120,9 @@ namespace MediaBrowser.Api.Playback.Hls await WaitForMinimumSegmentCount(playlist, 3).ConfigureAwait(false); } - var audioBitrate = GetAudioBitrateParam(state) ?? 0; - var videoBitrate = GetVideoBitrateParam(state) ?? 0; + int audioBitrate; + int videoBitrate; + GetPlaylistBitrates(state, out audioBitrate, out videoBitrate); var appendBaselineStream = false; var baselineStreamBitrate = 64000; @@ -145,6 +146,37 @@ namespace MediaBrowser.Api.Playback.Hls } } + /// + /// Gets the playlist bitrates. + /// + /// The state. + /// The audio bitrate. + /// The video bitrate. + private void GetPlaylistBitrates(StreamState state, out int audioBitrate, out int videoBitrate) + { + var audioBitrateParam = GetAudioBitrateParam(state); + var videoBitrateParam = GetVideoBitrateParam(state); + + if (!audioBitrateParam.HasValue) + { + if (state.AudioStream != null) + { + audioBitrateParam = state.AudioStream.BitRate; + } + } + + if (!videoBitrateParam.HasValue) + { + if (state.VideoStream != null) + { + videoBitrateParam = state.VideoStream.BitRate; + } + } + + audioBitrate = audioBitrateParam ?? 0; + videoBitrate = videoBitrateParam ?? 0; + } + private string GetMasterPlaylistFileText(string firstPlaylist, int bitrate, bool includeBaselineStream, int baselineStreamBitrate) { var builder = new StringBuilder();