CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever
3.0.188.426
dotnet add package CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever --version 3.0.188.426
NuGet\Install-Package CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever -Version 3.0.188.426
<PackageReference Include="CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever" Version="3.0.188.426" />
<PackageVersion Include="CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever" Version="3.0.188.426" />
<PackageReference Include="CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever" />
paket add CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever --version 3.0.188.426
#r "nuget: CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever, 3.0.188.426"
#:package CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever@3.0.188.426
#addin nuget:?package=CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever&version=3.0.188.426
#tool nuget:?package=CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever&version=3.0.188.426
CodeBrix.Platform.MediaPlayerCore
A fully managed, cross-platform audio / video media library family for .NET, providing a comprehensive multimedia API that can render video, output audio, and control playback across Windows, Linux, and macOS desktops.
The heart of this repository is a .NET 10 drop-in-compatible port of the LibVLCSharp NuGet package (version 3.9.7) — the official .NET wrapper around VideoLAN's LibVLC library — narrowed to the cross-platform managed core. It produces three NuGet packages:
| Package | Contents |
|---|---|
CodeBrix.MediaCore.LgplLicenseForever |
The media engine: the libvlc binding itself — LibVLC, Media, MediaPlayer, VideoFrameSink, VideoFrameSource, media/renderer discoverers, equalizer, and dialogs. No managed NuGet dependencies of its own. |
CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever |
The MediaPlayerElement-style management layer and video-view interfaces for building playback UIs. Depends on CodeBrix.MediaCore.LgplLicenseForever (same version). |
CodeBrix.Webcam.LgplLicenseForever |
Webcam capture: rich async device enumeration (resolutions, frame rates, formats, camera controls, paired microphones), live BGRA preview frames for any UI stack, frame-photo capture, MP4/H.264 and MJPEG-passthrough recording, and live-updatable transparent overlay burn-in. Depends on CodeBrix.MediaCore.LgplLicenseForever (same version) — but consumers only ever use CodeBrix.Webcam.* types. |
Namespace note: for drop-in compatibility, all types in the first two packages live under the original CodeBrix.Platform.MediaPlayerCore namespaces — including the types that ship in the CodeBrix.MediaCore assembly. using CodeBrix.Platform.MediaPlayerCore; is the right directive for both. This package-name/namespace mismatch is deliberate and permanent. CodeBrix.Webcam types live under CodeBrix.Webcam.*, and its public API never exposes an engine type (a reflection test in this repository enforces that permanently).
None of these packages bundles the native libvlc engine. The playback packages require it at runtime on every platform; CodeBrix.Webcam requires it only on Linux and macOS (on Windows it captures through the built-in Media Foundation engine instead). The mechanism differs per platform:
- Windows —
CodeBrix.Webcamneeds no native runtime at all: webcam capture and recording use the operating system's built-in Media Foundation engine, so a webcam-only Windows application references no VideoLAN packages. Only the playback packages (CodeBrix.MediaCore/CodeBrix.Platform.MediaPlayerCore) require libvlc on Windows — for those, reference the officialVideoLAN.LibVLC.WindowsNuGet package in the application project. An installed VLC desktop application is not used on Windows. - Linux — install the runtime libraries via the system package manager, e.g.
sudo apt install libvlc5 vlc-plugin-baseon Debian/Ubuntu (no VideoLAN NuGet runtime package exists for Linux; the desktopvlcapplication andlibvlc-devare not needed). - macOS — the VLC media player application (
VLC.app) must be installed: download it from videolan.org/vlc and drag it into/Applications; the loader finds it (and its plugins) automatically. An application may instead bundle the libvlc dylibs itself. Note theVideoLAN.LibVLC.MacNuGet package ships x64-only binaries, so installing VLC is the practical route on Apple Silicon.
If libvlc cannot be loaded, Core.Initialize() throws a VLCException listing the paths searched; CodeBrix.Webcam wraps that in a WebcamException whose message states the per-platform fix. Webcam device enumeration works without libvlc on every platform — only opening a capture session on Linux/macOS (and the playback APIs anywhere) requires it. One Windows-specific limitation of the Media Foundation engine: WebcamVideoFormat.MjpegAvi passthrough recording is not available there — use the default Mp4H264 (hardware-accelerated where available).
All of these packages support applications and assemblies that target Microsoft .NET version 10.0 and later. Microsoft .NET version 10.0 is a Long-Term Supported (LTS) version of .NET, and was released on Nov 11, 2025; and will be actively supported by Microsoft until Nov 14, 2028. Please update your C#/.NET code and projects to the latest LTS version of Microsoft .NET.
The CodeBrix.MediaCore engine supports:
- Play every media file format, every codec, and every streaming protocol supported by libvlc
- Hardware-accelerated decoding up to 8K
- Network browsing for distant filesystems (SMB, FTP, SFTP, NFS) and servers (UPnP, DLNA)
- Playback of Audio CD, DVD, and Bluray with menu navigation
- HDR, including tonemapping for SDR streams
- Audio passthrough with SPDIF and HDMI, including HD codecs (DD+, TrueHD, DTS-HD)
- Video and audio filters
- 360 video and 3D audio playback, including Ambisonics
- Casting and streaming to distant renderers (Chromecast and UPnP renderers)
The CodeBrix.Platform.MediaPlayerCore package adds a MediaPlayerElement-style management layer (state, seek bar, volume, tracks, aspect ratio, auto-hide, buffering-progress, cast-renderers, and device-awakening managers) for building playback UIs on top of the engine.
Sample Code
All samples below need only the CodeBrix.MediaCore.LgplLicenseForever package (the using directive stays CodeBrix.Platform.MediaPlayerCore — see the namespace note above).
Play a local media file
using CodeBrix.Platform.MediaPlayerCore;
Core.Initialize();
using var libVLC = new LibVLC();
using var media = new Media(libVLC, new Uri("file:///path/to/video.mp4"));
using var mediaPlayer = new MediaPlayer(media);
mediaPlayer.Play();
// ... keep the process alive while playback runs ...
Render video frames into memory (windowing-system-agnostic)
using CodeBrix.Platform.MediaPlayerCore;
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);
using var sink = new VideoFrameSink(mediaPlayer); // attach BEFORE Play()
sink.FrameReady += (_, frame) =>
{
// frame.Plane points at 32-bit BGRA pixels (frame.Width x frame.Height,
// frame.PitchBytes per scanline). Raised on a libvlc thread; copy the
// pixels (e.g. into an SKImage or bitmap) before returning.
};
mediaPlayer.Media = new Media(libVLC, new Uri("file:///path/to/video.mp4"));
mediaPlayer.Play();
VideoFrameSink is a CodeBrix addition (not part of the LibVLCSharp 3.9.7 API surface). Because it renders through libvlc's memory output ("vmem") instead of an operating-system window, it works on platforms where libvlc has no window-embedding API — including Wayland and bare-framebuffer Linux hosts — and requires only libvlc's base plugin set.
Enumerate audio output devices
using CodeBrix.Platform.MediaPlayerCore;
using var libVLC = new LibVLC();
foreach (var device in libVLC.AudioOutputDevices())
{
Console.WriteLine($"{device.Description} ({device.DeviceIdentifier})");
}
Capture from a webcam (CodeBrix.Webcam package)
using CodeBrix.Webcam;
using CodeBrix.Webcam.Capture;
using CodeBrix.Webcam.Devices;
var devices = await WebcamDevices.GetImagingMediaDeviceListAsync();
foreach (var cam in devices)
{
Console.WriteLine(cam.FriendlyName);
foreach (var cap in cam.Capabilities)
{
Console.WriteLine($" {cap}"); // e.g. "MJPG 1920x1080 @ 30 fps"
}
}
using var session = new WebcamSession(devices[0]);
session.FrameReceived += (_, frame) =>
{
// BGRA pixels for live preview — copy into your UI stack's bitmap and return fast.
};
session.Start();
WebcamPhoto photo = session.CapturePhoto(); // tightly packed BGRA, ready for
// CodeBrix.Imaging LoadPixelData<Bgra32>
session.StartRecording(new WebcamRecordingOptions("/path/to/clip.mp4"));
// ... later ...
WebcamRecordingResult result = session.StopRecording();
Overlay burn-in: hand session.SetOverlay(...) a straight-alpha BGRA buffer sized to the video, and it is composited into photos and recordings (live-updatable during frame-path recordings). Audio: the camera's paired microphone is captured automatically when it has one (AudioCaptureMode.Auto), can be forced off for silent files, and live monitoring is available but muted by default.
License
Copyright (C) VideoLAN and the LibVLCSharp authors. Copyright (c) 2026 Jeremy Ellis and contributors.
CodeBrix.MediaCore, CodeBrix.Platform.MediaPlayerCore, and CodeBrix.Webcam are licensed under the GNU Lesser General Public License, version 2.1 or later (LGPL-2.1-or-later). See
https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License for an
overview. The full, verbatim LGPL-2.1 text is in LICENSE at the root of
this repository and ships inside all three NuGet packages.
CodeBrix.MediaCore and CodeBrix.Platform.MediaPlayerCore are a port of
LibVLCSharp version 3.9.7
(https://code.videolan.org/videolan/LibVLCSharp), originally authored by
VideoLAN and distributed under the LGPL-2.1-or-later license. All upstream
copyright and license notices are preserved in the ported source files.
Per-file modification notices dated 2026-04-18 appear above every ported
source file. CodeBrix.Webcam is original CodeBrix code (no ported LibVLCSharp
sources), distributed under the same LGPL-2.1-or-later terms for family
consistency. See THIRD-PARTY-NOTICES.txt for the upstream attribution,
the source-availability statement, and the MIT notice covering the bundled
FontAwesome icon-codepoint file.
Notes for consumers
CodeBrix.MediaCore, CodeBrix.Platform.MediaPlayerCore, and CodeBrix.Webcam are
distributed as standalone CodeBrix.MediaCore.dll,
CodeBrix.Platform.MediaPlayerCore.dll, and CodeBrix.Webcam.dll assemblies
inside NuGet packages and are intended to be consumed via
<PackageReference>. This satisfies LGPL-2.1 §6 (relinkability): end users
of your application can replace these DLLs in your bin folder with modified,
interface-compatible versions at any time. Do not static-link these
assemblies into your host assembly (e.g. via ILMerge / ILRepack); doing so
forfeits LGPL-2.1 §6 eligibility and extends the library's copyleft to the
combined work.
Consumers of these libraries are free to license their own code under any
license they choose, provided they (a) preserve this notice, (b) allow end
users to substitute modified versions of the DLLs named above, and (c)
include the LGPL-2.1 license text in their distribution (the LICENSE file
ships inside each NuGet package for this purpose).
Trademark and non-affiliation
CodeBrix.MediaCore, CodeBrix.Platform.MediaPlayerCore, and CodeBrix.Webcam
are independent works and are not endorsed by, sponsored by, or affiliated
with VideoLAN or the LibVLCSharp project. "VideoLAN", "VLC", and "LibVLC" are trademarks of
VideoLAN. The native libvlc library is distributed separately by VideoLAN;
consult https://www.videolan.org/ for its terms (which include codec and
patent considerations not covered by this notice).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- CodeBrix.MediaCore.LgplLicenseForever (>= 3.0.188.426)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on CodeBrix.Platform.MediaPlayerCore.LgplLicenseForever:
| Package | Downloads |
|---|---|
|
CodeBrix.Platform.Runtime.Skia.X11.ApacheLicenseForever
X11 Skia runtime host for CodeBrix.Platform applications. |
|
|
CodeBrix.Platform.MediaPlayer.LgplLicenseForever
This package provides MediaPlayerElement support for CodeBrix.Platform Skia apps on five heads: Windows (Win32 and Skia-on-WPF) and Linux (X11, Wayland, and FrameBuffer). Video is decoded by LibVLC into memory and composited directly into the Skia scene, so no native child windows (and no XWayland) are involved. Reference it once, in your app's .Core project: every head gets it, the Windows and Linux heads activate it, and it is inert on the macOS head (which has built-in AVFoundation media support). The native libvlc runtime is required at runtime: on Linux install it via the system package manager (sudo apt install libvlc5 vlc-plugin-base); on Windows add the VideoLAN.LibVLC.Windows package to your Windows head project(s). This package (and its CodeBrix.Platform.MediaPlayerCore dependency) is LGPL-2.1-or-later licensed. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.188.426 | 79 | 7/7/2026 |
| 3.0.184.1175 | 154 | 7/3/2026 |
| 3.0.183.1173 | 119 | 7/2/2026 |
| 3.0.182.1157 | 115 | 7/1/2026 |
| 3.0.165.1288 | 162 | 6/14/2026 |
| 3.0.117 | 116 | 4/29/2026 |