Project Structure
EZInfiniteYTLive is intentionally small: a single Visual Studio solution containing one WinForms project.
EZInfiniteYTLive/
├── EZInfiniteYTLive.sln # Visual Studio solution file
├── README.md
├── LICENSE.txt
├── .github/
│ └── workflows/
│ └── dotnet.yml # CI: restore + build with MSBuild on Windows runners
└── EZInfiniteYTLive/ # The WinForms application project
├── EZInfiniteYTLive.csproj # Project file (.NET Framework 4.8.1, WinExe)
├── App.config # Runtime config (targets .NET Framework 4.8.1)
├── Program.cs # Application entry point (Main)
├── Form1.cs # Main window: event handlers / UI logic
├── Form1.Designer.cs # Auto-generated UI layout (controls, positions)
├── Form1.resx # Resources bound to Form1 (designer-managed)
├── VideoStreamer.cs # Core streaming engine (FFmpeg orchestration)
├── Properties/
│ ├── AssemblyInfo.cs # Assembly metadata
│ ├── Resources.resx # Project resources
│ ├── Settings.settings # User/app settings definitions
│ └── Settings.Designer.cs # Auto-generated settings accessor
└── Resources/
└── examples/ # Embedded sample video files
├── 1.mkv
├── 2.mkv
├── 3.mkv
└── sample.mkv
File-by-file summary
| File | Responsibility |
|---|---|
Program.cs | Bootstraps the WinForms application and shows Form1. |
Form1.cs | The entire UI logic: wires up button clicks, radio buttons, input validation, and owns the VideoStreamer instance's lifecycle. |
Form1.Designer.cs | Visual Studio Designer–generated layout code for all the controls shown in Usage Guide. Not meant to be hand-edited. |
VideoStreamer.cs | The actual streaming engine: enumerates video files, and loops FFmpeg subprocesses against the RTMP target forever. |
App.config | Declares the supported .NET Framework runtime (v4.8.1). |
Properties/AssemblyInfo.cs | Standard assembly metadata (title, version, GUID, etc.). |
Properties/Settings.settings / Settings.Designer.cs | Strongly-typed application settings infrastructure generated by Visual Studio (currently unused by application logic, but scaffolded by the template). |
Resources/examples/*.mkv | Small sample .mkv files embedded as resources — useful for quickly testing the app's folder-scanning/looping logic without supplying your own media. |
Solution-level files
EZInfiniteYTLive.sln— the Visual Studio solution, referencing the singleEZInfiniteYTLive.csprojproject..github/workflows/dotnet.yml— GitHub Actions workflow that restores NuGet packages and builds the solution inReleaseconfiguration onwindows-latestfor every push/PR tomain. See CI/CD.
Why no separate "class library"?
Given the project's small scope, the streaming logic (VideoStreamer) lives directly inside the WinForms executable project rather than being split into a separate class library. This keeps the solution simple to build and distribute as a single .exe, at the cost of not being trivially reusable from, say, a console app or another UI toolkit without copying the file.