<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: mfkl</title>
    <description>The latest articles on DEV Community by mfkl (@mfkl).</description>
    <link>https://dev.to/mfkl</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F355805%2Ff7b55c30-9666-469c-bf69-a95cf7d52263.png</url>
      <title>DEV Community: mfkl</title>
      <link>https://dev.to/mfkl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mfkl"/>
    <language>en</language>
    <item>
      <title>Introducing the Marketplace</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Sat, 06 Dec 2025 11:01:35 +0000</pubDate>
      <link>https://dev.to/mfkl/introducing-the-marketplace-128c</link>
      <guid>https://dev.to/mfkl/introducing-the-marketplace-128c</guid>
      <description>&lt;p&gt;Just a few weeks ago, I launched pkgstore as a &lt;a href="https://www.pkgstore.io/news/introducing-pkgstore" rel="noopener noreferrer"&gt;directory&lt;/a&gt;. Today, I am announcing the &lt;strong&gt;beta availability for the .NET marketplace feature&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4nb63eqhakik7ojqyqe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4nb63eqhakik7ojqyqe.png" alt="create-product-type" width="800" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My personal experience with software marketplaces
&lt;/h2&gt;

&lt;p&gt;I have published software and various products on many different platforms over the years.&lt;/p&gt;

&lt;p&gt;The App Store by Apple and the Play Store by Google, early in my career, were my first encounters with such stores, as a publisher. And then the Windows Store when I started working on the now defunct VLC for UWP app back in 2017.&lt;/p&gt;

&lt;p&gt;Up until somewhat recently, through my work on the &lt;a href="https://videolabs.io/store/unity" rel="noopener noreferrer"&gt;VLC SDK integration with game engines&lt;/a&gt;, I have had the &lt;em&gt;absolute pleasure&lt;/em&gt; to use the &lt;a href="https://assetstore.unity.com" rel="noopener noreferrer"&gt;Unity Store&lt;/a&gt; as a &lt;em&gt;publisher&lt;/em&gt;, a game developer focused marketplace for the Unity ecosystem. That did not go so well, but that's a &lt;a href="https://mfkl.github.io/2024/01/10/unity-double-oss-standards.html" rel="noopener noreferrer"&gt;story&lt;/a&gt; for another time.&lt;/p&gt;

&lt;p&gt;During a few years managing releases and publishing an asset on the Unity Store, though, I began to make notes of what I liked and disliked about that experience with the Unity Store, from a developer and business point of view.&lt;/p&gt;

&lt;p&gt;The industry standard 30% fees are a well known ripoff, but did you know that in the case of the Unity Store, the marketplace &lt;em&gt;keeps&lt;/em&gt; all the customer data away from the publisher? No customer email, no name, no buyer company information... nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This kind of marketplace is a black box&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The open .NET marketplace based on NuGet and Stripe
&lt;/h2&gt;

&lt;p&gt;My vision for &lt;a href="https://www.pkgstore.io" rel="noopener noreferrer"&gt;pkgstore&lt;/a&gt; is in many ways totally opposite to the shady practices of Unity, and targeted to all .NET developers. I want to empower developers and publishers, not lock them in.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full &lt;a href="https://www.nuget.org/" rel="noopener noreferrer"&gt;NuGet&lt;/a&gt; protocol integration&lt;/strong&gt; &lt;code&gt;dotnet push&lt;/code&gt;/&lt;code&gt;restore&lt;/code&gt; just like any other source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full &lt;a href="https://stripe.com/" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt; integration&lt;/strong&gt; for easy and secure payments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reasonable and low fees&lt;/strong&gt; (no platform fees during beta).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated access control&lt;/strong&gt; for your customers. NuGet feed access credentials are linked to the buyer's Stripe subscription. This saves time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full customer data transparency&lt;/strong&gt;. No black box. You own your customer data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast onboarding and setup&lt;/strong&gt; to get you selling quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscription business model&lt;/strong&gt; because software maintenance does not stop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human support&lt;/strong&gt; by the founder.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1un8ns9zvlz95ndbf475.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1un8ns9zvlz95ndbf475.png" alt="dashboard" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Turn dependencies into partnerships
&lt;/h2&gt;

&lt;p&gt;Pkgstore isn't just for sellers. It is for developers who need reliable dependencies. When you purchase a package here, you are often buying more than just the DLLs.&lt;/p&gt;

&lt;p&gt;You are buying a direct line to the maintainer. This often means commercial support, long-term maintenance guarantees, priority security fixes, and potential consulting services. It turns a "dependency" into a "partnership".&lt;/p&gt;

&lt;h2&gt;
  
  
  Sustainability for all software
&lt;/h2&gt;

&lt;p&gt;I welcome both &lt;em&gt;proprietary&lt;/em&gt; and &lt;em&gt;open-source&lt;/em&gt; software. The license distinction is irrelevant when it comes to long-term viability of important software.&lt;/p&gt;

&lt;p&gt;A note for the OSS makers and consumers. I wrote about this &lt;a href="https://mfkl.github.io/2020/10/25/OSS-sutainability.html" rel="noopener noreferrer"&gt;5 years ago&lt;/a&gt;, but I feel it bears repeating: &lt;em&gt;Free software does not maintain itself for free forever&lt;/em&gt; (until our AI overlords take over, at least).&lt;/p&gt;

&lt;p&gt;Someone always pays the cost, whether it is through personal time, corporate sponsorship or burnout (definitely not donations!).&lt;/p&gt;

&lt;p&gt;Pkgstore provides one sustainable path for maintainers to get compensated for their work through a commercial approach. Going commercial is not for everyone and not for every type of software, and that's okay. There are many types of software and I expect sustainability models to be varied as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Beta
&lt;/h2&gt;

&lt;p&gt;I have talked with several publishers already. Onboarding is ongoing for the open beta.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pkgstore.io/publish" rel="noopener noreferrer"&gt;Learn more about publishing →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;Lots more new exciting features are coming, for both publishers and customers. I have a vision but I remain open to feedback. I will build what the community wants and needs.&lt;/p&gt;

&lt;p&gt;Stay tuned for more updates and follow the journey on &lt;a href="https://www.linkedin.com/in/martinfinkel" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>nuget</category>
      <category>dotnet</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Introducing pkgstore.io</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Thu, 27 Nov 2025 08:33:39 +0000</pubDate>
      <link>https://dev.to/mfkl/introducing-pkgstoreio-4ilj</link>
      <guid>https://dev.to/mfkl/introducing-pkgstoreio-4ilj</guid>
      <description>&lt;p&gt;I just launched &lt;a href="https://pkgstore.io" rel="noopener noreferrer"&gt;pkgstore.io&lt;/a&gt;, and I want to tell you why. 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  The Discovery Problem 🔎
&lt;/h2&gt;

&lt;p&gt;The .NET ecosystem has hundreds of high-quality commercial packages: Uno Platform, Avalonia, Blazorise, Iron Software,&lt;br&gt;
Hangfire, and many more you've probably never heard of.&lt;/p&gt;

&lt;p&gt;But where do you find them?&lt;/p&gt;

&lt;p&gt;NuGet.org lists everything, but it doesn't distinguish between a weekend hobby project and a business-backed library with&lt;br&gt;
professional support. Google searches surface scattered blog posts and outdated comparisons. You find packages by accident,&lt;br&gt;
word-of-mouth, or because you already know the big vendors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For developers:&lt;/strong&gt; Discovery is fragmented and inefficient.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For publishers:&lt;/strong&gt; You've built a quality library, maybe proprietary, maybe open-source with commercial licensing, but how do&lt;br&gt;
developers find you?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For companies:&lt;/strong&gt; When you need guarantees around support, security updates, maintenance, and SLAs, how do you discover which&lt;br&gt;
packages offer that?&lt;/p&gt;
&lt;h2&gt;
  
  
  Sustainability and Support 🛡️
&lt;/h2&gt;

