FFmpegVideoPlayer.Avalonia
2.1.7
dotnet add package FFmpegVideoPlayer.Avalonia --version 2.1.7
NuGet\Install-Package FFmpegVideoPlayer.Avalonia -Version 2.1.7
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="FFmpegVideoPlayer.Avalonia" Version="2.1.7" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FFmpegVideoPlayer.Avalonia" Version="2.1.7" />
<PackageReference Include="FFmpegVideoPlayer.Avalonia" />
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 FFmpegVideoPlayer.Avalonia --version 2.1.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FFmpegVideoPlayer.Avalonia, 2.1.7"
#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 FFmpegVideoPlayer.Avalonia@2.1.7
#: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=FFmpegVideoPlayer.Avalonia&version=2.1.7
#tool nuget:?package=FFmpegVideoPlayer.Avalonia&version=2.1.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
FFmpegVideoPlayer.Avalonia
Self-contained FFmpeg video player for Avalonia UI. FFmpeg libraries bundled - no installation required.

Installation
dotnet add package FFmpegVideoPlayer.Avalonia
Quick Start
Program.cs:
using Avalonia.FFmpegVideoPlayer;
public static void Main(string[] args)
{
FFmpegInitializer.Initialize();
BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
}
App.axaml:
<Application.Styles>
<FluentTheme />
<materialIcons:MaterialIconStyles />
</Application.Styles>
MainWindow.axaml:
<ffmpeg:VideoPlayerControl />
Try the Example
git clone https://github.com/jojomondag/FFmpegVideoPlayer.Avalonia.git
cd FFmpegVideoPlayer.Avalonia/examples/FFmpegVideoPlayerExample
dotnet run
Properties
| Property | Type | Default | Description |
|---|---|---|---|
Source |
string |
null |
Video file path |
AutoPlay |
bool |
False |
Auto-play on load |
Volume |
int |
100 |
Volume (0-100) |
ShowControls |
bool |
True |
Show control bar |
ShowOpenButton |
bool |
True |
Show file picker button |
ControlPanelBackground |
IBrush |
White |
Control bar background |
VideoBackground |
IBrush |
Black |
Video area background (set to Transparent for overlays) |
Methods
| Method | Description |
|---|---|
Open(path) |
Open video file |
Play() |
Start playback |
Pause() |
Pause playback |
Stop() |
Stop and reset |
Seek(float) |
Seek (0.0-1.0) |
ToggleMute() |
Toggle mute |
Events
PlaybackStarted · PlaybackPaused · PlaybackStopped · MediaEnded
Control-less Usage (Custom UI)
For advanced scenarios like live wallpapers or custom video UIs, you can use FFmpegMediaPlayer directly and build your own controls:
using Avalonia.FFmpegVideoPlayer;
// Initialize FFmpeg once at startup
FFmpegInitializer.Initialize();
// Create player instance
var player = new FFmpegMediaPlayer();
// Subscribe to events
player.FrameReady += (s, e) =>
{
// e.Data contains BGRA pixel data
// e.Width, e.Height, e.Stride for frame dimensions
// Render to your own Image control or OpenGL surface
};
player.PositionChanged += (s, e) =>
{
// e.Position is 0.0 to 1.0
// Update your custom seek bar
};
player.Playing += (s, e) => { /* Update UI */ };
player.Paused += (s, e) => { /* Update UI */ };
player.EndReached += (s, e) => { /* Handle loop or next video */ };
// Control playback
player.Open("video.mp4");
player.Play();
player.Pause();
player.Seek(0.5f); // Seek to 50%
player.Volume = 75; // 0-100
// Properties
bool isPlaying = player.IsPlaying;
long durationMs = player.Length;
float position = player.Position; // 0.0 to 1.0
// Cleanup
player.Dispose();
Minimal Control-less Example
<ffmpeg:VideoPlayerControl ShowControls="False"
ShowOpenButton="False"
VideoBackground="Transparent"
Source="background.mp4"
AutoPlay="True" />
Platform Support
| Platform | Status |
|---|---|
| Windows x64 | ✅ Bundled |
| macOS ARM64 | ✅ Bundled |
| macOS x64 / Linux | Add libs to runtimes/<rid>/native/ |
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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.
-
net8.0
- Avalonia (>= 11.3.6)
- FFmpeg.AutoGen (>= 8.0.0)
- Material.Icons.Avalonia (>= 2.4.1)
- OpenTK (>= 4.8.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v2.1.7: Added keyboard shortcuts support (Space, Arrow keys, Volume control). Configurable via EnableKeyboardShortcuts property.