Przeglądaj źródła

update live stream bitrates

Luke Pulverenti 8 lat temu
rodzic
commit
045fdaf387

+ 2 - 3
Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs

@@ -1064,8 +1064,6 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
                 var isAudio = false;
                 var isAudio = false;
                 await new LiveStreamHelper(_mediaEncoder, _logger).AddMediaInfoWithProbe(stream, isAudio, cancellationToken).ConfigureAwait(false);
                 await new LiveStreamHelper(_mediaEncoder, _logger).AddMediaInfoWithProbe(stream, isAudio, cancellationToken).ConfigureAwait(false);
 
 
-                stream.InferTotalBitrate();
-
                 return new List<MediaSourceInfo>
                 return new List<MediaSourceInfo>
                 {
                 {
                     stream
                     stream
@@ -1372,13 +1370,14 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
             ActiveRecordingInfo removed;
             ActiveRecordingInfo removed;
             _activeRecordings.TryRemove(timer.Id, out removed);
             _activeRecordings.TryRemove(timer.Id, out removed);
 
 
-            if (recordingStatus != RecordingStatus.Completed && DateTime.UtcNow < timer.EndDate)
+            if (recordingStatus != RecordingStatus.Completed && DateTime.UtcNow < timer.EndDate && timer.RetryCount < 10)
             {
             {
                 const int retryIntervalSeconds = 60;
                 const int retryIntervalSeconds = 60;
                 _logger.Info("Retrying recording in {0} seconds.", retryIntervalSeconds);
                 _logger.Info("Retrying recording in {0} seconds.", retryIntervalSeconds);
 
 
                 timer.Status = RecordingStatus.New;
                 timer.Status = RecordingStatus.New;
                 timer.StartDate = DateTime.UtcNow.AddSeconds(retryIntervalSeconds);
                 timer.StartDate = DateTime.UtcNow.AddSeconds(retryIntervalSeconds);
+                timer.RetryCount++;
                 _timerProvider.AddOrUpdate(timer);
                 _timerProvider.AddOrUpdate(timer);
             }
             }
             else if (_fileSystem.FileExists(recordPath))
             else if (_fileSystem.FileExists(recordPath))

+ 1 - 1
Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs

@@ -96,7 +96,7 @@ namespace Emby.Server.Implementations.LiveTv
             }
             }
 
 
             // Try to estimate this
             // Try to estimate this
-            mediaSource.InferTotalBitrate();
+            mediaSource.InferTotalBitrate(true);
         }
         }
     }
     }
 }
 }

+ 1 - 0
MediaBrowser.Controller/LiveTv/TimerInfo.cs

@@ -94,6 +94,7 @@ namespace MediaBrowser.Controller.LiveTv
         /// <value>The priority.</value>
         /// <value>The priority.</value>
         public int Priority { get; set; }
         public int Priority { get; set; }
 
 
+        public int RetryCount { get; set; }
 
 
         // Program properties
         // Program properties
         public int? SeasonNumber { get; set; }
         public int? SeasonNumber { get; set; }

+ 1 - 5
MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs

@@ -187,11 +187,7 @@ namespace MediaBrowser.MediaEncoding.Probing
                 // If ffprobe reported the container bitrate as being the same as the video stream bitrate, then it's wrong
                 // If ffprobe reported the container bitrate as being the same as the video stream bitrate, then it's wrong
                 if (videoStreamsBitrate == (info.Bitrate ?? 0))
                 if (videoStreamsBitrate == (info.Bitrate ?? 0))
                 {
                 {
-                    var streamBitrates = info.MediaStreams.Where(i => !i.IsExternal).Select(i => i.BitRate ?? 0).Sum();
-                    if (streamBitrates > (info.Bitrate ?? 0))
-                    {
-                        info.Bitrate = streamBitrates;
-                    }
+                    info.InferTotalBitrate(true);
                 }
                 }
             }
             }
 
 

+ 7 - 2
MediaBrowser.Model/Dto/MediaSourceInfo.cs

@@ -72,9 +72,14 @@ namespace MediaBrowser.Model.Dto
             SupportsProbing = true;
             SupportsProbing = true;
         }
         }
 
 
-        public void InferTotalBitrate()
+        public void InferTotalBitrate(bool force = false)
         {
         {
-            if (Bitrate.HasValue || MediaStreams == null)
+            if (MediaStreams == null)
+            {
+                return;
+            }
+
+            if (!force && Bitrate.HasValue)
             {
             {
                 return;
                 return;
             }
             }

+ 0 - 24
MediaBrowser.Providers/TV/TvExternalIds.cs

@@ -119,28 +119,4 @@ namespace MediaBrowser.Providers.TV
             return item is Series;
             return item is Series;
         }
         }
     }
     }
-
-    public class TvComPersonExternalId : IExternalId
-    {
-        public string Name
-        {
-            get { return "TV.com"; }
-        }
-
-        public string Key
-        {
-            get { return MetadataProviders.Tvcom.ToString(); }
-        }
-
-        public string UrlFormatString
-        {
-            get { return null; }
-        }
-
-        public bool Supports(IHasProviderIds item)
-        {
-            return item is Person;
-        }
-    }
-
 }
 }

+ 1 - 1
MediaBrowser.Server.Startup.Common/LiveTv/TunerHosts/SatIp/SatIpHost.cs

@@ -115,7 +115,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.SatIp
                     RequiresClosing = false
                     RequiresClosing = false
                 };
                 };
 
 
-                mediaSource.InferTotalBitrate();
+                mediaSource.InferTotalBitrate(true);
 
 
                 return new List<MediaSourceInfo> { mediaSource };
                 return new List<MediaSourceInfo> { mediaSource };
             }
             }

+ 24 - 0
MediaBrowser.Tests/M3uParserTest.cs

@@ -64,5 +64,29 @@ namespace MediaBrowser.Tests
             Assert.IsNull(result[0].Number);
             Assert.IsNull(result[0].Number);
             Assert.AreEqual("ABC KABC Los Angeles", result[0].Name);
             Assert.AreEqual("ABC KABC Los Angeles", result[0].Name);
         }
         }
+
+        [TestMethod]
+        public void TestFormat5()
+        {
+            BaseExtensions.CryptographyProvider = new CryptographyProvider();
+
+            var result = new M3uParser(new NullLogger(), null, null, null).ParseString("#EXTINF:-1 channel-id=\"2101\" tvg-id=\"I69387.json.schedulesdirect.org\" group-title=\"Entertainment\",BBC 1 HD\nhttp://mystream", "-", "-");
+            Assert.AreEqual(1, result.Count);
+
+            Assert.AreEqual("BBC 1 HD", result[0].Name);
+            Assert.AreEqual("2101", result[0].Number);
+        }
+
+        [TestMethod]
+        public void TestFormat6()
+        {
+            BaseExtensions.CryptographyProvider = new CryptographyProvider();
+
+            var result = new M3uParser(new NullLogger(), null, null, null).ParseString("#EXTINF:-1 tvg-id=\"2101\" group-title=\"Entertainment\",BBC 1 HD\nhttp://mystream", "-", "-");
+            Assert.AreEqual(1, result.Count);
+
+            Assert.AreEqual("BBC 1 HD", result[0].Name);
+            Assert.AreEqual("2101", result[0].Number);
+        }
     }
     }
 }
 }