&lt;p&gt;Here's something important: &lt;strong&gt;not every project can or should go commercial, and that's completely fine.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open-source community projects are the backbone of the .NET ecosystem. Many libraries thrive without a business model,&lt;br&gt;
maintained by passionate developers and communities.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;But let's be honest: for niche, specialized, large, or complex software, donations rarely work for long-term sustainability of open source projects.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you're building a library that needs consistent maintenance, security updates, professional support, or compliance&lt;br&gt;
guarantees, you need a real business model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💼 Commercial proprietary software (licensing, seats, tiers)&lt;/li&gt;
&lt;li&gt;🤝 Open-source with paid support/consulting&lt;/li&gt;
&lt;li&gt;⚡ Open-core and freemium models&lt;/li&gt;
&lt;li&gt;📋 Dual licensing&lt;/li&gt;
&lt;li&gt;✨ Premium builds and features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For companies evaluating packages, commercial backing often means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paid support options&lt;/li&gt;
&lt;li&gt;Regular security updates&lt;/li&gt;
&lt;li&gt;Long-term maintenance commitments&lt;/li&gt;
&lt;li&gt;Legal protection and licensing clarity&lt;/li&gt;
&lt;li&gt;Professional documentation and onboarding&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What I built 🚀
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://pkgstore.io" rel="noopener noreferrer"&gt;pkgstore.io&lt;/a&gt; is a curated, searchable directory of commercially-backed .NET packages.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Phase 1 (live now):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;16 publishers already listed&lt;/strong&gt; (Uno Platform, Avalonia, Blazorise, Iron Software, Hangfire, and more)&lt;/li&gt;
&lt;li&gt;🧹 Clean, searchable directory&lt;/li&gt;
&lt;li&gt;🔗 Direct links to packages, documentation, and pricing&lt;/li&gt;
&lt;li&gt;🆓 Free listing for all publishers&lt;/li&gt;
&lt;li&gt;📋 Clear inclusion criteria (support, pricing, maintenance signals)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    &lt;a href="https://pkgstore.io" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmfkl.github.io%2Fassets%2Fpkgstore.png" alt="pkgstore.io directory screenshot" width="800" height="470"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Whether you're an enterprise vendor or an indie developer, if you have a sustainable business model around your .NET package,&lt;br&gt;
you belong here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔎 Developers: Browse the directory → &lt;a href="https://pkgstore.io" rel="noopener noreferrer"&gt;pkgstore.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📰 Publishers: Get listed → sign up to the newsletter on &lt;a href="https://pkgstore.io" rel="noopener noreferrer"&gt;pkgstore.io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Coming 🔔
&lt;/h2&gt;

&lt;p&gt;This directory is just phase one.&lt;/p&gt;

&lt;p&gt;I'm building &lt;a href="https://pkgstore.io" rel="noopener noreferrer"&gt;pkgstore.io&lt;/a&gt; to become the home for commercial .NET packages, with features that will fundamentally change how&lt;br&gt;
publishers reach developers and how developers discover tools.&lt;/p&gt;

&lt;p&gt;But I wanted to start with something useful &lt;em&gt;today&lt;/em&gt;. Get feedback. Learn what the community actually needs. Then build what&lt;br&gt;
matters.&lt;/p&gt;

&lt;p&gt;More announcements coming soon. 👀&lt;/p&gt;

</description>
      <category>nuget</category>
      <category>dotnet</category>
      <category>marketplace</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Introducing LibVLCSharp for MAUI</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Mon, 27 May 2024 16:38:49 +0000</pubDate>
      <link>https://dev.to/mfkl/introducing-libvlcsharp-for-maui-naj</link>
      <guid>https://dev.to/mfkl/introducing-libvlcsharp-for-maui-naj</guid>
      <description>&lt;p&gt;Following the official deprecation of Xamarin.Forms, we are announcing the &lt;a href="https://www.nuget.org/packages/LibVLCSharp.MAUI" rel="noopener noreferrer"&gt;LibVLCSharp integration for MAUI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Initial release
&lt;/h2&gt;

&lt;p&gt;Starting from 3.8.5, &lt;a href="https://www.nuget.org/packages/LibVLCSharp.MAUI" rel="noopener noreferrer"&gt;LibVLCSharp.MAUI&lt;/a&gt; officially supports iOS (net6.0+) and Android (net7.0) modern .NET MAUI targets.&lt;/p&gt;

&lt;p&gt;We have had some trouble with the Android version, since some underlying tooling changed and we found a regression affecting our wanted final deployment structure. But we worked around it for now (or until it gets fixed?).&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next for LibVLCSharp.MAUI?
&lt;/h2&gt;

&lt;p&gt;As we get more user feedback and tweak these initial releases, we will be looking into expanding platform support with macOS and Windows (WinUI) support.&lt;/p&gt;

&lt;p&gt;Another exciting feature will be to bring back our &lt;a href="https://mfkl.github.io/libvlc/crossplatform/xamarin/forms/2019/08/13/MediaPlayerElement-Plug-and-play-LibVLCSharp-UI-video-control.html" rel="noopener noreferrer"&gt;MediaElement control&lt;/a&gt; from Xamarin.Forms ashes, and make it MAUI-ready. This control was very popular as it was plug-and-play and came with many implemented features.&lt;/p&gt;

&lt;p&gt;We are always looking for contributors and corporate sponsors for this work. Feel free to reach out if you can help!&lt;/p&gt;

</description>
      <category>maui</category>
      <category>libvlc</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>Introducing VLC for Unity - macOS Edition</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Wed, 20 Mar 2024 06:19:23 +0000</pubDate>
      <link>https://dev.to/mfkl/introducing-vlc-for-unity-macos-edition-20dp</link>
      <guid>https://dev.to/mfkl/introducing-vlc-for-unity-macos-edition-20dp</guid>
      <description>&lt;p&gt;Today, we are announcing the release of &lt;a href="https://videolabs.io/store/unity" rel="noopener noreferrer"&gt;VLC for Unity (macOS)&lt;/a&gt; on the Videolabs Store!&lt;/p&gt;

&lt;p&gt;This Unity plugin allows you to use a LibVLC-powered video player in your Unity-based macOS apps and games. Whether you need to support a rare video format, live streaming, HLS, RTSP or play a 4K video in your latest production, we got you covered. Feel free to &lt;a href="https://videolabs.io/solutions/vlc-unity-trial.unitypackage" rel="noopener noreferrer"&gt;give it a try&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  All LibVLC features available in your macOS Unity game
&lt;/h2&gt;

&lt;p&gt;Given that this plugin is using &lt;a href="https://code.videolan.org/videolan/LibVLCSharp" rel="noopener noreferrer"&gt;LibVLCSharp&lt;/a&gt; (which uses LibVLC), it exposes more or less the &lt;a href="https://code.videolan.org/videolan/LibVLCSharp#features" rel="noopener noreferrer"&gt;same feature set&lt;/a&gt; and same codecs support than VLC, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Play every media file formats, every codec and every streaming protocols&lt;/li&gt;
&lt;li&gt;Run on every platform, from desktop (Windows, Linux, Mac) to mobile (Android, iOS) and TVs&lt;/li&gt;
&lt;li&gt;Hardware and efficient decoding on every platform, up to 8K&lt;/li&gt;
&lt;li&gt;Network browsing for distant filesystems (SMB, FTP, SFTP, NFS...) and servers (UPnP, DLNA)&lt;/li&gt;
&lt;li&gt;Playback of Audio CD, DVD and Bluray with menu navigation&lt;/li&gt;
&lt;li&gt;Support for HDR, including tonemapping for SDR streams&lt;/li&gt;
&lt;li&gt;Audio passthrough with SPDIF and HDMI, including for Audio HD codecs, like DD+, TrueHD or DTS-HD&lt;/li&gt;
&lt;li&gt;Support for video and audio filters&lt;/li&gt;
&lt;li&gt;Support for 360 video and 3D audio playback, including Ambisonics&lt;/li&gt;
&lt;li&gt;Able to cast and stream to distant renderers, like Chromecast and UPnP renderers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And more!&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://videolabs.io/store/unity" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.dev.to%2Fcdn-cgi%2Fimage%2Fwidth%3D800%252Cheight%3D%252Cfit%3Dscale-down%252Cgravity%3Dauto%252Cformat%3Dauto%2Fhttps%253A%252F%252Fdev-to-uploads.s3.amazonaws.com%252Fuploads%252Farticles%252Fpudite7n87dthserw9r3.png" width="800" height="400"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Hardware acceleration on macOS with Unity and LibVLC
&lt;/h2&gt;

