Skip to main content

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​

FileResponsibility
Program.csBootstraps the WinForms application and shows Form1.
Form1.csThe entire UI logic: wires up button clicks, radio buttons, input validation, and owns the VideoStreamer instance's lifecycle.
Form1.Designer.csVisual Studio Designer–generated layout code for all the controls shown in Usage Guide. Not meant to be hand-edited.
VideoStreamer.csThe actual streaming engine: enumerates video files, and loops FFmpeg subprocesses against the RTMP target forever.
App.configDeclares the supported .NET Framework runtime (v4.8.1).
Properties/AssemblyInfo.csStandard assembly metadata (title, version, GUID, etc.).
Properties/Settings.settings / Settings.Designer.csStrongly-typed application settings infrastructure generated by Visual Studio (currently unused by application logic, but scaffolded by the template).
Resources/examples/*.mkvSmall 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 single EZInfiniteYTLive.csproj project.
  • .github/workflows/dotnet.yml — GitHub Actions workflow that restores NuGet packages and builds the solution in Release configuration on windows-latest for every push/PR to main. 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.