mfkl / libvlc-nuget

NuGet packaging setup for LibVLC
GNU Lesser General Public License v2.1
61 stars 10 forks source link
audio c dotnet libvlc media native nuget-packaging player video vlc

libvlc for .NET

Join the chat at https://discord.gg/3h3K3JF

This repository is about presenting libvlc and its capabilities to .NET developers. It also contains packaging tools and files for nuget packaging/deployment. In other words: It's just the same thing as if you had downloaded the files from VideoLAN's website, in a NuGet package, that you can add in your .NET project so that it gets copied into the output directory.

What is libvlc?

libvlc is the multimedia framework powering the VLC applications. It is fully opensource, so other apps use it too.

API documentation: https://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc.html

it contains all modules, data structures and functions documentation to understand how to use the libvlc C API.

The source is in the main VLC repository: https://github.com/videolan/vlc

libvlc is modularized into hundreds of plugins, which may be loaded at runtime. This architecture provides great flexibility to developers (both VLC devs and devs consuming the library). The unified, complete and (somewhat) high level libvlc C API allows a wide range of operations, such as:

Full list of the new 3.0 features can be found here: https://www.videolan.org/vlc/releases/3.0.0.html

Full directory tree overview of what's included (dlls, headers, lib files) in the nuget can be found at https://github.com/mfkl/libvlc-nuget/blob/master/tree.md

How do I use this thing from .NET?

There are usually 2 ways to go about consuming C code from .NET:

Versioning of the nuget packages naturally follow the libvlc versioning.

Build and packaging customization with MSBuild

How do I configure what gets copied to my output directory?

Currently, you can customize three things during the build:

Supported platforms

LibVLC 3:

Latest stable version is 3.0.14. Feel free to check out the release notes.

Minimum OS version supported by LibVLC 3.x:

Windows Classic

 dotnet add package VideoLAN.LibVLC.Windows

NuGet version NuGet downloads

Supported CPU architectures:

Note: if you intend to use libvlc with UWP projects, you probably need to install the UWP package instead because this build directly uses win32 APIs.

Windows Universal

 dotnet add package VideoLAN.LibVLC.UWP

NuGet version NuGet downloads

Supported CPU architectures:

Android

dotnet add package VideoLAN.LibVLC.Android

NuGet Stats NuGet Stats

Supported CPU architectures:

iOS

dotnet add package VideoLAN.LibVLC.iOS

NuGet Stats NuGet Stats

Supported CPU architectures:

macOS

dotnet add package VideoLAN.LibVLC.Mac

NuGet Stats NuGet Stats

Supported CPU architecture:

tvOS

 dotnet add package VideoLAN.LibVLC.tvOS 

NuGet Stats NuGet Stats

Supported CPU architecture:

Linux

For Ubuntu, follow this guide.

Unity3D

Platform Unity Store Asset
Unity3D - Windows VLCUnityBadge
Unity3D - UWP VLCUnityBadge
Unity3D - Android VLCUnityBadge
Unity3D - iOS VLCUnityBadge
Unity3D - macOS VLCUnityBadge

Roadmap

Commercial services

If you would like VLC developers to provide you with:

Feel free to contact us.