Files
AmiReel/Models/ShortSettings.cs
T
klevze 323324d713 Add Shorts look preview and visual crop editor
Show opening/closing 9:16 stills from the same filtergraph, and let
users drag a keep-region on a source frame to fill the crop insets.
2026-08-15 21:08:36 +02:00

76 lines
2.3 KiB
C#

namespace AmiReel.Models;
/// <summary>Visual style applied to a YouTube Short. Mirrors the --style values of amigadb-short-fx-v4.sh.</summary>
public enum ShortStyle
{
Brand,
Pixel,
Mirror,
Crop,
Workbench,
Blur,
Crt,
Copper,
Stars,
Grid,
Tiles,
Scan,
Starfield,
Plasma,
Rasterbars,
Vhs,
Monitor,
Split,
Spectrum,
Video,
}
/// <summary>How the video style crops the Amiga source before overlaying it.</summary>
public enum ShortSourceCropMode
{
Auto,
Center,
}
/// <summary>Which moment of the Short a preview still represents.</summary>
public enum ShortPreviewShot
{
Opening,
Closing,
}
/// <summary>PNG stills of the opening hook and closing title card.</summary>
public sealed record ShortPreviewFrames(string OpeningPath, string ClosingPath);
/// <summary>One YouTube Shorts render job's parameters (port of amigadb-short-fx-v4.sh).</summary>
public sealed record ShortSettings
{
public required string InputFile { get; init; }
public required string OutputPath { get; init; }
public required string Title { get; init; }
public string Group { get; init; } = "";
public string Year { get; init; } = "";
public string Type { get; init; } = "";
public required string Hook { get; init; }
public required string Website { get; init; }
public required string Start { get; init; }
public required double DurationSeconds { get; init; }
public required ShortStyle Style { get; init; }
public string BackgroundImage { get; init; } = "";
public string BackgroundVideo { get; init; } = "";
public double VideoBlur { get; init; }
public double VideoOpacity { get; init; } = 1.0;
public ShortSourceCropMode SourceCropMode { get; init; } = ShortSourceCropMode.Auto;
public int CropLeft { get; init; }
public int CropRight { get; init; }
public int CropTop { get; init; }
public int CropBottom { get; init; }
public int SourceMarginX { get; init; } = 40;
public double SourceFadeInSeconds { get; init; } = 1.5;
public required string FontFile { get; init; }
public required string FfmpegPath { get; init; }
public required string FfprobePath { get; init; }
public int Crf { get; init; } = 16;
public string Preset { get; init; } = "slow";
}