ソースを参照

Merge pull request #1901 from MediaBrowser/dev

Dev
Luke 9 年 前
コミット
a83f0487e0

+ 10 - 9
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -292,9 +292,9 @@ namespace MediaBrowser.Api.Playback
                 return "h264_qsv";
                 return "h264_qsv";
             }
             }
 
 
-            if (string.Equals(ApiEntryPoint.Instance.GetEncodingOptions().HardwareAccelerationType, "libnvenc", StringComparison.OrdinalIgnoreCase))
+            if (string.Equals(ApiEntryPoint.Instance.GetEncodingOptions().HardwareAccelerationType, "nvenc", StringComparison.OrdinalIgnoreCase))
             {
             {
-                return "libnvenc";
+                return "h264_nvenc";
             }
             }
             if (string.Equals(ApiEntryPoint.Instance.GetEncodingOptions().HardwareAccelerationType, "h264_omx", StringComparison.OrdinalIgnoreCase))
             if (string.Equals(ApiEntryPoint.Instance.GetEncodingOptions().HardwareAccelerationType, "h264_omx", StringComparison.OrdinalIgnoreCase))
             {
             {
@@ -338,8 +338,8 @@ namespace MediaBrowser.Api.Playback
 
 
             }
             }
 
 
-            // h264 (libnvenc)
-            else if (string.Equals(videoCodec, "libnvenc", StringComparison.OrdinalIgnoreCase))
+            // h264 (h264_nvenc)
+            else if (string.Equals(videoCodec, "h264_nvenc", StringComparison.OrdinalIgnoreCase))
             {
             {
                 param = "-preset high-performance";
                 param = "-preset high-performance";
             }
             }
