libvlcsharp

[删除(380066935@qq.com或微信通知)]

更好的阅读体验请查看原文:https://github.com/videolan/libvlcsharp

LibVLCSharp

videolan/libvlcsharp: Cross-platform .NET/Mono bindings for LibVLC (github.com)

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.

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

Getting started

Follow the Getting started guide. Make sure you read it since it contains platform-specific caveats

Documentation

Our Documentation 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

This document details how to use LibVLCSharp in a correct way, notably taking into consideration the native interop part.

Q&A guide

This is a Q&A document which I compiled from all the questions I got asked regarding LibVLC and LibVLCSharp. Continuously updated.

Troubleshooting issues

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

This page focuses on the core native library and contains information regarding advanced libvlc configuration and its versioning strategy by VideoLAN.

Tutorials

This page indexes all available tutorial materials about LibVLCSharp. There are currently videos, talks, blogposts and code samples.

Community projects

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

The LibVLCSharp.Forms and Uno 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).