From 8a990d1d95aa22840bae5c3494cb5371bcf2b4d8 Mon Sep 17 00:00:00 2001
From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com>
Date: Wed, 11 Mar 2020 18:16:57 +0100
Subject: [PATCH] Add FRAME-RATE field to HLS master playlist
---
.../Playback/Hls/DynamicHlsService.cs | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
index e6c9213912..d56b5cbff4 100644
--- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
@@ -830,6 +830,32 @@ namespace MediaBrowser.Api.Playback.Hls
}
}
+ ///
+ /// Appends a FRAME-RATE field containing the framerate of the output stream.
+ ///
+ ///
+ /// StringBuilder to append the field to.
+ /// StreamState of the current stream.
+ private void AppendPlaylistFramerateField(StringBuilder builder, StreamState state)
+ {
+ double? framerate = null;
+ if (state.TargetFramerate.HasValue)
+ {
+ framerate = Math.Round(state.TargetFramerate.GetValueOrDefault(), 3);
+ }
+ else if (state.VideoStream.RealFrameRate.HasValue)
+ {
+ framerate = Math.Round(state.VideoStream.RealFrameRate.GetValueOrDefault(), 3);
+ }
+
+ if (framerate.HasValue)
+ {
+ builder.Append(",FRAME-RATE=\"")
+ .Append(framerate.Value)
+ .Append('"');
+ }
+ }
+
private void AppendPlaylist(StringBuilder builder, StreamState state, string url, int bitrate, string subtitleGroup)
{
builder.Append("#EXT-X-STREAM-INF:BANDWIDTH=")
@@ -845,6 +871,8 @@ namespace MediaBrowser.Api.Playback.Hls
AppendPlaylistCodecsField(builder, state);
+ AppendPlaylistFramerateField(builder, state);
+
if (!string.IsNullOrWhiteSpace(subtitleGroup))
{
builder.Append(",SUBTITLES=\"")