diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d595b9d9..2f36d61c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix remote stream durations in playouts created using block, sequential or scripted schedules - Fix playback troubleshooting selecting a subtitle even with no subtitle stream selected in the UI - Fix intermittent watermark opacity +- Improve reliability of live remote streams; they should transcode closer to realtime in most cases ### Changed - Do not use graphics engine for single, permanent watermark diff --git a/ErsatzTV.FFmpeg/InputOption/ReadrateInputOption.cs b/ErsatzTV.FFmpeg/InputOption/ReadrateInputOption.cs index 76ecb0054..008366dc4 100644 --- a/ErsatzTV.FFmpeg/InputOption/ReadrateInputOption.cs +++ b/ErsatzTV.FFmpeg/InputOption/ReadrateInputOption.cs @@ -41,11 +41,10 @@ public class ReadrateInputOption : IInputOption } result.AddRange( - new[] - { - "-readrate_initial_burst", + [ + "-readrate_initial_burst", _initialBurstSeconds.ToString(CultureInfo.InvariantCulture) - }); + ]); } return result.ToArray(); diff --git a/ErsatzTV.FFmpeg/Pipeline/PipelineBuilderBase.cs b/ErsatzTV.FFmpeg/Pipeline/PipelineBuilderBase.cs index 67eda2cd5..1d31d16c5 100644 --- a/ErsatzTV.FFmpeg/Pipeline/PipelineBuilderBase.cs +++ b/ErsatzTV.FFmpeg/Pipeline/PipelineBuilderBase.cs @@ -762,6 +762,11 @@ public abstract class PipelineBuilderBase : IPipelineBuilder private void SetRealtimeInput(VideoInputFile videoInputFile, FrameState desiredState) { + if (videoInputFile.StreamInputKind is StreamInputKind.Live) + { + return; + } + int initialBurst; if (!desiredState.Realtime) {