update live stream bitrates

This commit is contained in:
Luke Pulverenti 2017-01-26 01:26:58 -05:00
parent 8f780269cb
commit 045fdaf387
8 changed files with 37 additions and 36 deletions

View File

@ -1064,8 +1064,6 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var isAudio = false;
await new LiveStreamHelper(_mediaEncoder, _logger).AddMediaInfoWithProbe(stream, isAudio, cancellationToken).ConfigureAwait(false);
stream.InferTotalBitrate();
return new List<MediaSourceInfo>
{
stream
@ -1372,13 +1370,14 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
ActiveRecordingInfo 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;
_logger.Info("Retrying recording in {0} seconds.", retryIntervalSeconds);
timer.Status = RecordingStatus.New;
timer.StartDate = DateTime.UtcNow.AddSeconds(retryIntervalSeconds);
timer.RetryCount++;
_timerProvider.AddOrUpdate(timer);
}
else if (_fileSystem.FileExists(recordPath))

View File

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

View File

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

View File

@ -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 (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);
}
}

View File

@ -72,9 +72,14 @@ namespace MediaBrowser.Model.Dto
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;
}

View File

@ -119,28 +119,4 @@ namespace MediaBrowser.Providers.TV
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;
}
}
}

View File

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

View File

@ -64,5 +64,29 @@ namespace MediaBrowser.Tests
Assert.IsNull(result[0].Number);
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);
}
}
}