&lt;p&gt;Hardware acceleration is often a highly requested features for video players. Decoding videos with the GPU allows much more efficient decoding allowing to playback high res samples that the CPU could not, while saving battery life and CPU cycles for other apps.&lt;/p&gt;

&lt;p&gt;On macOS, GPU hardware video decoder access is performed through either OpenGL or Metal.&lt;/p&gt;

&lt;p&gt;At the time of writing, LibVLC does not &lt;em&gt;yet&lt;/em&gt; offer a fully featured and battle-tested Metal-based video output for Apple Platform, only OpenGL is available. &lt;/p&gt;

&lt;p&gt;So how to do? 🤔&lt;/p&gt;

&lt;p&gt;Well, &lt;a href="https://code.videolan.org/videolan/vlc-unity/-/blob/master/PluginSource/RenderAPI_OpenGLCGL.mm" rel="noopener noreferrer"&gt;a nice workaround&lt;/a&gt; was implemented by &lt;a href="https://code.videolan.org/alexandre-janniaux" rel="noopener noreferrer"&gt;Alexandre Janniaux&lt;/a&gt; to be able to perform OpenGL calls within a Metal context, notably using &lt;a href="https://developer.apple.com/documentation/corevideo/1456754-cvmetaltexturecachecreatetexture" rel="noopener noreferrer"&gt;CVMetalTextureCacheCreateTextureFromImage&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This way both LibVLC and Unity constraints are satisfied, and both iOS and macOS on Unity use the same Unity Metal backend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing VLC in your Unity for macOS app
&lt;/h2&gt;

&lt;p&gt;As of today, the initial &lt;a href="https://videolabs.io/store/unity/" rel="noopener noreferrer"&gt;VLC for Unity macOS&lt;/a&gt; release includes both Intel x64 and Apple Silicon ARM64 binaries.&lt;/p&gt;

&lt;p&gt;It is possible to build through XCode by generating an XCode project file, or directly generating the final app binary through the Unity Editor. Running VLC Unity in the Unity Editor is also supported, although it can sometimes take a while to load all the libraries. We will be working on speeding that up next.&lt;/p&gt;

&lt;p&gt;✨ This is the second Apple platform supported by VLC Unity, after the iOS release last month. Future possible Apple target platforms, depending on your interest, could be tvOS and visionOS! Do reach out if you are interested in any platform not yet supported.&lt;/p&gt;

&lt;p&gt;Feel free to let me know what you think on &lt;a href="https://twitter.com/martz2804" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>macos</category>
      <category>vlc</category>
      <category>unity3d</category>
      <category>multimedia</category>
    </item>
    <item>
      <title>Introducing VLC for Unity - iOS Edition</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Wed, 07 Feb 2024 05:46:33 +0000</pubDate>
      <link>https://dev.to/mfkl/introducing-vlc-for-unity-ios-edition-23og</link>
      <guid>https://dev.to/mfkl/introducing-vlc-for-unity-ios-edition-23og</guid>
      <description>&lt;p&gt;Today, we are announcing the release of &lt;a href="https://videolabs.io/store/unity" rel="noopener noreferrer"&gt;VLC for Unity (iOS)&lt;/a&gt; on the Videolabs Store!&lt;/p&gt;

&lt;p&gt;This Unity plugin allows you to use a LibVLC-powered video player in your Unity-based iOS apps and games. Whether you need to support a rare video format, live streaming, HLS, RTSP or play a 4K video in your latest production, we got you covered. Feel free to &lt;a href="https://videolabs.io/solutions/vlc-unity-trial.unitypackage" rel="noopener noreferrer"&gt;give it a try&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  All LibVLC features available in your iOS Unity game
&lt;/h2&gt;

&lt;p&gt;Given that this plugin is using &lt;a href="https://code.videolan.org/videolan/LibVLCSharp" rel="noopener noreferrer"&gt;LibVLCSharp&lt;/a&gt; (which uses LibVLC), it exposes more or less the &lt;a href="https://code.videolan.org/videolan/LibVLCSharp#features" rel="noopener noreferrer"&gt;same feature set&lt;/a&gt; and same codecs support than VLC, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Play every media file formats, every codec and every streaming protocols&lt;/li&gt;
&lt;li&gt;Run on every platform, from desktop (Windows, Linux, Mac) to mobile (Android, iOS) and TVs&lt;/li&gt;
&lt;li&gt;Hardware and efficient decoding on every platform, up to 8K&lt;/li&gt;
&lt;li&gt;Network browsing for distant filesystems (SMB, FTP, SFTP, NFS...) and servers (UPnP, DLNA)&lt;/li&gt;
&lt;li&gt;Playback of Audio CD, DVD and Bluray with menu navigation&lt;/li&gt;
&lt;li&gt;Support for HDR, including tonemapping for SDR streams&lt;/li&gt;
&lt;li&gt;Audio passthrough with SPDIF and HDMI, including for Audio HD codecs, like DD+, TrueHD or DTS-HD&lt;/li&gt;
&lt;li&gt;Support for video and audio filters&lt;/li&gt;
&lt;li&gt;Support for 360 video and 3D audio playback, including Ambisonics&lt;/li&gt;
&lt;li&gt;Able to cast and stream to distant renderers, like Chromecast and UPnP renderers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And more!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpudite7n87dthserw9r3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpudite7n87dthserw9r3.png" alt="vlc unity image" width="160" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hardware acceleration on iOS with Unity and LibVLC
&lt;/h2&gt;

&lt;p&gt;Hardware acceleration is often a highly requested features for video players, especially on mobile devices. Decoding videos with the GPU allows much more efficient decoding allowing to playback high res samples that the CPU could not, while saving battery life and CPU cycles for other apps.&lt;/p&gt;

&lt;p&gt;On iOS, GPU hardware video decoder access is performed through either OpenGL ES or Metal. While according to Apple, &lt;a href="https://developer.apple.com/documentation/opengles" rel="noopener noreferrer"&gt;OpenGL ES is officially deprecated on iOS&lt;/a&gt;, it is still working, the App Store still accepts submissions of apps that rely OpenGL ES and in fact, many games, browsers and video players (amongst others) still make use of OpenGL ES for various reasons.&lt;/p&gt;

&lt;p&gt;However, Unity removed the option to pick OpenGL ES as a graphics API backend when building iOS apps using Unity. Metal is the default and only option.&lt;/p&gt;

&lt;p&gt;At the time of writing, LibVLC does not &lt;em&gt;yet&lt;/em&gt; offer a fully featured and battle-tested Metal-based video output for Apple Platform, only OpenGL is available. &lt;/p&gt;

&lt;p&gt;So how to do? 🤔&lt;/p&gt;

&lt;p&gt;Well, &lt;a href="https://code.videolan.org/videolan/vlc-unity/-/blob/master/PluginSource/RenderAPI_OpenGLEAGL.mm" rel="noopener noreferrer"&gt;a nice workaround&lt;/a&gt; was implemented by &lt;a href="https://code.videolan.org/alexandre-janniaux" rel="noopener noreferrer"&gt;Alexandre Janniaux&lt;/a&gt; to be able to perform OpenGL ES calls within a Metal context, notably using &lt;a href="https://developer.apple.com/documentation/corevideo/1456754-cvmetaltexturecachecreatetexture" rel="noopener noreferrer"&gt;CVMetalTextureCacheCreateTextureFromImage&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This way both LibVLC and Unity constraints are satisfied, and the bridge between both ecosystems on iOS is complete! 🙌&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing VLC in your Unity for iOS app
&lt;/h2&gt;

&lt;p&gt;As of today, the initial &lt;a href="https://videolabs.io/store/unity/" rel="noopener noreferrer"&gt;VLC for Unity iOS&lt;/a&gt; release includes ARM64 binaries &lt;em&gt;only&lt;/em&gt;. The simulator support will come in a later release.&lt;/p&gt;

&lt;p&gt;However, as you might know already, iOS apps can be ran on modern Apple Silicon Macs which can speed up the development experience. Deploying to an iPhone device can be time consuming and a hassle.&lt;/p&gt;

&lt;p&gt;We also included initial support for the macOS platform in the VLC Unity asset. This allows you to test VLC features and develop your app using the macOS Editor (or XCode builds) for faster iteration.&lt;/p&gt;

