diff options
Diffstat (limited to 'Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs')
| -rw-r--r-- | Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs b/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs deleted file mode 100644 index 143350a8b..000000000 --- a/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System; -using System.Globalization; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Controller.MediaEncoding; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; - -namespace Emby.Server.Implementations.LiveTv -{ - public class LiveStreamHelper - { - private readonly IMediaEncoder _mediaEncoder; - private readonly ILogger _logger; - - const int ProbeAnalyzeDurationMs = 3000; - const int PlaybackAnalyzeDurationMs = 3000; - - public LiveStreamHelper(IMediaEncoder mediaEncoder, ILogger logger) - { - _mediaEncoder = mediaEncoder; - _logger = logger; - } - - public async Task AddMediaInfoWithProbe(MediaSourceInfo mediaSource, bool isAudio, CancellationToken cancellationToken) - { - var originalRuntime = mediaSource.RunTimeTicks; - - var now = DateTime.UtcNow; - - var info = await _mediaEncoder.GetMediaInfo(new MediaInfoRequest - { - InputPath = mediaSource.Path, - Protocol = mediaSource.Protocol, - MediaType = isAudio ? DlnaProfileType.Audio : DlnaProfileType.Video, - ExtractChapters = false, - AnalyzeDurationMs = ProbeAnalyzeDurationMs - - }, cancellationToken).ConfigureAwait(false); - - _logger.Info("Live tv media info probe took {0} seconds", (DateTime.UtcNow - now).TotalSeconds.ToString(CultureInfo.InvariantCulture)); - - mediaSource.Bitrate = info.Bitrate; - mediaSource.Container = info.Container; - mediaSource.Formats = info.Formats; - mediaSource.MediaStreams = info.MediaStreams; - mediaSource.RunTimeTicks = info.RunTimeTicks; - mediaSource.Size = info.Size; - mediaSource.Timestamp = info.Timestamp; - mediaSource.Video3DFormat = info.Video3DFormat; - mediaSource.VideoType = info.VideoType; - - mediaSource.DefaultSubtitleStreamIndex = null; - - // Null this out so that it will be treated like a live stream - if (!originalRuntime.HasValue) - { - mediaSource.RunTimeTicks = null; - } - - var audioStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaBrowser.Model.Entities.MediaStreamType.Audio); - - if (audioStream == null || audioStream.Index == -1) - { - mediaSource.DefaultAudioStreamIndex = null; - } - else - { - mediaSource.DefaultAudioStreamIndex = audioStream.Index; - } - - var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaBrowser.Model.Entities.MediaStreamType.Video); - if (videoStream != null) - { - if (!videoStream.BitRate.HasValue) - { - var width = videoStream.Width ?? 1920; - - if (width >= 3000) - { - videoStream.BitRate = 30000000; - } - - else if (width >= 1900) - { - videoStream.BitRate = 20000000; - } - - else if (width >= 1200) - { - videoStream.BitRate = 8000000; - } - - else if (width >= 700) - { - videoStream.BitRate = 2000000; - } - } - - // This is coming up false and preventing stream copy - videoStream.IsAVC = null; - } - - // Try to estimate this - mediaSource.InferTotalBitrate(true); - - mediaSource.AnalyzeDurationMs = PlaybackAnalyzeDurationMs; - } - } -} |
