Browse Source

Only streamCopy videos containing rotation data in fMP4

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
nyanmisaka 1 year ago
parent
commit
95b81ff54a
1 changed files with 11 additions and 0 deletions
  1. 11 0
      Jellyfin.Api/Helpers/DynamicHlsHelper.cs

+ 11 - 0
Jellyfin.Api/Helpers/DynamicHlsHelper.cs

@@ -190,6 +190,17 @@ public class DynamicHlsHelper
             AddSubtitles(state, subtitleStreams, builder, _httpContextAccessor.HttpContext.User);
         }
 
+        // Video rotation metadata is only supported in fMP4 remuxing
+        if (state.VideoStream is not null
+            && state.VideoRequest is not null
+            && (state.VideoStream?.Rotation ?? 0) != 0
+            && EncodingHelper.IsCopyCodec(state.OutputVideoCodec)
+            && !string.IsNullOrWhiteSpace(state.Request.SegmentContainer)
+            && !string.Equals(state.Request.SegmentContainer, "mp4", StringComparison.OrdinalIgnoreCase))
+        {
+            playlistUrl += "&AllowVideoStreamCopy=false";
+        }
+
         var basicPlaylist = AppendPlaylist(builder, state, playlistUrl, totalBitrate, subtitleGroup);
 
         if (state.VideoStream is not null && state.VideoRequest is not null)