&lt;p&gt;✨ This is the first Apple platform supported by VLC Unity. A future macOS release will come soon, tvOS could be an option as well. Do reach out if you are interested in any platform not yet supported.&lt;/p&gt;

&lt;p&gt;Feel free to let me know what you think on &lt;a href="https://twitter.com/martz2804" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>ios</category>
      <category>libvlc</category>
      <category>libvlcsharp</category>
    </item>
    <item>
      <title>Unity's Open-Source Double Standard: the ban of VLC</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Wed, 10 Jan 2024 09:36:51 +0000</pubDate>
      <link>https://dev.to/mfkl/unitys-open-source-double-standard-the-ban-of-vlc-25d5</link>
      <guid>https://dev.to/mfkl/unitys-open-source-double-standard-the-ban-of-vlc-25d5</guid>
      <description>&lt;h2&gt;
  
  
  VLC for Unity integration
&lt;/h2&gt;

&lt;p&gt;For the readers unaware, we started distributing binaries on the Unity Store for the open-source &lt;a href="https://code.videolan.org/videolan/vlc-unity" rel="noopener noreferrer"&gt;VLC for Unity&lt;/a&gt; integration back in December 2019.&lt;/p&gt;

&lt;p&gt;The integration essentially was a bridge between the Unity game engine and the VLC multimedia engine, allowing to build your own media-player based on VLC technology in Unity-based games. Both Unity, through Mono, and LibVLC are highly portable so this is a compelling argument for this cross-platform integration.&lt;/p&gt;

&lt;p&gt;Since the start, we have had many customers downloading the assets from the Unity Store for their Unity apps and games when requiring demanding multimedia solutions. We had 3 assets targeting specific platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows,&lt;/li&gt;
&lt;li&gt;UWP,&lt;/li&gt;
&lt;li&gt;Android.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Unity Store ban
&lt;/h2&gt;

&lt;p&gt;This all changed at the end of the summer 2023 when Unity emailed us the following:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The packages "VLC for Unity (Android)", "VLC for Unity (UWP)", "VLC for Unity (Windows)" have been deprecated. We have received a report that these packages have dependencies that are licensed under LGPL, which is in violation of section 5.10.4 of the &lt;a href="https://unity.com/legal/provider" rel="noopener noreferrer"&gt;Provider agreement&lt;/a&gt;. Based on our investigation, these packages will not be reinstated onto the Asset Store.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And just like this, our &lt;a href="https://assetstore.unity.com/publishers/39987" rel="noopener noreferrer"&gt;publisher account was instantly banned&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After &lt;em&gt;months&lt;/em&gt; of slow back-and-forth over email trying to find a compromise, including offering to exclude LGPL code from the assets, Unity basically told us we were not welcome back to their Store, ever. &lt;em&gt;Even if we were to remove all LGPL code from the Unity package&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Where it gets fun is that there are currently hundreds if not thousands of Unity assets that include LGPL dependencies (such as FFmpeg) in the Store &lt;strong&gt;right now&lt;/strong&gt;. Enforcement is seemingly totally random, unless you get reported by someone, apparently.&lt;/p&gt;

&lt;p&gt;It gets better... Unity itself, both the Editor and the runtime (which means &lt;em&gt;your shipped game&lt;/em&gt;) &lt;strong&gt;is already using LGPL dependencies&lt;/strong&gt;! Unity is built on libraries such as Lame, libiconv, libwebsockets and websockify.js (at least). Full list of open-source Unity dependencies &lt;a href="https://gist.github.com/mfkl/ad5cbeadf144e52a762a09fac6a05a70" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So Unity gets to use and benefit from LGPL open-source libraries, games built with Unity depend on LGPL code by default (hello glibc!), but publishers and Unity users are not allowed to do so through the Unity Store?&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing the &lt;a href="https://videolabs.io/store" rel="noopener noreferrer"&gt;Videolabs Store&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Numerous companies make use of the LibVLC SDK and other related technologies (like FFmpeg). &lt;/p&gt;

&lt;p&gt;Sometimes they will run into issues or request a new feature and while the community can sometimes help, the limited time of a few volunteers only goes so far. I have written about &lt;a href="https://mfkl.github.io/2020/10/25/OSS-sutainability.html" rel="noopener noreferrer"&gt;OSS sustainability before&lt;/a&gt; and that is very much on topic here.&lt;/p&gt;

&lt;p&gt;It is in the best interest of both open-source project maintainers and commercial consumers to have a clear products and services offering for a given project, and that is what we have created with the &lt;a href="https://videolabs.io/store" rel="noopener noreferrer"&gt;Videolabs Store&lt;/a&gt; for both LibVLC and FFmpeg.&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://videolabs.io/store" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmfkl.github.io%2Fassets%2Fvlabs-store-1.png" width="800" height="315"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;If you are a company requiring multimedia products or consulting for your own projects, this store will be of interest to you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flexible multimedia consulting packages
&lt;/h3&gt;

&lt;p&gt;The Videolabs team is composed of VLC and FFmpeg experts in most protocols, formats and platforms.&lt;/p&gt;

&lt;p&gt;If you are using or planning to use LibVLC or FFmpeg in your project and need help, whether it be custom builds, bug fixes, SDK integration or simply answers to your questions for your specific needs, these packages are for you!&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://videolabs.io/store" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmfkl.github.io%2Fassets%2Fvlabs-store-2.png" width="800" height="303"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;We have created 3 multimedia consulting packages: 3 hours, 10 hours and 24 hours. They can be purchased for a one-time service or a monthly subscription.&lt;/p&gt;

&lt;p&gt;No matter which OS platform or toolkit you are building with, we can help.&lt;/p&gt;

&lt;h3&gt;
  
  
  Other products
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://videolabs.io/store/libvlcsharp/" rel="noopener noreferrer"&gt;LibVLCSharp commercial license&lt;/a&gt; and the &lt;a href="https://mfkl.gumroad.com/l/libvlc-good-parts" rel="noopener noreferrer"&gt;LibVLC ebook&lt;/a&gt; can also be found in the &lt;a href="https://videolabs.io/store" rel="noopener noreferrer"&gt;Videolabs Store&lt;/a&gt;, as well as other upcoming products such as Kyber, our new ultra low latency game/desktop streaming and remote control SDK, and more game engine integration such as Unreal. &lt;/p&gt;

&lt;p&gt;The &lt;a href="https://videolabs.io/store/unity/" rel="noopener noreferrer"&gt;VLC Unity integration&lt;/a&gt; can of course also be purchased from our Store. Stay tuned for more Unity platforms support coming later this month!&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://videolabs.io/store" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmfkl.github.io%2Fassets%2Fvlabs-store-3.png" width="800" height="423"&gt;&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>libvlc</category>
      <category>videolan</category>
    </item>
    <item>
      <title>Milestone: 2 million downloads for VideoLAN .NET NuGet packages</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Mon, 10 Jul 2023 17:08:22 +0000</pubDate>
      <link>https://dev.to/mfkl/milestone-2-million-downloads-for-videolan-net-nuget-packages-k1e</link>
      <guid>https://dev.to/mfkl/milestone-2-million-downloads-for-videolan-net-nuget-packages-k1e</guid>
      <description>&lt;p&gt;&lt;a href="https://www.nuget.org/profiles/videolan" rel="noopener noreferrer"&gt;The NuGet VideoLAN account&lt;/a&gt; just reached &lt;strong&gt;2 million downloads&lt;/strong&gt; in the .NET ecosystem.&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmfkl.github.io%2Fassets%2F2-million.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmfkl.github.io%2Fassets%2F2-million.png" width="800" height="410"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;As we reach this new arbitrary milestone, I'd like to reflect on the current LibVLC ecosystem developments and what is coming next for our users.&lt;/p&gt;

&lt;h2&gt;
  
  
  LibVLC 4 support
&lt;/h2&gt;

&lt;p&gt;We are working hard towards the support of LibVLC 4 in LibVLCSharp. This includes surfacing new native APIs and modifying existing ones, while keeping in mind ease of use and .NET conventions for a seamless developer experience across all supported platforms. &lt;/p&gt;

