فهرست منبع

Update MediaInfoService.cs

Artiume 5 سال پیش
والد
کامیت
b31f4ccbc2
1فایلهای تغییر یافته به همراه48 افزوده شده و 92 حذف شده
  1. 48 92
      MediaBrowser.Api/Playback/MediaInfoService.cs

+ 48 - 92
MediaBrowser.Api/Playback/MediaInfoService.cs

@@ -407,13 +407,8 @@ namespace MediaBrowser.Api.Playback
 
 
             if (mediaSource.SupportsDirectPlay)
             if (mediaSource.SupportsDirectPlay)
             {
             {
-                if (mediaSource.IsRemote && forceDirectPlayRemoteMediaSource && user.Policy.ForceRemoteSourceTranscoding)
+                if (mediaSource.IsRemote && forceDirectPlayRemoteMediaSource)
                 {
                 {
-                    mediaSource.SupportsDirectPlay = false;
-                }
-                else if (mediaSource.IsRemote && user.Policy.ForceRemoteSourceTranscoding)
-                {
-                     mediaSource.SupportsDirectPlay = false;
                 }
                 }
                 else
                 else
                 {
                 {
@@ -460,114 +455,75 @@ namespace MediaBrowser.Api.Playback
 
 
             if (mediaSource.SupportsDirectStream)
             if (mediaSource.SupportsDirectStream)
             {
             {
-                if (mediaSource.IsRemote && forceDirectPlayRemoteMediaSource && user.Policy.ForceRemoteSourceTranscoding)
+                options.MaxBitrate = GetMaxBitrate(maxBitrate, user);
+
+                if (item is Audio)
                 {
                 {
-                    mediaSource.SupportsDirectStream = false;
+                    if (!user.Policy.EnableAudioPlaybackTranscoding)
+                    {
+                        options.ForceDirectStream = true;
+                    }
                 }
                 }
-                else if (mediaSource.IsRemote && user.Policy.ForceRemoteSourceTranscoding)
+                else if (item is Video)
                 {
                 {
-                    mediaSource.SupportsDirectStream = false;
+                    if (!user.Policy.EnableAudioPlaybackTranscoding && !user.Policy.EnableVideoPlaybackTranscoding && !user.Policy.EnablePlaybackRemuxing)
+                    {
+                        options.ForceDirectStream = true;
+                    }
                 }
                 }
+
+                // The MediaSource supports direct stream, now test to see if the client supports it
+                var streamInfo = string.Equals(item.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase) ?
+                    streamBuilder.BuildAudioItem(options) :
+                    streamBuilder.BuildVideoItem(options);
+
+                if (streamInfo == null || !streamInfo.IsDirectStream)
+                {
+                    mediaSource.SupportsDirectStream = false;
                 }
                 }
-                else
+
+                if (streamInfo != null)
                 {
                 {
-                    options.MaxBitrate = GetMaxBitrate(maxBitrate, user);
-                    {
-                    if (item is Audio)
-                        if (!user.Policy.EnableAudioPlaybackTranscoding)
-                        {
-                            options.ForceDirectStream = true;
-                        }
-                    }
-                    else if (item is Video)
-                    {
-                        if (!user.Policy.EnableAudioPlaybackTranscoding && !user.Policy.EnableVideoPlaybackTranscoding && !user.Policy.EnablePlaybackRemuxing)
-                        {
-                            options.ForceDirectStream = true;
-                        }
-                    }
-                    // The MediaSource supports direct stream, now test to see if the client supports it
-                    var streamInfo = string.Equals(item.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase) ?
-                        streamBuilder.BuildAudioItem(options) :
-                        streamBuilder.BuildVideoItem(options);
-                    if (streamInfo == null || !streamInfo.IsDirectStream)
-                    {
-                        mediaSource.SupportsDirectStream = false;
-                    }
-                    if (streamInfo != null)
-                    {
-                        SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, auth.Token);
-                    }
-				}
-             }
+                    SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, auth.Token);
+                }
+            }
 
 
             if (mediaSource.SupportsTranscoding)
             if (mediaSource.SupportsTranscoding)
             {
             {
-				if (mediaSource.IsRemote && user.Policy.ForceRemoteSourceTranscoding)
-				{
-					if (GetMaxBitrate(maxBitrate, user) < mediaSource.Bitrate)
-					{
-						options.MaxBitrate = GetMaxBitrate(maxBitrate, user);
-					}
-					else
-					{
-						options.MaxBitrate = mediaSource.Bitrate;
-					}
-				}
-				else
-			    {
-					options.MaxBitrate = GetMaxBitrate(maxBitrate, user);
-				}
-		
+                options.MaxBitrate = GetMaxBitrate(maxBitrate, user);
+
                 // The MediaSource supports direct stream, now test to see if the client supports it
                 // The MediaSource supports direct stream, now test to see if the client supports it
                 var streamInfo = string.Equals(item.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase) ?
                 var streamInfo = string.Equals(item.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase) ?
                     streamBuilder.BuildAudioItem(options) :
                     streamBuilder.BuildAudioItem(options) :
                     streamBuilder.BuildVideoItem(options);
                     streamBuilder.BuildVideoItem(options);
 
 
-				if (mediaSource.IsRemote && user.Policy.ForceRemoteSourceTranscoding)
-				{
-                    if (streamInfo != null)
+                if (streamInfo != null)
+                {
+                    streamInfo.PlaySessionId = playSessionId;
+
+                    if (streamInfo.PlayMethod == PlayMethod.Transcode)
                     {
                     {
-                        streamInfo.PlaySessionId = playSessionId;                        
                         streamInfo.StartPositionTicks = startTimeTicks;
                         streamInfo.StartPositionTicks = startTimeTicks;
                         mediaSource.TranscodingUrl = streamInfo.ToUrl("-", auth.Token).TrimStart('-');
                         mediaSource.TranscodingUrl = streamInfo.ToUrl("-", auth.Token).TrimStart('-');
-                        mediaSource.TranscodingUrl += "&allowVideoStreamCopy=false";
-                        mediaSource.TranscodingUrl += "&allowAudioStreamCopy=false";
+
+                        if (!allowVideoStreamCopy)
+                        {
+                            mediaSource.TranscodingUrl += "&allowVideoStreamCopy=false";
+                        }
+                        if (!allowAudioStreamCopy)
+                        {
+                            mediaSource.TranscodingUrl += "&allowAudioStreamCopy=false";
+                        }
                         mediaSource.TranscodingContainer = streamInfo.Container;
                         mediaSource.TranscodingContainer = streamInfo.Container;
                         mediaSource.TranscodingSubProtocol = streamInfo.SubProtocol;
                         mediaSource.TranscodingSubProtocol = streamInfo.SubProtocol;
-                        
-                        // Do this after the above so that StartPositionTicks is set
-                        SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, auth.Token);
-                    }				
-				}
-                else
-				{
-                    if (streamInfo != null)
-                    {
-                        streamInfo.PlaySessionId = playSessionId;
-                        if (streamInfo.PlayMethod == PlayMethod.Transcode)
-                        {
-                            streamInfo.StartPositionTicks = startTimeTicks;
-                            mediaSource.TranscodingUrl = streamInfo.ToUrl("-", auth.Token).TrimStart('-');
-
-                            if (!allowVideoStreamCopy)
-                            {
-                                mediaSource.TranscodingUrl += "&allowVideoStreamCopy=false";
-                            }
-                            if (!allowAudioStreamCopy)
-                            {
-                                mediaSource.TranscodingUrl += "&allowAudioStreamCopy=false";
-                            }
-                            mediaSource.TranscodingContainer = streamInfo.Container;
-                            mediaSource.TranscodingSubProtocol = streamInfo.SubProtocol;
-                         }
-                        // Do this after the above so that StartPositionTicks is set
-                        SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, auth.Token);
                     }
                     }
-			    }
+
+                    // Do this after the above so that StartPositionTicks is set
+                    SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, auth.Token);
+                }
             }
             }
         }
         }
-        
+
         private long? GetMaxBitrate(long? clientMaxBitrate, User user)
         private long? GetMaxBitrate(long? clientMaxBitrate, User user)
         {
         {
             var maxBitrate = clientMaxBitrate;
             var maxBitrate = clientMaxBitrate;