Description
LibVLCSharp is a cross-platform audio and video API for .NET platforms based on VideoLAN's LibVLC Library. It provides a comprehensive multimedia API that can be used across mobile, server and desktop to render video and output audio as well as encode and stream.
LibVLCSharp alternatives and similar packages
Based on the "Graphics" category.
Alternatively, view LibVLCSharp alternatives based on common mentions on social networks and blogs.
-
Live-Charts
DISCONTINUED. Simple, flexible, interactive & powerful charts, maps, and gauges for .Net, LiveCharts2 can now practically run everywhere WPF, WinForms, Xamarin, Avalonia, WinUI, UWP. -
LiveCharts2
Simple, flexible, interactive & powerful charts, maps and gauges for .Net, LiveCharts2 can now practically run everywhere Maui, Uno Platform, Blazor-wasm, WPF, WinForms, Xamarin, Avalonia, WinUI, UWP. -
Silk.NET
The high-speed OpenGL, OpenCL, OpenAL, OpenXR, GLFW, SDL, Vulkan, Assimp, WebGPU, and DirectX bindings library your mother warned you about. -
OpenTK
The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac. -
Win2D
Win2D is an easy-to-use Windows Runtime API for immediate mode 2D graphics rendering with GPU acceleration. It is available to C#, C++ and VB developers writing apps for the Windows Universal Platform (UWP). It utilizes the power of Direct2D, and integrates seamlessly with XAML and CoreWindow. -
Interactive Data Display for WPF
DISCONTINUED. Interactive Data Display for WPF is a set of controls for adding interactive visualization of dynamic data to your application. It allows to create line graphs, bubble charts, heat maps and other complex 2D plots which are very common in scientific software. Interactive Data Display for WPF integrates well with Bing Maps control to show data on a geographic map in latitude/longitude coordinates. The controls can also be operated programmatically. -
NGraphics
NGraphics is a cross platform library for rendering vector graphics on .NET. It provides a unified API for both immediate and retained mode graphics using high quality native renderers. -
LibTessDotNet
C# port of the famous GLU Tessellator - prebuilt binaries now available in "releases" tab -
AssimpNet
A cross-platform .NET Standard wrapper for the Open Asset Importer ("Assimp"). The library enables importing, processing, and exporting of 3D models for rendering in graphics/game applications. Over 40 formats are supported for importing (e.g. OBJ, FBX, GLTF, 3DS, Collada) and a subset of those formats can be exported to (e.g. OBJ, GLTF, 3DS, Collada). Mesh processing features allow for mesh data to be generated or optimized for real-time rendering.
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of LibVLCSharp or a related project?
README
LibVLCSharp
LibVLCSharp is a cross-platform audio and video API for .NET platforms based on VideoLAN's LibVLC Library. It provides a comprehensive multimedia API that can be used across mobile, server and desktop to render video and output audio as well as encode and stream.
The official repository URL for this repo is https://code.videolan.org/videolan/LibVLCSharp.
- Features
- Supported platforms
- Installation
- Getting started
- Documentation
- Ebook
- [Migrating from Vlc.DotNet](docs/migrating_from_Vlc.DotNet.md)
- Samples
- Quick API overview
- Roadmap
- Versioning
- Release Notes
- Contribute
- Questions and Support
- Code of Conduct
- Licenses
Features
Check out libvlc-nuget to get a basic understanding of how libvlc
works, what it can offer and how to install it with NuGet.
Some of the features include:
- Play every media file formats, every codec and every streaming protocols
- Run on every platform, from desktop (Windows, Linux, Mac) to mobile (Android, iOS) and TVs
- Hardware and efficient decoding on every platform, 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
- Support for HDR, including tonemapping for SDR streams
- Audio passthrough with SPDIF and HDMI, including for Audio HD codecs, like DD+, TrueHD or DTS-HD
- Support for video and audio filters
- Support for 360 video and 3D audio playback, including Ambisonics
- Able to cast and stream to distant renderers, like Chromecast and UPnP renderers.
Most things you can achieve with the regular VLC desktop app, you can also achieve using libvlc
.
MediaPlayerElement
Full featured video control for Xamarin.Forms available in LibVLCSharp.Forms (iOS/Android) and Uno platform (iOS/Android/UWP).
Supported platforms
Mono, .NET Framework and .NET Core runtimes are supported.
- Xamarin.Android
- Xamarin.iOS
- Xamarin.tvOS
- Xamarin.Mac (Cocoa)
- Windows Classic (WPF, WinForms, GTK)
- Windows Universal (UWP for Desktop, mobile and Xbox)
- Linux including desktop, server and Raspberry Pi (GTK)
- Xamarin.Forms
- Uno Platform (UWP, Android, iOS)
- Avalonia (Windows, macOS, Linux)
- .NET Standard 1.1 and 2.0
- .NET Framework 4.0 and later
- .NET Core (including ASP.NET Core)
- Unity3D
- Windows Classic
- Android
Installation
- Install LibVLC in your platform specific project.
LibVLC is the actual VLC engine written mostly in C/C++ and compiled for your target platform. More information here.
dotnet add package VideoLAN.LibVLC.[Windows|UWP|Android|iOS|Mac|tvOS]
- Install LibVLCSharp or LibVLCSharp.Forms (if you plan on using Xamarin.Forms)
LibVLCSharp is the .NET wrapper that consumes LibVLC
and allows you to interact with native code from C#/F#.
Platform | LibVLCSharp Package | NuGet |
---|---|---|
.NET Standard | [LibVLCSharp](src/LibVLCSharp/README.md) | |
Xamarin.Android | [LibVLCSharp](src/LibVLCSharp/README.md) | |
Xamarin.iOS | [LibVLCSharp](src/LibVLCSharp/README.md) | |
Xamarin.tvOS | [LibVLCSharp](src/LibVLCSharp/README.md) | |
Xamarin.Mac | [LibVLCSharp](src/LibVLCSharp/README.md) | |
UWP | [LibVLCSharp](src/LibVLCSharp/README.md) | |
Xamarin.Forms | [LibVLCSharp.Forms][RLibVLCSharpForms] | |
WPF | [LibVLCSharp.WPF][RLibVLCSharpWPF] | |
Xamarin.Forms.WPF | [LibVLCSharp.Forms.WPF][RLibVLCSharpFormsWPF] | |
GTK | [LibVLCSharp.GTK][RLibVLCSharpGTK] | |
Xamarin.Forms.GTK | [LibVLCSharp.Forms.GTK][RLibVLCSharpFormsGTK] | |
Windows Forms | [LibVLCSharp.WinForms][RLibVLCSharpWinForms] | |
Uno Platform | [LibVLCSharp.Uno][RLibVLCSharpUno] | |
Avalonia | [LibVLCSharp.Avalonia][RLibVLCSharpAvalonia] | |
Eto.Forms | [LibVLCSharp.Eto][RLibVLCSharpEto] | |
Unity3D - Windows | VLC for Unity (Windows) | |
Unity3D - Android | VLC for Unity (Android) |
Pre-release versions
LibVLCSharp 4 preview and LibVLC 4 nightly builds are distributed using https://feedz.io/ for now. To pull pre-release versions into your project, use the following NuGet.config
file:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="videolan-preview" value="https://f.feedz.io/videolan/preview/nuget/index.json" />
</packageSources>
</configuration>
See the docs for [preview builds installation details](docs/libvlc_preview.md).
Getting started
Follow the [Getting started guide](docs/getting_started.md). Make sure you read it since it contains platform-specific caveats
Documentation
Our [Documentation](docs/home.md) is part of this repository.
Feel free to browse it and if you see something missing, you can improve it by sending a PR.
It includes helpful documents such as:
[Best practices](docs/best_practices.md)
This document details how to use LibVLCSharp in a correct way, notably taking into consideration the native interop part.
[Q&A guide](docs/how_do_I_do_X.md)
This is a Q&A document which I compiled from all the questions I got asked regarding LibVLC and LibVLCSharp. Continuously updated.
[Troubleshooting issues](docs/troubleshooting.md)
When you encounter an issue with LibVLC/LibVLCSharp, identifying the cause is not always straightforward. This document gives you clues on how to go about it.
[Libvlc specific information](docs/libvlc_documentation.md)
This page focuses on the core native library and contains information regarding advanced libvlc configuration and its versioning strategy by VideoLAN.
[Tutorials](docs/tutorials.md)
This page indexes all available tutorial materials about LibVLCSharp. There are currently videos, talks, blogposts and code samples.
[Community projects](docs/made_with_libvlcsharp.md)
Here we list several interesting projects made by the community using LibVLCSharp. Feel free to send a PR to yours!
Ebook
In September 2022, the first book ever about LibVLC, the VideoLAN community and LibVLCSharp was released!
The Good Parts of LibVLC contains everything you need to know about VLC, LibVLC and how to use it from .NET with LibVLCSharp.
Samples
For more advanced samples, have a look at libvlcsharp-samples with apps such as:
- Chromecast sample: Discover chromecasts on your local network and select one for playback in 100% shared code (Xamarin.Forms, iOS/Android).
- Record HLS sample: Simple .NET Core CLI app which shows how to record an HLS stream to the filesystem.
- RTSP Mosaic sample: Cross-platform RTSP player sample with 4 views mosaic (Xamarin.Forms, iOS/Android).
- PulseMusic UX sample: A stylish music player UX example using Skia on iOS and Android.
- Gestures sample: Cross-platform touch gestures and 360 videos on iOS and Android.
- LocalNetwork sample: Cross-platform local network browsing and playback with network shares (SMB, UPnP) on Android, iOS and WPF.
- MediaPlayerElement sample: Minimal iOS/Android sample showing how to get started with the crossplatform MediaPlayerElement control from LibVLCSharp.Forms.
- SkiaSharp Preview Thumbnailer sample: .NET Core sample app showing how to use LibVLC 3 video callbacks and encode the frame with SkiaSharp before saving it to disk.
- lvst: Watch a movie while it is downloading! lvst is a .NET Core CLI app using MonoTorrent and LibVLCSharp for macOS, Linux and Windows.
Feel free to suggest and contribute new samples.
Quick API overview
using var libvlc = new LibVLC(enableDebugLogs: true);
using var media = new Media(libvlc, new Uri(@"C:\tmp\big_buck_bunny.mp4"));
using var mediaplayer = new MediaPlayer(media);
mediaplayer.Play();
Console.ReadKey();
LibVLC.cs
: Main object pointing to a nativelibvlc
instance in native code.MediaPlayer.cs
: Manages playback, offers event listeners and more. Accessible fromVideoView
with data-binding support.Media.cs
: Class representing and providing information about a media such as a video or audio file or stream.VideoView.cs
: Custom native view which holds aMediaPlayer
object.MediaDiscoverer.cs
: This object should be used to find media on NAS and any SMB/UPnP-enabled device on your local network.RendererDiscoverer.cs
: Use this to find and use a Chromecast or other distant renderers.Dialog.cs
: Dialogs can be raised from thelibvlc
engine in some cases. Register callbacks with this object.
The [LibVLCSharp.Forms](src/LibVLCSharp.Forms/README.md) and [Uno](src/LibVLCSharp.Uno/README.md) packages features a MediaPlayerElement
control, similar to the ones provided by the .NET Framework on WPF and UWP. It currently supports iOS, Android and UWP (Uno only).
Roadmap
If you have a request or question regarding the roadmap, feel free to open an issue (using an issue template) or PR.
Versioning
As this is a libvlc binding, we try to follow the libvlc versioning scheme as much as possible. The versioning strategy is explained in the [versioning](docs/versioning.md) document.
Release Notes
Check out the [NEWS](NEWS) file for details about each release.
Contribute
Pull request
Pull requests are more than welcome! If you do submit one, please make sure to read the [contributing guidelines](CONTRIBUTING.md) first, and use our pull request template.
Gitlab issues
You can look through issues we currently have on the VideoLAN Gitlab. Please pick one of our GitLab issue templates so we can assist you better.
There are up for grabs tickets as well if you would like to start contributing.
Questions and Support
Bug trackers
You have encountered an issue and wish to report it to the VLC dev team?
You can create one on our Gitlab (using an issue template) for .NET related questions/problems.
For LibVLC/VLC specific issues, usually native code, please go to the bug tracker of the VLC project.
Before creating an issue or ticket, please double check for duplicates!
Discord
StackOverflow
We regularly monitor the libvlcsharp
tag on
Forum
If you have any question or if you're not sure it's actually an issue, please visit our forum.
Commercial services
If you would like VLC developers to provide you with:
- custom development on LibVLC and/or LibVLCSharp,
- training and workshops,
- commercial licenses,
- support services,
- consulting services,
- other multimedia services.
Feel free to contact us.
Code of Conduct
Please read and follow the VideoLAN CoC license.
Licenses
LibVLCSharp is released under the LGPLv2.1 and is also available under a commercial license.
Note: the .NET4.0 LibVLCSharp build references a nuget package that may indicate its license as the .NET Library license but it's actually opensource under MIT.
*Note that all licence references and agreements mentioned in the LibVLCSharp README section above
are relevant to that project's source code only.