Browse Source

normalize video track timescale (#123)

pull/128/head
Jason Dove 4 years ago committed by GitHub
parent
commit
da3e05b231
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      ErsatzTV.Core/FFmpeg/FFmpegPlaybackSettings.cs
  2. 2
      ErsatzTV.Core/FFmpeg/FFmpegPlaybackSettingsCalculator.cs
  3. 10
      ErsatzTV.Core/FFmpeg/FFmpegProcessBuilder.cs
  4. 3
      ErsatzTV.Core/FFmpeg/FFmpegProcessService.cs

1
ErsatzTV.Core/FFmpeg/FFmpegPlaybackSettings.cs

@ -27,5 +27,6 @@ namespace ErsatzTV.Core.FFmpeg @@ -27,5 +27,6 @@ namespace ErsatzTV.Core.FFmpeg
public string AudioCodec { get; set; }
public bool Deinterlace { get; set; }
public Option<string> FrameRate { get; set; }
public Option<int> VideoTrackTimeScale { get; set; }
}
}

2
ErsatzTV.Core/FFmpeg/FFmpegPlaybackSettingsCalculator.cs

@ -91,6 +91,8 @@ namespace ErsatzTV.Core.FFmpeg @@ -91,6 +91,8 @@ namespace ErsatzTV.Core.FFmpeg
result.FrameRate = string.IsNullOrWhiteSpace(ffmpegProfile.FrameRate)
? None
: Some(ffmpegProfile.FrameRate);
result.VideoTrackTimeScale = 90000;
}
if (result.ScaledSize.IsSome || result.PadToDesiredResolution ||

10
ErsatzTV.Core/FFmpeg/FFmpegProcessBuilder.cs

@ -330,6 +330,16 @@ namespace ErsatzTV.Core.FFmpeg @@ -330,6 +330,16 @@ namespace ErsatzTV.Core.FFmpeg
return this;
}
public FFmpegProcessBuilder WithVideoTrackTimeScale(Option<int> videoTrackTimeScale)
{
videoTrackTimeScale.IfSome(timeScale =>
{
_arguments.Add("-video_track_timescale");
_arguments.Add($"{timeScale}");
});
return this;
}
public FFmpegProcessBuilder WithDeinterlace(bool deinterlace)
{
_complexFilterBuilder = _complexFilterBuilder.WithDeinterlace(deinterlace);

3
ErsatzTV.Core/FFmpeg/FFmpegProcessService.cs

@ -49,7 +49,8 @@ namespace ErsatzTV.Core.FFmpeg @@ -49,7 +49,8 @@ namespace ErsatzTV.Core.FFmpeg
.WithRealtimeOutput(playbackSettings.RealtimeOutput)
.WithSeek(playbackSettings.StreamSeek)
.WithInputCodec(path, playbackSettings.HardwareAcceleration, videoStream.Codec)
.WithFrameRate(playbackSettings.FrameRate);
.WithFrameRate(playbackSettings.FrameRate)
.WithVideoTrackTimeScale(playbackSettings.VideoTrackTimeScale);
playbackSettings.ScaledSize.Match(
scaledSize =>

Loading…
Cancel
Save