Files
AmiReel/Models/ShortSettings.cs
T
klevze a590904e89 Add video preview, source crop, find-videos, and render toasts
Bring the Video tab closer to Shorts with 4K preview stills and crop
modes (none, auto, center, plus the visual editor). Settings store a
default source folder so Find videos can collect output.avi sequences.
Cap the FFmpeg log with auto-scroll, hide repeat spam, and show a
Windows notification when a video or short finishes or fails.
2026-08-16 09:20:56 +02:00

77 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 Amiga source is cropped before it is scaled into the output.</summary>
public enum ShortSourceCropMode
{
None,
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";
}