Commit 291cc943 authored by Martin Finkel's avatar Martin Finkel
Browse files

README: Update

parent 5f6cd9fa
......@@ -7,12 +7,11 @@
[![Build Status](https://videolan.visualstudio.com/LibVLCSharp/_apis/build/status/LibVLCSharp-GitLab?branchName=master)](https://videolan.visualstudio.com/LibVLCSharp/_build/latest?definitionId=10?branchName=master)
[![Join the chat at https://gitter.im/libvlcsharp/Lobby](https://badges.gitter.im/libvlcsharp/Lobby.svg)](https://gitter.im/libvlcsharp/Lobby)
LibVLCSharp are .NET/Mono bindings for `libvlc`, the multimedia framework powering the VLC applications.
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._
- [Goal](#goal)
- [Features](#features)
- [Supported platforms](#supported-platforms)
- [Installation](#installation)
......@@ -29,62 +28,50 @@ _The official repository URL for this repo is https://code.videolan.org/videolan
- [Code of Conduct](#code-of-conduct)
- [License](#license)
## Goal
LibVLCSharp's goal is to support all .NET runtimes (Xamarin/Mono, .NET Core and .NET Framework) on most operating systems by targeting .NET Standard 2.0.
We also aim to provide you with a custom video control integrated with the OS native UI toolkit. That means integration with UWP, Cocoa (Xamarin.Mac), GTK# and game engines with Mono support (Unity, Unreal, Godot). For a current status, see [Supported platforms](#supported-platforms) and [Roadmap](#roadmap).
`libvlc` is a complete, opensource and crossplatform multimedia framework written in C. On the other hand, Xamarin allows true crossplatform .NET code on all platforms and provides an efficient way to build crossplatform UIs with Xamarin.Forms.
LibVLCSharp is designed to be the connecting layer in between `libvlc` and Xamarin.
Using LibVLCSharp means you can take advantage of all `libvlc` features from shared managed code (C#/F#), in a true crossplatform way. You may use the features described below on all [supported platforms](#supported-platforms) by LibVLCSharp.
## Features
Check out [libvlc-nuget](https://github.com/mfkl/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:
Some of the [features](https://www.videolan.org/vlc/features.html) include:
- Network browsing for distant filesystems (SMB, FTP, SFTP, NFS...).
- HDMI passthrough for Audio HD codecs, like E-AC3, TrueHD or DTS-HD.
- 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 decoding and display 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.Mac
- Windows (WPF/WinForms)
- Xamarin.Forms
- iOS
- Android
- Mac
- WPF
- Unity
- Android
- .NET Standard 1.1
- .NET Core
## Installation
You need to install 2 packages to get started.
The first is `libvlc`, which is the actual VLC engine written mostly in C/C++ and compiled for your target platform. You can find information about it and how to download it on NuGet [here](https://github.com/mfkl/libvlc-nuget).
The __first__ is `libvlc`, which is the actual VLC engine written mostly in C/C++ and compiled for your target platform. It's named `VideoLAN.LibVLC.[Platform]`. You can find information about it and how to download it on NuGet [here](https://github.com/mfkl/libvlc-nuget).
The second package you need is LibVLCSharp, the .NET wrapper that consumes `libvlc` and allows you to interact with native code from C#/F#.
The __second__ package you need is LibVLCSharp, the .NET wrapper that consumes `libvlc` and allows you to interact with native code from C#/F#.
```cmd
dotnet add package LibVLCSharp
```
https://www.nuget.org/packages/LibVLCSharp
[![NuGet Stats](https://img.shields.io/nuget/v/LibVLCSharp.svg)](https://www.nuget.org/packages/LibVLCSharp)
[![NuGet Stats](https://img.shields.io/nuget/dt/LibVLCSharp.svg)](https://www.nuget.org/packages/LibVLCSharp)
If you plan to use LibVLCSharp with Xamarin.Forms, you need to install LibVLCSharp.Forms instead (which references LibVLCSharp).
......@@ -92,13 +79,16 @@ If you plan to use LibVLCSharp with Xamarin.Forms, you need to install LibVLCSha
dotnet add package LibVLCSharp.Forms
```
https://www.nuget.org/packages/LibVLCSharp.Forms/
[![NuGet Stats](https://img.shields.io/nuget/v/LibVLCSharp.Forms.svg)](https://www.nuget.org/packages/LibVLCSharp.Forms)
[![NuGet Stats](https://img.shields.io/nuget/dt/LibVLCSharp.Forms.svg)](https://www.nuget.org/packages/LibVLCSharp.Forms)
## Getting started
Feel free to check out the simple sample projects for [iOS](https://github.com/videolan/libvlcsharp/tree/master/Samples/LibVLCSharp.iOS.Sample) and [Android](https://github.com/videolan/libvlcsharp/tree/master/Samples/LibVLCSharp.Android.Sample) to get started.
Basically, you need to instantiate a `VideoView` and add it to your View. You may need to call `Core.Initialize()` to load the `libvlc` native libraries, depending on your host platform. The `VideoView` offers a `MediaPlayer` object with data-binding support. The `MediaPlayer` allows you to control playback with APIs such as `Play`, `Pause`, set a new media or listen for `libvlc` events.
- You need to instantiate a `VideoView` and add it to your main View.
- You may need to call `Core.Initialize()` to load the `libvlc` native libraries, depending on your host platform.
- The `VideoView` offers a `MediaPlayer` object (with data-binding support) which allows you to control playback with APIs such as `Play`, `Pause`, set a new media or listen for `libvlc` events.
For usage of the API, you should check out the `libvlc` [C API documentation](https://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc.html) which this wrapper follows closely.
......@@ -118,12 +108,12 @@ Feel free to suggest and contribute new samples.
## Quick API overview
- `VideoView.cs`: Custom view which holds a `MediaPlayer` object.
- [`LibVLC.cs`](https://github.com/videolan/libvlcsharp/blob/master/LibVLCSharp/Shared/LibVLC.cs): Main object pointing to a native `libvlc` instance in native code.
- [`MediaPlayer.cs`](https://github.com/videolan/libvlcsharp/blob/master/LibVLCSharp/Shared/MediaPlayer.cs): Manages playback, offers event listeners and more. Accessible from `VideoView` with data-binding support.
- [`Media.cs`](https://github.com/videolan/libvlcsharp/blob/master/LibVLCSharp/Shared/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`](https://github.com/videolan/libvlcsharp/blob/master/LibVLCSharp/Shared/MediaDiscoverer.cs): This object should be used to find media on NAS and any SMB/UPnP-enabled device on your local network.
- [`RendererDiscoverer.cs`](https://github.com/videolan/libvlcsharp/blob/master/LibVLCSharp/Shared/RendererDiscoverer.cs): Use this to find and use a Chromecast or other distant renderers.
- [`Media.cs`](https://github.com/videolan/libvlcsharp/blob/master/LibVLCSharp/Shared/Media.cs): Class representing and providing information about a media such as a video or audio file or stream.
- [`Dialog.cs`](https://github.com/videolan/libvlcsharp/blob/master/LibVLCSharp/Shared/Dialog.cs): Dialogs can be raised from the `libvlc` engine in some cases. Register callbacks with this object.
## Roadmap
......@@ -171,6 +161,8 @@ You will always find someone from the VLC team on IRC, __#videolan__ channel on
If you don't have an IRC client, you can always use the [freenode webchat](https://webchat.freenode.net/).
We are also on Gitter [![Join the chat at https://gitter.im/libvlcsharp/Lobby](https://badges.gitter.im/libvlcsharp/Lobby.svg)](https://gitter.im/libvlcsharp/Lobby)
## Code of Conduct
Please read and follow the [VideoLAN CoC](https://wiki.videolan.org/Code_of_Conduct/) license.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment