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.
77 lines
2.3 KiB
C#
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";
|
|
}
|