&lt;p&gt;We also work closely with core VLC developers to provide feedback and help shape the upcoming LibVLC APIs that will enable new capabilities for your applications. A couple of examples of new exciting LibVLC 4 APIs (already/eventually available in all programming languages through LibVLC bindings) include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A new mediaplayer recording API
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * Start/stop recording
 *
 * \note The user should listen to the libvlc_MediaPlayerRecordChanged event,
 * to monitor the recording state.
 *
 * \version LibVLC 4.0.0 and later.
 *
 * \param p_mi media player
 * \param enable true to start recording, false to stop
 * \param dir_path path of the recording directory or NULL (use default path),
 * has only an effect when first enabling recording.
 */&lt;/span&gt;
&lt;span class="n"&gt;LIBVLC_API&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;libvlc_media_player_record&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;libvlc_media_player_t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;p_mi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                                            &lt;span class="n"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;enable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;dir_path&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A new advanced mediaplayer custom video rendering GPU API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This rather complex LibVLC API allows consumers to handle the hardware accelerated rendering themselves, instead of pointing LibVLC to a Window handle. Performant game engine integration, such as Unity3D and Unreal, is one of the key use cases of this new LibVLC 4.0 API.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * Set callbacks and data to render decoded video to a custom texture
 *
 * \warning VLC will perform video rendering in its own thread and at its own rate,
 * You need to provide your own synchronisation mechanism.
 *
 * \param mp the media player
 * \param engine the GPU engine to use
 * \param setup_cb callback called to initialize user data
 * \param cleanup_cb callback called to clean up user data
 * \param resize_cb callback to set the resize callback
 * \param update_output_cb callback to get the rendering format of the host (cannot be NULL)
 * \param swap_cb callback called after rendering a video frame (cannot be NULL)
 * \param makeCurrent_cb callback called to enter/leave the rendering context (cannot be NULL)
 * \param getProcAddress_cb opengl function loading callback (cannot be NULL for \ref libvlc_video_engine_opengl and for \ref libvlc_video_engine_gles2)
 * \param metadata_cb callback to provide frame metadata (D3D11 only)
 * \param select_plane_cb callback to select different D3D11 rendering targets
 * \param opaque private pointer passed to callbacks
 *
 * \note the \p setup_cb and \p cleanup_cb may be called more than once per
 * playback.
 *
 * \retval true engine selected and callbacks set
 * \retval false engine type unknown, callbacks not set
 * \version LibVLC 4.0.0 or later
 */&lt;/span&gt;
&lt;span class="n"&gt;LIBVLC_API&lt;/span&gt;
&lt;span class="n"&gt;bool&lt;/span&gt; &lt;span class="nf"&gt;libvlc_video_set_output_callbacks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;libvlc_media_player_t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;mp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="n"&gt;libvlc_video_engine_t&lt;/span&gt; &lt;span class="n"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="n"&gt;libvlc_video_output_setup_cb&lt;/span&gt; &lt;span class="n"&gt;setup_cb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="n"&gt;libvlc_video_output_cleanup_cb&lt;/span&gt; &lt;span class="n"&gt;cleanup_cb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="n"&gt;libvlc_video_output_set_window_cb&lt;/span&gt; &lt;span class="n"&gt;window_cb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="n"&gt;libvlc_video_update_output_cb&lt;/span&gt; &lt;span class="n"&gt;update_output_cb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="n"&gt;libvlc_video_swap_cb&lt;/span&gt; &lt;span class="n"&gt;swap_cb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="n"&gt;libvlc_video_makeCurrent_cb&lt;/span&gt; &lt;span class="n"&gt;makeCurrent_cb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="n"&gt;libvlc_video_getProcAddress_cb&lt;/span&gt; &lt;span class="n"&gt;getProcAddress_cb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="n"&gt;libvlc_video_frameMetadata_cb&lt;/span&gt; &lt;span class="n"&gt;metadata_cb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="n"&gt;libvlc_video_output_select_plane_cb&lt;/span&gt; &lt;span class="n"&gt;select_plane_cb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                        &lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;opaque&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;The version 4 of LibVLC is still in development, so the API is not frozen yet, but the core functionality is already quite stable and used by many clients on all platforms, as well as the Unity integrations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Unity
&lt;/h3&gt;

&lt;p&gt;We recently shipped support for the &lt;a href="https://mfkl.github.io/2023/04/17/unity-uwp.html" rel="noopener noreferrer"&gt;UWP platform in VLC Unity&lt;/a&gt;, enabling the use of LibVLCSharp and LibVLC in Microsoft HoloLens devices, desktop and Xbox platforms, in addition to the existing &lt;a href="https://assetstore.unity.com/packages/tools/video/vlc-for-unity-android-213786" rel="noopener noreferrer"&gt;Android&lt;/a&gt; and &lt;a href="https://assetstore.unity.com/packages/tools/video/vlc-for-unity-windows-133979" rel="noopener noreferrer"&gt;Windows&lt;/a&gt; classic targets.&lt;/p&gt;

&lt;p&gt;As we are finalizing support for VLC Unity on iOS and macOS, we will then focus on general developer experience improvements as well as documentation efforts to solidify the Unity integration.&lt;/p&gt;

&lt;p&gt;The feedback we have received so far is great: the video decoding performance is unmatched and VLC Unity is one of the most capable and advanced media player asset currently available on the Unity Store in terms of features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Uno Platform
&lt;/h3&gt;

&lt;p&gt;While we initially released a &lt;a href="https://platform.uno/blog/vlc-windows-lamp-now-supported-uno-platform" rel="noopener noreferrer"&gt;LibVLCSharp / Uno integration&lt;/a&gt; back in 2019, it has not been updated for a while to keep up with the latest Uno releases and accompanying API changes. &lt;/p&gt;

&lt;p&gt;This may all change soon, now that &lt;a href="https://platform.uno/blog/4-9-release-media-player-element-on-mobile-web-linux-webview2-support/" rel="noopener noreferrer"&gt;Uno decided to use LibVLC for their Linux mediaplayer support&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We are looking forward to work together to improve the developer experience for .NET developers in the multimedia space across all platforms that Uno and VLC support.&lt;/p&gt;

&lt;h3&gt;
  
  
  Commercial licensing and consulting offering
&lt;/h3&gt;

&lt;p&gt;Exactly 2 years ago, we introduced the &lt;a href="https://videolabs.io/products/libvlcsharp" rel="noopener noreferrer"&gt;LibVLCSharp Commercial License&lt;/a&gt; in an effort to secure the long term maintenance of the project. I firmly believe companies should be put to contribution when it comes to opensource sustainability, not individuals, and I have written &lt;a href="https://mfkl.github.io/2020/10/25/OSS-sutainability.html" rel="noopener noreferrer"&gt;about this topic before&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If your company relies on LibVLCSharp for their commercial products, we encourage you to support the project and help secure the long term maintenance by &lt;a href="https://videolabs.io/products/libvlcsharp" rel="noopener noreferrer"&gt;purchasing a commercial license today&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For more general multimedia needs, such as consulting, training, specific LibVLC / FFMPEG features or bug fixes, or even new platforms support, &lt;a href="https://videolabs.io" rel="noopener noreferrer"&gt;Videolabs&lt;/a&gt; is the partner of choice with experts on all platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  LibVLC community update
&lt;/h2&gt;

&lt;h3&gt;
  
  
  LibVLC Discord server
&lt;/h3&gt;

&lt;p&gt;Almost 3 years ago, we created the &lt;a href="https://discord.gg/3h3K3JF" rel="noopener noreferrer"&gt;LibVLC Discord Server&lt;/a&gt; to foster the LibVLC community with both LibVLC users and bindings maintainers, &lt;strong&gt;for all 12 supported programming languages&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Discord server has grown steadily to &lt;strong&gt;1200+ members&lt;/strong&gt; and it is a place where LibVLC users can get support from other members of the LibVLC community. Bindings maintainers also help each others out at times.&lt;/p&gt;

&lt;p&gt;When someone has a cool use case or sample they want to share with the community, they can post in the &lt;em&gt;showcase&lt;/em&gt; channel on the LibVLC Discord. For example, that is how I learned about the existence of the &lt;a href="https://github.com/MinecraftMediaLibrary/EzMediaCore" rel="noopener noreferrer"&gt;VLC support in Minecraft&lt;/a&gt;, using the awesome &lt;a href="https://github.com/caprica/vlcj" rel="noopener noreferrer"&gt;VLCJ bindings&lt;/a&gt; from &lt;a href="https://github.com/caprica" rel="noopener noreferrer"&gt;Caprica&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;
    
    
&lt;/p&gt;

