From 7e05f03f0939543ce01b600358c6f4dfe191e033 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 22 Oct 2016 15:21:50 -0400 Subject: [PATCH] update live tv transcoding params --- MediaBrowser.Api/Playback/BaseStreamingService.cs | 7 ++++++- MediaBrowser.Api/Playback/Hls/BaseHlsService.cs | 7 ++++++- MediaBrowser.Api/Playback/Hls/VideoHlsService.cs | 3 ++- MediaBrowser.Api/Playback/Progressive/VideoService.cs | 10 ++++++++++ .../LiveTv/LiveTvMediaSourceProvider.cs | 7 +------ 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index dc26218a52..16175229b5 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -352,6 +352,11 @@ namespace MediaBrowser.Api.Playback return defaultEncoder; } + protected virtual string GetDefaultH264Preset() + { + return "superfast"; + } + /// /// Gets the video bitrate to specify on the command line /// @@ -375,7 +380,7 @@ namespace MediaBrowser.Api.Playback } else { - param += "-preset superfast"; + param += "-preset " + GetDefaultH264Preset(); } if (encodingOptions.H264Crf >= 0 && encodingOptions.H264Crf <= 51) diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs index 319e4bbb68..06e57bfc03 100644 --- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs @@ -256,7 +256,7 @@ namespace MediaBrowser.Api.Playback.Hls "hls/" + Path.GetFileNameWithoutExtension(outputPath)); } - var args = string.Format("{0} {1} {2} -map_metadata -1 -threads {3} {4} {5} -sc_threshold 0 {6} -hls_time {7} -start_number {8} -hls_list_size {9}{10} -y \"{11}\"", + var args = string.Format("{0} {1} {2} -map_metadata -1 -threads {3} {4} {5} -avoid_negative_ts make_zero -fflags +genpts -sc_threshold 0 {6} -hls_time {7} -start_number {8} -hls_list_size {9}{10} -y \"{11}\"", itsOffset, inputModifier, GetInputArgument(state), @@ -274,6 +274,11 @@ namespace MediaBrowser.Api.Playback.Hls return args; } + protected override string GetDefaultH264Preset() + { + return "veryfast"; + } + protected virtual int GetStartNumber(StreamState state) { return 0; diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs index c7258d72f7..61335a6e0d 100644 --- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs @@ -91,6 +91,7 @@ namespace MediaBrowser.Api.Playback.Hls { args += " -bsf:v h264_mp4toannexb"; } + args += " -flags +global_header"; return args; } @@ -113,7 +114,7 @@ namespace MediaBrowser.Api.Playback.Hls args += GetGraphicalSubtitleParam(state, codec); } - args += " -flags -global_header"; + args += " -flags +global_header"; return args; } diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs index 21e8845f5f..a1d4963c0a 100644 --- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs +++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs @@ -150,6 +150,11 @@ namespace MediaBrowser.Api.Playback.Progressive args += " -copyts -avoid_negative_ts disabled -start_at_zero"; } + if (!state.RunTimeTicks.HasValue) + { + args += " -fflags +genpts -flags +global_header"; + } + return args; } @@ -191,6 +196,11 @@ namespace MediaBrowser.Api.Playback.Progressive args += GetGraphicalSubtitleParam(state, videoCodec); } + if (!state.RunTimeTicks.HasValue) + { + args += " -fflags +genpts -flags +global_header"; + } + return args; } diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs index 393708fb7d..79d321e7e2 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs @@ -159,15 +159,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv private async Task AddMediaInfo(MediaSourceInfo mediaSource, bool isAudio, CancellationToken cancellationToken) { - var originalRuntime = mediaSource.RunTimeTicks; - mediaSource.DefaultSubtitleStreamIndex = null; // Null this out so that it will be treated like a live stream - if (!originalRuntime.HasValue) - { - mediaSource.RunTimeTicks = null; - } + mediaSource.RunTimeTicks = null; var audioStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == Model.Entities.MediaStreamType.Audio);