# AmiReel AmiReel is a Windows video-rendering tool for turning Amiga AVI captures into: - a 4K 50 FPS final video, - PNG/JPG thumbnails, - an animated WebP preview, - and a publishable Windows desktop app workflow. The repository currently contains two desktop frontends that share the same render pipeline: - `AmiReel.WinUI` The newer WinUI 3 application. This is the default publish target. - `AmigaDB.VideoRenderer.csproj` The existing WPF application. ## Features - multiple ordered AVI inputs - 3840×2160 output at 50 FPS - NVIDIA NVENC with automatic CPU `libx264` fallback - configurable trim, fade, end-card hold, and thumbnail interval - optional end-card image - live render progress with frame counters - FFmpeg log output - source video preview and final render preview - dark and light themes - optional custom `ffmpeg.exe` / `ffprobe.exe` paths - automatic FFmpeg detection from `PATH` - single-file WinUI publish for easier distribution ## Requirements For development: - Windows 10 or Windows 11 - .NET SDK - WPF project: .NET 8 SDK - WinUI project: .NET 10 SDK and WinUI/Windows App SDK support - Windows x64 FFmpeg binaries in `ThirdParty` - `ThirdParty\ffmpeg.exe` - `ThirdParty\ffprobe.exe` For end users: - Windows 10 or Windows 11 x64 - the published AmiReel executable - FFmpeg is not required separately if you distribute AmiReel with embedded `ThirdParty` FFmpeg binaries ## Project Layout - `AmiReel.WinUI\` WinUI 3 frontend - `MainWindow.xaml` and `MainWindow.xaml.cs` WPF frontend - `Services\RenderPipeline.cs` Main render workflow - `Services\ProcessRunner.cs` FFmpeg process execution and progress parsing - `Services\ToolExtractor.cs` FFmpeg resolution, extraction, and fallback logic - `publish-win-x64.ps1` Publish script ## Run in Development ### WinUI ```powershell dotnet build .\AmiReel.WinUI\AmiReel.WinUI.csproj dotnet run --project .\AmiReel.WinUI\AmiReel.WinUI.csproj ``` ### WPF ```powershell dotnet build .\AmigaDB.VideoRenderer.csproj dotnet run --project .\AmigaDB.VideoRenderer.csproj ``` ## Publish ### Default: WinUI The publish script now defaults to the WinUI application: ```powershell .\publish-win-x64.ps1 ``` This publishes the WinUI app as a self-contained single-file executable. At the end of the script you will see: - the release folder path - the final executable path Example output path: ```text AmiReel.WinUI\bin\Release\net10.0-windows10.0.26100.0\win-x64\publish\AmiReel.exe ``` ### Publish WPF instead ```powershell .\publish-win-x64.ps1 -Target Wpf ``` ## Installation ### For developers 1. Clone the repository. 2. Add `ffmpeg.exe` and `ffprobe.exe` to `ThirdParty`. 3. Restore and build the desired app: ```powershell dotnet build .\AmigaDB.VideoRenderer.sln ``` 4. Run either the WinUI or WPF project. ### For end users 1. Copy the published `AmiReel.exe` from the publish folder to any location, for example: ```text C:\Apps\AmiReel\ ``` 2. Double-click `AmiReel.exe`. 3. If FFmpeg is embedded in the build, no extra setup is required. 4. If you want to use your own FFmpeg build: open `Settings` and select: - `ffmpeg.exe` - `ffprobe.exe` ### Optional desktop shortcut 1. Right-click `AmiReel.exe`. 2. Choose `Send to` -> `Desktop (create shortcut)`. ## FFmpeg Behavior AmiReel resolves FFmpeg in this order: 1. custom paths from settings 2. `ffmpeg.exe` and `ffprobe.exe` found on system `PATH` 3. embedded `ThirdParty` binaries If NVENC cannot be initialized, AmiReel automatically falls back to CPU `libx264`. ## Settings Location User settings are stored in: ```text %LOCALAPPDATA%\AmiReel\settings.json ``` This includes values such as: - output folder - end-card path - FFmpeg paths - theme - encoder selection - timing settings ## Notes for Distribution - If you distribute FFmpeg binaries with AmiReel, you are responsible for complying with the license terms of the FFmpeg build you use. - Keep any required notices, source offer, or attribution required by that FFmpeg distribution. - Windows Explorer may cache executable icons. If a freshly published build still shows an old icon, rename the file or refresh the icon cache before assuming the embed failed. ## Troubleshooting ### App falls back to CPU instead of NVENC This usually means FFmpeg could not initialize `h264_nvenc`. AmiReel will continue with CPU encoding automatically. ### FFmpeg tool error If embedded FFmpeg is missing or broken, AmiReel will try: 1. configured tool paths 2. FFmpeg from `PATH` If needed, set the paths manually in `Settings`. ### Render failed popup The popup shows a short human-readable summary. Full technical details remain available in the `FFmpeg log` panel. ## Current Default Recommendation Use the WinUI build for publishing and distribution unless you specifically need the WPF variant.