&lt;h3&gt;
  
  
  Zig
&lt;/h3&gt;

&lt;p&gt;The latest cool kid on the block, &lt;a href="https://ziglang.org" rel="noopener noreferrer"&gt;ziglang&lt;/a&gt;, made an appearance in the VLC community with &lt;a href="https://github.com/kassane/libvlc-zig" rel="noopener noreferrer"&gt;libvlc-zig&lt;/a&gt; which allows Zig developers to enjoy a compelling developer experience while using LibVLC and Zig. We are looking forward to see the apps you build with Zig and LibVLC!&lt;/p&gt;

&lt;p&gt;While &lt;a href="https://github.com/kassane/libvlc-zig" rel="noopener noreferrer"&gt;libvlc-zig&lt;/a&gt; focuses on the LibVLC API, it is also possible to use Zig to build native VLC plugins using the lower level VLC API, such as this &lt;a href="https://github.com/lachie/vlc-mixer" rel="noopener noreferrer"&gt;vlc-mixer example&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Stay tuned.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>multimedia</category>
      <category>opensource</category>
      <category>vlc</category>
    </item>
    <item>
      <title>Introducing LibVLCSharp for WinUI</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Tue, 04 Apr 2023 08:37:20 +0000</pubDate>
      <link>https://dev.to/mfkl/introducing-libvlcsharp-for-winui-59bf</link>
      <guid>https://dev.to/mfkl/introducing-libvlcsharp-for-winui-59bf</guid>
      <description>&lt;h3&gt;
  
  
  Today, we are announcing the initial release of LibVLCSharp for WinUI on &lt;a href="https://www.nuget.org/profiles/videolan" rel="noopener noreferrer"&gt;NuGet&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F76kady7ralo8k14l8h8a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F76kady7ralo8k14l8h8a.png" alt="WinUI" width="365" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  WinUI
&lt;/h2&gt;

&lt;p&gt;LibVLCSharp has had support for the Universal Windows Platform (UWP) since the early days. Before LibVLCSharp, the work to integrate LibVLC with the UWP platform and make the LibVLC engine work well on it, was pioneered by the now defunct &lt;a href="https://code.videolan.org/videolan/vlc-winrt" rel="noopener noreferrer"&gt;VLC for WinRT project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;WinUI is the next evolution of the modern UI toolkit for the Windows desktop after UWP (unfortunately, the Xbox target is not supported with WinUI).&lt;/p&gt;

&lt;p&gt;As of &lt;strong&gt;LibVLCSharp version 3.7.0&lt;/strong&gt;, building multimedia apps using &lt;strong&gt;WinUI 3&lt;/strong&gt; is now supported with LibVLC. Expect the usual goodies such as default hardware decoding enabled.&lt;/p&gt;

&lt;p&gt;Both &lt;em&gt;Packaged&lt;/em&gt; and &lt;em&gt;Unpackaged&lt;/em&gt; WinUI apps are supported with LibVLCSharp.&lt;/p&gt;

&lt;p&gt;There are several important caveats and changes from the previous UWP LibVLCSharp support that I will detail below, for users migrating or supporting both UWP and WinUI.&lt;/p&gt;

&lt;h2&gt;
  
  
  API Breaking change for existing UWP users
&lt;/h2&gt;

&lt;p&gt;When upgrading to LibVLCSharp version 3.7.0, users currently targeting UWP will need to address a build failure as there was a needed namespace change.&lt;/p&gt;

&lt;p&gt;In your XAML files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;-xmlns:lvs="using:LibVLCSharp.Platforms.UWP"
&lt;/span&gt;&lt;span class="gi"&gt;+xmlns:lvs="using:LibVLCSharp.Platforms.Windows"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In your C# files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;-using LibVLCSharp.Platforms.UWP;
&lt;/span&gt;&lt;span class="gi"&gt;+using LibVLCSharp.Platforms.Windows;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This should be quick and as painless as possible to fix as you upgrade to LibVLCSharp 3.7.0 in your UWP applications. The minor version of LibVLCSharp is bumped according to our documented &lt;a href="https://code.videolan.org/videolan/LibVLCSharp/-/blob/master/docs/versioning.md" rel="noopener noreferrer"&gt;versioning strategy&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  LibVLC build type
&lt;/h2&gt;

&lt;p&gt;With UWP apps using LibVLCSharp, the user needs to add a special, custom-built LibVLC variant, the &lt;a href="https://www.nuget.org/packages/VideoLAN.LibVLC.UWP" rel="noopener noreferrer"&gt;VideoLAN.LibVLC.UWP&lt;br&gt;
&lt;/a&gt; nuget package. This has always been the case and is due to the expectation of the underlying runtime of the UWP platform.&lt;/p&gt;

&lt;p&gt;For WinUI targets, the classic Windows LibVLC build, &lt;a href="https://www.nuget.org/packages/VideoLAN.LibVLC.Windows" rel="noopener noreferrer"&gt;VideoLAN.LibVLC.Windows&lt;/a&gt;, &lt;strong&gt;must&lt;/strong&gt; be used and only from version 3.0.18 minimum. Using a UWP LibVLC build will not work. As always, starting from the &lt;a href="https://code.videolan.org/videolan/LibVLCSharp/-/tree/3.x/samples/LibVLCSharp.WinUI.Sample" rel="noopener noreferrer"&gt;official sample app&lt;/a&gt; is a good idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minimum Target Framework Version
&lt;/h2&gt;

&lt;p&gt;The minimal WinUI TFM supported version is &lt;code&gt;net6.0-windows10.0.17763.0&lt;/code&gt;. Do make sure you target it for your WinUI project (or anything above).&lt;/p&gt;




&lt;p&gt;As we release this initial support of WinUI on NuGet, please make sure to tell us if you encounter any issue and what apps you build with LibVLCSharp for WinUI!&lt;/p&gt;

</description>
      <category>winui</category>
      <category>libvlc</category>
      <category>libvlcsharp</category>
      <category>windows</category>
    </item>
    <item>
      <title>The Good Parts of LibVLC</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Mon, 12 Sep 2022 10:55:07 +0000</pubDate>
      <link>https://dev.to/mfkl/the-good-parts-of-libvlc-4ii0</link>
      <guid>https://dev.to/mfkl/the-good-parts-of-libvlc-4ii0</guid>
      <description>&lt;p&gt;I am proud to announce that my new book on LibVLC is now &lt;a href="https://mfkl.gumroad.com/l/libvlc-good-parts" rel="noopener noreferrer"&gt;available&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://mfkl.gumroad.com/l/libvlc-good-parts" rel="noopener noreferrer"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmfkl.github.io%2Fassets%2Febook.jpg" width="800" height="450"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mfkl.gumroad.com/l/libvlc-good-parts" rel="noopener noreferrer"&gt;This book&lt;/a&gt; is the first book ever about &lt;strong&gt;LibVLC and the VideoLAN community&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;VLC reached &lt;strong&gt;3 billion downloads&lt;/strong&gt; in 2019. While there is a lot of information out there on VLC and VideoLAN, it is quite spread out across various sources. With all the podcasts, press releases, wikis, forum posts, git repositories and blog posts from community members, I felt that a longer form of content, such as this book, would be welcome to &lt;strong&gt;synthesize all this information into one place and provide context around the amazing VLC community&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Although the VLC app is well known and popular, the accompanying library SDK for developers, &lt;strong&gt;LibVLC&lt;/strong&gt;, remains largely unknown to many developers. This technical book serves as a way to raise awareness of this great multimedia framework as &lt;strong&gt;a viable option for developers&lt;/strong&gt;, as well as a detailed example of what an ethical opensource project looks like.&lt;/p&gt;

