Browse Source

Merge pull request #7784 from crobibero/support-transcoding

(cherry picked from commit d471be8d929c8021d85d0b9cc97ac2e420a11d65)
Signed-off-by: crobibero <cody@robibe.ro>
Cody Robibero 3 years ago
parent
commit
97b3166ead
1 changed files with 11 additions and 3 deletions
  1. 11 3
      Jellyfin.Api/Helpers/MediaInfoHelper.cs

+ 11 - 3
Jellyfin.Api/Helpers/MediaInfoHelper.cs

@@ -256,9 +256,17 @@ namespace Jellyfin.Api.Helpers
                 streamInfo.StartPositionTicks = startTimeTicks;
                 streamInfo.StartPositionTicks = startTimeTicks;
 
 
                 mediaSource.SupportsDirectPlay = streamInfo.PlayMethod == PlayMethod.DirectPlay;
                 mediaSource.SupportsDirectPlay = streamInfo.PlayMethod == PlayMethod.DirectPlay;
+
                 // Players do not handle this being set according to PlayMethod
                 // Players do not handle this being set according to PlayMethod
-                mediaSource.SupportsDirectStream = options.EnableDirectStream ? streamInfo.PlayMethod == PlayMethod.DirectPlay || streamInfo.PlayMethod == PlayMethod.DirectStream : streamInfo.PlayMethod == PlayMethod.DirectPlay;
-                mediaSource.SupportsTranscoding = streamInfo.PlayMethod == PlayMethod.DirectStream || mediaSource.TranscodingContainer != null;
+                mediaSource.SupportsDirectStream =
+                    options.EnableDirectStream
+                        ? streamInfo.PlayMethod == PlayMethod.DirectPlay || streamInfo.PlayMethod == PlayMethod.DirectStream
+                        : streamInfo.PlayMethod == PlayMethod.DirectPlay;
+
+                mediaSource.SupportsTranscoding =
+                    streamInfo.PlayMethod == PlayMethod.DirectStream
+                    || mediaSource.TranscodingContainer != null
+                    || profile.TranscodingProfiles.Any(i => i.Type == streamInfo.MediaType && i.Context == options.Context);
 
 
                 if (item is Audio)
                 if (item is Audio)
                 {
                 {
@@ -290,7 +298,7 @@ namespace Jellyfin.Api.Helpers
                 }
                 }
                 else
                 else
                 {
                 {
-                    if (mediaSource.SupportsTranscoding || mediaSource.SupportsDirectStream)
+                    if (!mediaSource.SupportsDirectPlay && (mediaSource.SupportsTranscoding || mediaSource.SupportsDirectStream))
                     {
                     {
                         streamInfo.PlayMethod = PlayMethod.Transcode;
                         streamInfo.PlayMethod = PlayMethod.Transcode;
                         mediaSource.TranscodingUrl = streamInfo.ToUrl("-", auth.Token).TrimStart('-');
                         mediaSource.TranscodingUrl = streamInfo.ToUrl("-", auth.Token).TrimStart('-');