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();