&lt;p&gt;Since I personally built and used the &lt;strong&gt;LibVLC library&lt;/strong&gt; on most platforms during the past 5+ years, and helped polish the developer experience of the library on all platforms through &lt;strong&gt;LibVLCSharp&lt;/strong&gt;, I managed to get a pretty nice overview of the LibVLC landscape. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I have put everything I know about LibVLC, VLC and VideoLAN in this book.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We will dive into the internals of the native library in Part 2, and the focus will shift to the LibVLC usage, its public API interfaces, features and capabilities (in Parts 3 and 4) through &lt;strong&gt;LibVLCSharp (.NET bindings for LibVLC)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;By the end of this book, you will know everything you need to build your own video/audio player app using LibVLC, for any target platform using any programming language.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the target developer audience for this book?
&lt;/h2&gt;

&lt;p&gt;All kinds. Beginner to senior, all programming languages.&lt;/p&gt;

&lt;p&gt;Everyone will learn something. I have tried to keep things approachable while not shying away from the deeply technical topics that needed to be covered. This was sometimes a tricky balancing act. Most of the code in the book is C# with a bit of C, though the code snippets are succinct and fairly intuitive to read, no matter which programming language you fancy (LibVLC works with most of them).&lt;/p&gt;

&lt;p&gt;You do not need to be knowledgeable in .NET/C# to read and understand the code in this book.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is this book good for beginners in multimedia programming?
&lt;/h2&gt;

&lt;p&gt;Yes. Most important multimedia concepts are explained from scratch when going through the LibVLC internals, so multimedia novices will be able to follow. As for the API usage sections, the ease of use of LibVLC being one of its assets, this should be an approachable read for beginners in the multimedia programming space.&lt;/p&gt;

&lt;p&gt;Happy reading!&lt;/p&gt;

</description>
      <category>libvlc</category>
      <category>dotnet</category>
      <category>multimedia</category>
      <category>videolan</category>
    </item>
    <item>
      <title>Introducing VLC for Unity - Android Edition</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Wed, 04 May 2022 07:49:19 +0000</pubDate>
      <link>https://dev.to/mfkl/introducing-vlc-for-unity-android-edition-4d85</link>
      <guid>https://dev.to/mfkl/introducing-vlc-for-unity-android-edition-4d85</guid>
      <description>&lt;p&gt;Today, we are announcing the initial release of &lt;a href="https://videolabs.io/store/unity/" rel="noopener noreferrer"&gt;VLC for Unity (Android)&lt;/a&gt; on the Videolabs Store!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvoeylz49h970er6gpgzk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvoeylz49h970er6gpgzk.png" alt="unity courtyard" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Seasoned Unity developers will recognize the famous &lt;a href="https://assetstore.unity.com/packages/essentials/tutorial-projects/the-courtyard-49377" rel="noopener noreferrer"&gt;Courtyard&lt;/a&gt; Unity scene which was edited to showcase our VLC plugin playing the famous Big Buck Bunny video.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/aF4EMISZf34"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
This Unity plugin allows you to use a LibVLC-powered video player in your Unity-based Android apps and games. Whether you need to support a rare video format, live streaming, HLS, RTSP or play a 4K video in your latest production, we got you covered. Feel free to &lt;a href="https://videolabs.io/solutions/vlc-unity-trial.unitypackage" rel="noopener noreferrer"&gt;give it a try&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;
  
  
  All LibVLC features available in your Unity game
&lt;/h2&gt;

&lt;p&gt;Given that this plugin is using &lt;a href="https://code.videolan.org/videolan/LibVLCSharp" rel="noopener noreferrer"&gt;LibVLCSharp&lt;/a&gt; (which uses LibVLC), it exposes more or less the &lt;a href="https://code.videolan.org/videolan/LibVLCSharp#features" rel="noopener noreferrer"&gt;same feature set&lt;/a&gt; and same codecs support than VLC, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Play every media file formats, every codec and every streaming protocols&lt;/li&gt;
&lt;li&gt;Run on every platform, from desktop (Windows, Linux, Mac) to mobile (Android, iOS) and TVs&lt;/li&gt;
&lt;li&gt;Hardware and efficient decoding on every platform, up to 8K&lt;/li&gt;
&lt;li&gt;Network browsing for distant filesystems (SMB, FTP, SFTP, NFS...) and servers (UPnP, DLNA)&lt;/li&gt;
&lt;li&gt;Playback of Audio CD, DVD and Bluray with menu navigation&lt;/li&gt;
&lt;li&gt;Support for HDR, including tonemapping for SDR streams&lt;/li&gt;
&lt;li&gt;Audio passthrough with SPDIF and HDMI, including for Audio HD codecs, like DD+, TrueHD or DTS-HD&lt;/li&gt;
&lt;li&gt;Support for video and audio filters&lt;/li&gt;
&lt;li&gt;Support for 360 video and 3D audio playback, including Ambisonics&lt;/li&gt;
&lt;li&gt;Able to cast and stream to distant renderers, like Chromecast and UPnP renderers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And more!&lt;/p&gt;
&lt;h2&gt;
  
  
  Hardware-accelerated video playback in your Android Unity apps and games
&lt;/h2&gt;

&lt;p&gt;The 4.0 development version of LibVLC provides a powerful API which allows to perform custom rendering yet retaining hardware accelerated decoding.&lt;/p&gt;

&lt;p&gt;In the context of Unity, this means using VLC for Unity allows you to use video frames as GPU textures in your Unity games. For Android, this solution is based on OpenGL ES.&lt;/p&gt;

&lt;p&gt;This is as simple to use for you as writing&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;MediaPlayer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetTexture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="n"&gt;texture&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and uploading it to Unity for post-processing in your game scene.&lt;/p&gt;

&lt;p&gt;The CPU architectures supported on Android by VLC Unity are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;armeabi-v7a,&lt;/li&gt;
&lt;li&gt;arm64-v8a,&lt;/li&gt;
&lt;li&gt;x86,&lt;/li&gt;
&lt;li&gt;x86_64.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  New Unity demo scenes in the VLC for Unity asset
&lt;/h2&gt;

&lt;p&gt;We have recently added several new Unity scenes into the VLC asset. These are shipped with the VLC Unity asset from the Videolabs Store. They provide an efficient way to get started quickly and showcase real use case scenarios for your apps and games.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwch9n3vojjl3jmjiwg0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwch9n3vojjl3jmjiwg0.png" alt="3d-scene-unity" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a basic cinema room with a bit of light, a cinema screen powered by VLC and comfortable chairs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4b771lch8d5qglu0tole.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4b771lch8d5qglu0tole.png" alt="media-element-unity" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This screenshot shows an in-Editor run of the VLC Canvas example, essentially a simple MediaElement control with a seekbar and a few playback options. It's great because it shows you how to use the LibVLCSharp APIs and bind them with Unity materials and scripts!&lt;/p&gt;

&lt;p&gt;We will add more features to this scene in the future. And more scenes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;The next major platform we will work on supporting is &lt;strong&gt;iOS&lt;/strong&gt;. It is already supported by both LibVLCSharp and LibVLC, but the VLC Unity plugin needs some adjustments to support iOS. Feel free to reach out if you are interesting in testing this out!&lt;/p&gt;

&lt;p&gt;Other than iOS, we will keep on improving the plugin, continuously fixing bugs and enhancing the developer experience. Deeper Unity Editor integration with LibVLC is planned as well, so that in the future you may customize various playback parameters right from the Unity Editor menus!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://videolabs.io/solutions" rel="noopener noreferrer"&gt;Download the Free Trial version&lt;/a&gt;
&lt;/h3&gt;

</description>
      <category>unity3d</category>
      <category>android</category>
      <category>libvlc</category>
      <category>libvlcsharp</category>
    </item>
    <item>
      <title>Milestone: A million downloads for VideoLAN packages in the .NET ecosystem</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Tue, 05 Apr 2022 10:21:04 +0000</pubDate>
      <link>https://dev.to/mfkl/milestone-a-million-downloads-for-videolan-packages-in-the-net-ecosystem-2iad</link>
      <guid>https://dev.to/mfkl/milestone-a-million-downloads-for-videolan-packages-in-the-net-ecosystem-2iad</guid>
      <description>&lt;p&gt;&lt;a href="https://www.nuget.org/profiles/videolan" rel="noopener noreferrer"&gt;The NuGet VideoLAN account&lt;/a&gt; just reached &lt;strong&gt;1 million downloads&lt;/strong&gt; in the .NET ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fab9tmqc1el1xlbvjp95a.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fab9tmqc1el1xlbvjp95a.PNG" alt="downloads" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, we actively publish and maintain &lt;strong&gt;16 NuGet packages&lt;/strong&gt;, 6 of which actually containing native platform-specific code. The remaining 10 packages are managed C# DLLs composed of the main binding (&lt;a href="https://www.nuget.org/packages/LibVLCSharp/" rel="noopener noreferrer"&gt;LibVLCSharp&lt;/a&gt;) and various GUI toolkit integrations for getting users up and running quickly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Xamarin.Android&lt;/li&gt;
