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.

Programming language: C#
Tags: Graphics     Xamarin     Video     Cross-platform     Media     Codec     Vlc    

LibVLCSharp alternatives and similar packages

Based on the "Graphics" category

  • Live-Charts

    Animated, MVVM friendly .Net charts, for WPF, WinForms under the MIT Licence (Free), written in C#, LiveCharts listens for any change in your data automatically and updates UI. http://lvcharts.net/
  • Oxyplot

    OxyPlot is a cross-platform plotting library for .NET
  • OpenTK

    The Open Toolkit is an advanced, low-level C# library that wraps OpenGL, OpenCL and OpenAL
  • Helix Toolkit

    Helix Toolkit is a collection of 3D components for .NET
  • NGraphics

    NGraphics is a cross-platform library for rendering vector graphics on .NET
  • LibTessDotNet

    .NET port of the famous GLU Tessellator, triangulates polygons
  • 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.

Do you think we are missing an alternative of LibVLCSharp or a related project?

Add another 'Graphics' Package



Build Status Join the chat at https://gitter.im/libvlcsharp/Lobby

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.


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:

  • Plays all formats
  • Network browsing for distant filesystems (SMB, FTP, SFTP, NFS...).
  • HDMI pass-through for Audio HD codecs, like E-AC3, TrueHD or DTS-HD.
  • Stream to distant renderers, like Chromecast.
  • 360 video and 3D audio playback with viewpoint change.
  • Support for Ambisonics audio and more than 8 audio channels.
  • Subtitles size modification live.
  • Hardware and software decoding on all platforms.
  • DVD playback and menu navigation.
  • Equalizer support.

Most things you can achieve with the regular VLC desktop app, you can also achieve using libvlc.

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 (GTK)
  • Xamarin.Forms
  • .NET Standard 1.1 and 2.0
  • .NET Core (including ASP.NET Core)


  1. Install LibVLC in your platform specific project.
Platform LibVLC Package NuGet Minimum OS Version
Windows VideoLAN.LibVLC.Windows LibVLCWindowsBadge Windows XP
UWP VideoLAN.LibVLC.UWP LibVLCWin10Badge Windows 10
Mac VideoLAN.LibVLC.Mac LibVLCMacBadge macOS 10.7
Android VideoLAN.LibVLC.Android LibVLCAndroidBadge Android 2.3
iOS VideoLAN.LibVLC.iOS LibVLCiOSBadge iOS 8.4
tvOS VideoLAN.LibVLC.tvOS LibVLCtvOSBadge tvOS 10.2
Linux [Linux guide](docs/linux-setup.md) N/A N/A
dotnet add package VideoLAN.LibVLC.[Windows|UWP|Android|iOS|Mac|tvOS]

LibVLC is the actual VLC engine written mostly in C/C++ and compiled for your target platform. More information here.

  1. Install LibVLCSharp or LibVLCSharp.Forms (if you plan on using Xamarin.Forms)
Platform LibVLCSharp Package NuGet
.NET Standard [LibVLCSharp](LibVLCSharp/README.md) LibVLCSharpBadge
Xamarin.Android [LibVLCSharp](LibVLCSharp/README.md) LibVLCSharpBadge
Xamarin.iOS [LibVLCSharp](LibVLCSharp/README.md) LibVLCSharpBadge
Xamarin.tvOS [LibVLCSharp](LibVLCSharp/README.md) LibVLCSharpBadge
Xamarin.Mac [LibVLCSharp](LibVLCSharp/README.md) LibVLCSharpBadge
UWP [LibVLCSharp](LibVLCSharp/README.md) LibVLCSharpBadge
Xamarin.Forms [LibVLCSharp.Forms](LibVLCSharp.Forms/README.md) LibVLCSharpFormsBadge
WPF [LibVLCSharp.WPF](LibVLCSharp.WPF/README.md) LibVLCSharpWPFBadge
Xamarin.Forms.WPF [LibVLCSharp.Forms.WPF][RLibVLCSharpFormsWPF] LibVLCSharpFormsWPFBadge
GTK [LibVLCSharp.GTK](LibVLCSharp.GTK/README.md) LibVLCSharpGTKBadge
Xamarin.Forms.GTK [LibVLCSharp.Forms.GTK][RLibVLCSharpFormsGTK] LibVLCSharpFormsGTKBadge
Windows Forms [LibVLCSharp.WinForms][RLibVLCSharpWinForms] LibVLCSharpWinFormsBadge

LibVLCSharp is the .NET wrapper that consumes LibVLC and allows you to interact with native code from C#/F#.

Getting started

Follow the [Getting started guide](GETTING-STARTED.md). Make sure you read it since it contains platform-specific caveats


For more advanced samples, have a look at libvlcsharp-samples. It currently includes:

  • 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.

Feel free to suggest and contribute new samples.

Quick API overview

  • LibVLC.cs: Main object pointing to a native libvlc instance in native code.
  • MediaPlayer.cs: Manages playback, offers event listeners and more. Accessible from VideoView 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 a MediaPlayer 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 the libvlc engine in some cases. Register callbacks with this object.


  • MediaPlayerElement control
  • Game engines (Unity, Unreal, Godot)

If you have a request or question regarding the roadmap, feel free to open an issue or PR.


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](VERSIONING.md) document.

Release Notes

Check out the [NEWS](NEWS) file for details about each release.


Pull request

Pull requests are more than welcome! If you do submit one, please make sure to read the [contributing guidelines](CONTRIBUTING.md) first.

Gitlab issues

You can look through issues we currently have on the VideoLAN Gitlab.



If you have any question or if you're not sure it's actually an issue, please visit our forum.


You have encountered an issue and wish to report it to the VLC dev team?

You can create one on our Gitlab or on our bug tracker.

Before creating an issue or ticket, please double check for duplicates!


Want to quickly get in touch with us for a question, or even just to talk?

You will always find someone from the VLC team on IRC, #videolan channel on the freenode network.

If you don't have an IRC client, you can always use the freenode webchat.

We are also on Gitter Join the chat at https://gitter.im/libvlcsharp/Lobby


We regularly monitor the libvlcsharp tag on stackoverflow

Code of Conduct

Please read and follow the VideoLAN CoC license.


LibVLCSharp is under the LGPLv2.1.

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.