Today (December 18th 2019), we are announcing the initial release of VLC for Unity (Windows) on the Unity Store!
This Unity plugin allows you to use a LibVLC-powered video player in your games and Unity apps. Whether you need to support a strange format, live streaming or play a 4K video in your latest production, we got you covered.
While this Unity plugin is opensource, its Unity Store price is 100USD.
This price is intended to help sponsor the development and the commercial support of this Unity plugin by Videolabs, the main commercial contributor to the VLC apps.
- 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.
This plugin uses a LibVLC 4.0 build which has seen a lot of improvements regarding performance in the past year. The plugin also makes use of a new, low-level, LibVLC API consisting of Zero Copy GPU callbacks.
This means your (slow) CPU is bypassed and only your GPU is working to provide decoded textures. The LibVLC API offers Direct3D and OpenGL hooks, but this is all taken care of for you inside the Unity plugin. Have a look here if you're curious about it.
With this plugin and this new API, you can get similar performance to VLC Desktop in your Unity games and enjoy low CPU use and optimized battery life on your devices when playing high definition medias.
As usual, you need to load the libvlc libraries and create your LibVLC, MediaPlayer and Media objects as you would on any other platform with LibVLCSharp.
The public API of this plugin is strictly the same than LibVLCSharp for all but one additional method on the MediaPlayer:
/// <summary> /// Retrieve a video frame from the Unity plugin as a texture. /// </summary> /// <param name="updated">True if the video frame has been updated</param> /// <returns>A decoded texture</returns> public IntPtr GetTexture(out bool updated)
Currently, this plugin only supports Windows Classic 64bit with Direct3D11. We aim to bring support to the following platforms during the coming year:
- macOS, iOS, tvOS,
- Android (prototype working),
And the following graphics APIs:
- OpenGL ES,
We currently have a prototype working on Android with OpenGL ES.
- Provide various easy to use, ready-to-run samples and improved documentation.
- Provide in-Editor MediaPlayer customization, so you can customize LibVLC and playback parameters directly from the Unity Editor.