&lt;li&gt;Xamarin.iOS&lt;/li&gt;
&lt;li&gt;Xamarin.tvOS&lt;/li&gt;
&lt;li&gt;Xamarin.Mac (Cocoa)&lt;/li&gt;
&lt;li&gt;Windows Classic (WPF, WinForms, GTK)&lt;/li&gt;
&lt;li&gt;Windows Universal (UWP for Desktop, mobile and Xbox)&lt;/li&gt;
&lt;li&gt;Linux including desktop, server and Raspberry Pi (GTK)&lt;/li&gt;
&lt;li&gt;Xamarin.Forms&lt;/li&gt;
&lt;li&gt;Uno Platform (UWP, Android, iOS)&lt;/li&gt;
&lt;li&gt;Avalonia (Windows, macOS, Linux)&lt;/li&gt;
&lt;li&gt;Eto Forms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both &lt;a href="https://code.videolan.org/videolan/LibVLCSharp" rel="noopener noreferrer"&gt;LibVLCSharp&lt;/a&gt; and &lt;a href="https://code.videolan.org/videolan/libvlc-nuget" rel="noopener noreferrer"&gt;LibVLC for NuGet&lt;/a&gt; received PRs from a few new contributors recently. They helped out on adding support for new GUI frameworks like Eto, perfecting the WPF VideoView integration and making sure the LibVLC native library plays nice with the latest .NET SDK! I'd like to thank each of them for their valuable OSS contributions.&lt;/p&gt;

&lt;h2&gt;
  
  
  On-going work
&lt;/h2&gt;

&lt;p&gt;LibVLC 4 is actively being worked on by the core VLC team and we can expect several new LibVLC APIs to surface in LibVLCSharp in the coming months. I am keeping a &lt;a href="https://github.com/mfkl/libvlc-feature-requests" rel="noopener noreferrer"&gt;personal wishlist for LibVLC features&lt;/a&gt; on my side and I try to work on it when time allows. If you would like to see a specific LibVLC feature come to life, feel free to reach out!&lt;/p&gt;

&lt;p&gt;Plans to investigate LibVLCSharp interop performance further have been made and it will be exciting to leverage new interop performance features from .NET 5/6 with LibVLC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commercial licensing
&lt;/h2&gt;

&lt;p&gt;Almost a year ago, we introduced &lt;strong&gt;&lt;a href="https://videolabs.io/solutions/libvlcsharp/" rel="noopener noreferrer"&gt;Commercial Licenses for LibVLCSharp&lt;/a&gt;&lt;/strong&gt; through dual licensing (current OSS licenses remain). This was the start of an experiment to try and make the project financially sustainable. I don't believe user donations are a working solution for most OSS maintainers, and if companies contributed financially to the sustainability of their dependencies, I believe the open-source ecosystem would be more &lt;em&gt;balanced&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfn7ftmetmt0eypw5stj.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfn7ftmetmt0eypw5stj.PNG" alt="mrr" width="597" height="777"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a needed pricing change, and almost a year in, we now stand at $224 monthly recurring revenue with 11 happy customers and growing! This is certainly better than the donation route but there surely is a way to go still.&lt;/p&gt;

&lt;p&gt;If your company uses LibVLCSharp in commercial products, please consider supporting the project by &lt;a href="https://videolabs.io/solutions/libvlcsharp" rel="noopener noreferrer"&gt;purchasing a commercial license&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Feel free to let me know what you think on &lt;a href="https://twitter.com/martz2804" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>libvlc</category>
      <category>multimedia</category>
      <category>opensource</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>Introducing LibVLCSharp Commercial Licensing</title>
      <dc:creator>mfkl</dc:creator>
      <pubDate>Wed, 02 Jun 2021 08:35:24 +0000</pubDate>
      <link>https://dev.to/mfkl/introducing-libvlcsharp-commercial-licensing-1lmb</link>
      <guid>https://dev.to/mfkl/introducing-libvlcsharp-commercial-licensing-1lmb</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhaskgpa9kqsxiykwh3q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhaskgpa9kqsxiykwh3q.png" alt="Alt Text" width="800" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today we are introducing a &lt;strong&gt;Commercial License&lt;/strong&gt; for LibVLCSharp, the .NET SDK for the multimedia and cross-platform LibVLC framework.&lt;/p&gt;

&lt;h1&gt;
  
  
  OSS Sustainability
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://mfkl.github.io/2020/10/25/OSS-sutainability.html" rel="noopener noreferrer"&gt;I have written before&lt;/a&gt; on the topic of open-source sustainability. This is a subject I find personally very interesting and solutions to these problems can prove tricky.&lt;/p&gt;

&lt;p&gt;Donations just do not work.&lt;/p&gt;

&lt;p&gt;And for developer tools, another approach seems particularly fitting: &lt;strong&gt;Dual licensing&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Dual licensing
&lt;/h1&gt;

&lt;p&gt;LibVLCSharp packages (and LibVLC) will remain licensed under the &lt;em&gt;LGPL2.1 license&lt;/em&gt;. However, an additional &lt;em&gt;Commercial License&lt;/em&gt; is now available for commercial .NET users.&lt;/p&gt;

&lt;p&gt;This is very much like the approach our friends at &lt;a href="https://sixlabors.com/pricing/" rel="noopener noreferrer"&gt;Six Labors&lt;/a&gt;, makers of &lt;a href="https://github.com/SixLabors/ImageSharp" rel="noopener noreferrer"&gt;ImageSharp&lt;/a&gt;&lt;sup&gt;1&lt;/sup&gt;, have chosen, and I believe it strikes a good balance between keeping an open and accessible license for individual developers, and inviting companies who critically rely on open-source projects to contribute financially.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pricing
&lt;/h1&gt;

&lt;p&gt;Our &lt;a href="https://videolabs.io/solutions/libvlcsharp" rel="noopener noreferrer"&gt;initial pricing&lt;/a&gt; is a single plan set at &lt;strong&gt;99$/year per developer&lt;/strong&gt;&lt;sup&gt;2&lt;/sup&gt; (including VAT).&lt;/p&gt;

&lt;p&gt;We may introduce additional plans in the future, depending on your feedback. This is very competitive pricing considering the years of work that have already been put in LibVLCSharp (not to mention LibVLC), and the &lt;a href="https://videolabs.io/solutions/libvlcsharp-commercial-license/" rel="noopener noreferrer"&gt;additional guarantees&lt;/a&gt; you will get for that small price:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;priority support,&lt;/li&gt;
&lt;li&gt;priority bug fixes, feature requests and documentation improvements,&lt;/li&gt;
&lt;li&gt;continuous updates of the current and future NuGet packages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your company builds commercial products using &lt;a href="https://code.videolan.org/videolan/LibVLCSharp" rel="noopener noreferrer"&gt;LibVLCSharp&lt;/a&gt;, we strongly encourage you to &lt;a href="https://videolabs.io/solutions/libvlcsharp/" rel="noopener noreferrer"&gt;purchase&lt;/a&gt; one (or several) LibVLCSharp Commercial Licenses. Doing so will help support the project's long term viability.&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; Btw, we have a nice and short &lt;a href="https://code.videolan.org/mfkl/libvlcsharp-samples/-/blob/master/PreviewThumbnailExtractor/Program.cs" rel="noopener noreferrer"&gt;LibVLCSharp/ImageSharp code sample&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;2&lt;/sup&gt; If you require special pricing plans, such as Enterprise or Non-Profit, feel free to contact us at &lt;a href="mailto:dotnet@videolabs.io"&gt;dotnet@videolabs.io&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>libvlc</category>
      <category>libvlcsharp</category>
      <category>dotnet</category>
      <category>licensing</category>
    </item>
  </channel>
</rss>
