CodeBrix.VideoPlayback.MitLicenseForever 1.0.241.1343

There is a newer version of this package available.
See the version list below for details.
dotnet add package CodeBrix.VideoPlayback.MitLicenseForever --version 1.0.241.1343
                    
NuGet\Install-Package CodeBrix.VideoPlayback.MitLicenseForever -Version 1.0.241.1343
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CodeBrix.VideoPlayback.MitLicenseForever" Version="1.0.241.1343" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CodeBrix.VideoPlayback.MitLicenseForever" Version="1.0.241.1343" />
                    
Directory.Packages.props
<PackageReference Include="CodeBrix.VideoPlayback.MitLicenseForever" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CodeBrix.VideoPlayback.MitLicenseForever --version 1.0.241.1343
                    
#r "nuget: CodeBrix.VideoPlayback.MitLicenseForever, 1.0.241.1343"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CodeBrix.VideoPlayback.MitLicenseForever@1.0.241.1343
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CodeBrix.VideoPlayback.MitLicenseForever&version=1.0.241.1343
                    
Install as a Cake Addin
#tool nuget:?package=CodeBrix.VideoPlayback.MitLicenseForever&version=1.0.241.1343
                    
Install as a Cake Tool

CodeBrix.VideoPlayback

Royalty-free video playback for .NET 10, with no native binaries, no drawing dependency, and exactly one NuGet dependency.

It reads WebM and Matroska files carrying AV1 video with Opus or Vorbis audio and any number of text caption tracks, and .cbv — a bespoke container this library writes and reads, laid out so that the whole index and every caption cue sit in front of the media data, which is what makes a shipped-with-the-app clip start instantly and a seek cost one read.

What it gives you is the machinery around a codec, and no codec:

  • a playback session with a transport, a clock, A/V sync, seeking, looping, captions and chapters;
  • a frame-buffer pool whose layout lets a decoder write straight into the memory a presenter uploads from — no copy in between, and nothing allocated per frame once playback is warm;
  • a frame presenter: a one-slot mailbox that always holds the newest frame, so the drawing side never waits and never shows a stale picture;
  • a managed SIMD converter from planar YUV to BGRA, for when there is no graphics device to do it;
  • container readers for EBML, Matroska/WebM and .cbv, written clean-room from the published specifications;
  • an authoring muxer that turns an encoder's IVF and Ogg output, plus caption and chapter files, into a .cbv.

The video decoder itself arrives as a separate package and registers itself; audio plays through CodeBrix.Audio. A file whose codec has no decoder fails with a message naming the package to add.

The presenter

This repository also produces CodeBrix.VideoPlayback.Skia, which draws the frames the library above decodes. One class, SkiaVideoPresenter: it composes the newest frame on an off-screen surface — on the graphics device through a single SkSL shader that does the colour conversion and a whole chain of colour effects in one pass, or on the processor through the converter above — lets your application draw over it, and blits the result into whatever canvas your application owns, letterboxed however you asked. It depends on plain SkiaSharp and nothing else: no view package, no native asset, no windowing toolkit.

The two packages are separate so that the choice stays yours. An application that draws frames itself, or runs where Skia does not, takes the first alone.

Installing

dotnet add package CodeBrix.VideoPlayback.MitLicenseForever
dotnet add package CodeBrix.VideoPlayback.Skia.MitLicenseForever   # optional: the presenter

Playing something

using CodeBrix.VideoPlayback;
using CodeBrix.VideoPlayback.Frames;

VideoPlaybackSession session = new VideoPlaybackSession();
session.FrameReady += (s, e) => myView.Invalidate();
session.Open("clip.cbv");
session.Play();

// ...on the thread that draws:
if (session.Presenter.TryTakeLatest(out VideoFrame frame))
{
    using (frame)
    {
        // frame.Y / frame.U / frame.V are the planes, with their colour metadata.
    }
}

Looking inside a file

dotnet run --project tools/CodeBrix.VideoPlayback.Tools -- cbvinfo clip.webm
dotnet run --project tools/CodeBrix.VideoPlayback.Tools -- cbvdecode --headless clip.cbv