@@ -412,9 +412,9 @@ namespace MediaBrowser.Api.Playback
 
 
             if (!string.IsNullOrEmpty(state.VideoRequest.Level))
             if (!string.IsNullOrEmpty(state.VideoRequest.Level))
             {
             {
-                // h264_qsv and libnvenc expect levels to be expressed as a decimal. libx264 supports decimal and non-decimal format
+                // h264_qsv and h264_nvenc expect levels to be expressed as a decimal. libx264 supports decimal and non-decimal format
                 if (string.Equals(videoCodec, "h264_qsv", StringComparison.OrdinalIgnoreCase) ||
                 if (string.Equals(videoCodec, "h264_qsv", StringComparison.OrdinalIgnoreCase) ||
-                    string.Equals(videoCodec, "libnvenc", StringComparison.OrdinalIgnoreCase))
+                    string.Equals(videoCodec, "h264_nvenc", StringComparison.OrdinalIgnoreCase))
                 {
                 {
                     switch (state.VideoRequest.Level)
                     switch (state.VideoRequest.Level)
                     {
                     {
@@ -458,7 +458,7 @@ namespace MediaBrowser.Api.Playback
 
 
             if (!string.Equals(videoCodec, "h264_omx", StringComparison.OrdinalIgnoreCase) &&
             if (!string.Equals(videoCodec, "h264_omx", StringComparison.OrdinalIgnoreCase) &&
                 !string.Equals(videoCodec, "h264_qsv", StringComparison.OrdinalIgnoreCase) &&
                 !string.Equals(videoCodec, "h264_qsv", StringComparison.OrdinalIgnoreCase) &&
-                !string.Equals(videoCodec, "libnvenc", StringComparison.OrdinalIgnoreCase))
+                !string.Equals(videoCodec, "h264_nvenc", StringComparison.OrdinalIgnoreCase))
             {
             {
                 param = "-pix_fmt yuv420p " + param;
                 param = "-pix_fmt yuv420p " + param;
             }
             }
@@ -1645,9 +1645,10 @@ namespace MediaBrowser.Api.Playback
             var state = new StreamState(MediaSourceManager, Logger)
             var state = new StreamState(MediaSourceManager, Logger)
             {
             {
                 Request = request,
                 Request = request,
-                RequestedUrl = url
+                RequestedUrl = url,
+                UserAgent = Request.UserAgent
             };
             };
-
+            
             //if ((Request.UserAgent ?? string.Empty).IndexOf("iphone", StringComparison.OrdinalIgnoreCase) != -1 ||
             //if ((Request.UserAgent ?? string.Empty).IndexOf("iphone", StringComparison.OrdinalIgnoreCase) != -1 ||
             //    (Request.UserAgent ?? string.Empty).IndexOf("ipad", StringComparison.OrdinalIgnoreCase) != -1 ||
             //    (Request.UserAgent ?? string.Empty).IndexOf("ipad", StringComparison.OrdinalIgnoreCase) != -1 ||
             //    (Request.UserAgent ?? string.Empty).IndexOf("ipod", StringComparison.OrdinalIgnoreCase) != -1)
             //    (Request.UserAgent ?? string.Empty).IndexOf("ipod", StringComparison.OrdinalIgnoreCase) != -1)

+ 8 - 1
MediaBrowser.Api/Playback/StreamState.cs

@@ -75,7 +75,13 @@ namespace MediaBrowser.Api.Playback
             {
             {
                 if (string.Equals(OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase))
                 if (string.Equals(OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase))
                 {
                 {
-                    return 10;
+                    var userAgent = UserAgent ?? string.Empty;
+                    if (userAgent.IndexOf("AppleTV", StringComparison.OrdinalIgnoreCase) != -1)
+                    {
+                        return 10;
+                    }
+
+                    return 6;
                 }
                 }
 
 
                 return 3;
                 return 3;
@@ -99,6 +105,7 @@ namespace MediaBrowser.Api.Playback
         public string OutputVideoSync = "-1";
         public string OutputVideoSync = "-1";
 
 
         public List<string> SupportedAudioCodecs { get; set; }
         public List<string> SupportedAudioCodecs { get; set; }
+        public string UserAgent { get; set; }
 
 
         public StreamState(IMediaSourceManager mediaSourceManager, ILogger logger)
         public StreamState(IMediaSourceManager mediaSourceManager, ILogger logger)
         {
         {

+ 6 - 6
MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs

@@ -607,10 +607,10 @@ namespace MediaBrowser.MediaEncoding.Encoder
 
 
             }
             }
 
 
-            // h264 (libnvenc)
-            else if (string.Equals(videoCodec, "libnvenc", StringComparison.OrdinalIgnoreCase))
+            // h264 (h264_nvenc)
+            else if (string.Equals(videoCodec, "h264_nvenc", StringComparison.OrdinalIgnoreCase))
             {
             {
-                param = "-preset high-performance";
+                param = "-preset llhq";
             }
             }
 
 
             // webm
             // webm
@@ -683,9 +683,9 @@ namespace MediaBrowser.MediaEncoding.Encoder
 
 
             if (!string.IsNullOrEmpty(levelString))
             if (!string.IsNullOrEmpty(levelString))
             {
             {
-                // h264_qsv and libnvenc expect levels to be expressed as a decimal. libx264 supports decimal and non-decimal format
+                // h264_qsv and h264_nvenc expect levels to be expressed as a decimal. libx264 supports decimal and non-decimal format
                 if (string.Equals(videoCodec, "h264_qsv", StringComparison.OrdinalIgnoreCase) ||
                 if (string.Equals(videoCodec, "h264_qsv", StringComparison.OrdinalIgnoreCase) ||
-                    string.Equals(videoCodec, "libnvenc", StringComparison.OrdinalIgnoreCase))
+                    string.Equals(videoCodec, "h264_nvenc", StringComparison.OrdinalIgnoreCase))
                 {
                 {
                     switch (levelString)
                     switch (levelString)
                     {
                     {
@@ -729,7 +729,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
 
 
             if (!string.Equals(videoCodec, "h264_omx", StringComparison.OrdinalIgnoreCase) &&
             if (!string.Equals(videoCodec, "h264_omx", StringComparison.OrdinalIgnoreCase) &&
                 !string.Equals(videoCodec, "h264_qsv", StringComparison.OrdinalIgnoreCase) &&
                 !string.Equals(videoCodec, "h264_qsv", StringComparison.OrdinalIgnoreCase) &&
-                !string.Equals(videoCodec, "libnvenc", StringComparison.OrdinalIgnoreCase))
+                !string.Equals(videoCodec, "h264_nvenc", StringComparison.OrdinalIgnoreCase))
             {
             {
                 param = "-pix_fmt yuv420p " + param;
                 param = "-pix_fmt yuv420p " + param;
             }
             }

+ 1 - 1
MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs

@@ -85,7 +85,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
                 "libopus",
                 "libopus",
                 //"libvorbis",
                 //"libvorbis",
                 "srt",
                 "srt",
-                "libnvenc",
+                "h264_nvenc",
                 "h264_qsv"
                 "h264_qsv"
             };
             };
 
 

+ 2 - 2
MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs

@@ -562,9 +562,9 @@ namespace MediaBrowser.MediaEncoding.Encoder
                 return "h264_qsv";
                 return "h264_qsv";
             }
             }
 
 
-            if (string.Equals(options.HardwareAccelerationType, "libnvenc", StringComparison.OrdinalIgnoreCase))
+            if (string.Equals(options.HardwareAccelerationType, "nvenc", StringComparison.OrdinalIgnoreCase))
             {
             {
-                return "libnvenc";
+                return "h264_nvenc";
             }
             }
             if (string.Equals(options.HardwareAccelerationType, "h264_omx", StringComparison.OrdinalIgnoreCase))
             if (string.Equals(options.HardwareAccelerationType, "h264_omx", StringComparison.OrdinalIgnoreCase))
             {
             {