cbvinfo prints the tracks, the index, the captions and the chapters, and checks the file against the streamable profile rules. cbvdecode decodes every frame to a hash and a timing summary with no display and no sound device — which is how a build is verified on a small board or a build agent.

Documentation

Licence

MIT, both packages. See LICENSE and THIRD-PARTY-NOTICES.txt — nothing is vendored, and every container reader and every line of the colour shader here was written from its published specification.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on CodeBrix.VideoPlayback.MitLicenseForever:

Package Downloads
CodeBrix.VideoPlayback.Authoring.MitLicenseForever

Authors ".cbv" video files in both of their flavours - the WebM-profile one that FFmpeg writes in a single pass, and the bespoke one that FFmpeg's IVF and Ogg output is muxed into by CodeBrix.VideoPlayback's own muxer - from one request object: AV1 video, Opus or Vorbis audio, WebVTT or SubRip caption tracks with their language, name and flags, chapters from an FFmpeg metadata file, an optional colour-grade chain baked to one lookup table, device-class presets, a dry run that renders every command line without starting anything, and a streamable-profile report over the finished file. This is a DEVELOPER-MACHINE tool: it drives the FFmpeg on the authoring workstation through CodeBrix.VideoProcessing and never belongs in a shipped application.

CodeBrix.VideoPlayback.Dav1d.BsdLicenseForever

AV1 video decoding for CodeBrix.VideoPlayback. A source-generated binding over the dav1d decoder that decodes straight into the playback session's own frame-buffer pool - no copy between the decoder's output and the graphics upload - with self-built native libraries for Windows x64 and ARM64, macOS Intel and Apple Silicon, and Linux x64, ARM64 and RISC-V 64. One Register() call at start-up makes AV1 playable; nothing else in an application ever names a decoder type.

CodeBrix.VideoPlayback.Skia.MitLicenseForever

Draws CodeBrix.VideoPlayback frames through SkiaSharp. SkiaVideoPresenter takes the newest decoded frame and composes it on an off-screen surface - on the GPU through one SkSL shader that does YUV-to-RGB and a resultant colour LUT in a single pass, or on the CPU through the core's SIMD converter - then blits the result into whatever canvas the application owns, with letterboxing, drawable overlay layers and a composed-frame capture. This package holds only what genuinely needs SkiaSharp: the presenter, the canvas-drawing overlay seam and a rectangle bridge. The render paths, the letterbox arithmetic, the composed effect chain and the shader source live in CodeBrix.VideoPlayback, which has no drawing dependency, so another presenter can be built on the same pieces. Plain SkiaSharp only: no view package, no native asset, no windowing dependency.

CodeBrix.Platform.VideoPlayer.ApacheLicenseForever

Video playback for CodeBrix.Platform Skia apps on every head: Windows (Win32 and Skia-on-WPF), Linux (X11, Wayland, FrameBuffer), and macOS. Provides the XAML-declarable VideoPlayer element - a bindable AV1 player for WebM/Matroska files and CodeBrix .cbv files, with play/pause/stop, seek, volume, looping, a timecode position that two-way binds to a Slider for scrubbing, Stretch letterboxing, captions and chapters as data, and a colour-grading effect chain, with an overlay seam (IVideoLayer and the Composing event) for drawing inside the picture. The picture is composed with the CodeBrix.Platform family's own SkiaSharp, so an application carries one SkiaSharp and no second copy: this package depends on the drawing-free CodeBrix.VideoPlayback engine only. It renders on the GPU wherever the running head can supply a Skia GPU context (through the Graphics3DGL add-in) and falls back to the fully managed processor path everywhere else - both paths are first class and either can be demanded outright. Video files load from file paths, http(s):// addresses, ms-appx:/// asset URIs, embedded://Assembly/Resource.Name URIs (embedded resources), or streams. AV1 decoding arrives with the separate CodeBrix.VideoPlayback.Dav1d package and Opus audio with CodeBrix.Audio.Opus, both registered by the application; this package neither depends on nor needs either of them.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.242.1044 33 8/30/2026
1.0.242.419 44 8/30/2026
1.0.241.1343 53 8/29/2026