├── .gitignore ├── MauiVlc ├── Resources │ ├── Fonts │ │ ├── OpenSans-Regular.ttf │ │ └── OpenSans-Semibold.ttf │ ├── AppIcon │ │ ├── appicon.svg │ │ └── appiconfg.svg │ ├── Splash │ │ └── splash.svg │ ├── Styles │ │ ├── Colors.xaml │ │ └── Styles.xaml │ └── Images │ │ └── dotnet_bot.svg ├── Properties │ └── launchSettings.json ├── AppShell.xaml.cs ├── Platforms │ ├── Android │ │ ├── Resources │ │ │ └── values │ │ │ │ └── colors.xml │ │ ├── AndroidManifest.xml │ │ ├── MainApplication.cs │ │ └── MainActivity.cs │ └── iOS │ │ ├── AppDelegate.cs │ │ ├── Program.cs │ │ └── Info.plist ├── AppShell.xaml ├── App.xaml.cs ├── Handlers │ ├── MediaViewerHandler.cs │ ├── MediaViewerHandler.Android.cs │ └── MediaViewerHandler.iOS.cs ├── App.xaml ├── MainPage.xaml ├── MainPage.xaml.cs ├── MauiProgram.cs ├── Controls │ └── MediaViewer.cs └── MauiVlc.csproj ├── LICENSE ├── MauiVlc.sln └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | obj/ 2 | bin/ 3 | 4 | *.user 5 | .vs/ 6 | 7 | **/Resources/Resource.designer.cs 8 | *.txt 9 | 10 | *.swp 11 | 12 | -------------------------------------------------------------------------------- /MauiVlc/Resources/Fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rretamal/MauiVLC/HEAD/MauiVlc/Resources/Fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /MauiVlc/Resources/Fonts/OpenSans-Semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rretamal/MauiVLC/HEAD/MauiVlc/Resources/Fonts/OpenSans-Semibold.ttf -------------------------------------------------------------------------------- /MauiVlc/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "Windows Machine": { 4 | "commandName": "MsixPackage", 5 | "nativeDebugging": false 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /MauiVlc/AppShell.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace MauiVlc 2 | { 3 | public partial class AppShell : Shell 4 | { 5 | public AppShell() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MauiVlc/Resources/AppIcon/appicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /MauiVlc/Platforms/Android/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #512BD4 4 | #2B0B98 5 | #2B0B98 6 | -------------------------------------------------------------------------------- /MauiVlc/Platforms/iOS/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using Foundation; 2 | using Microsoft.Maui; 3 | 4 | namespace MauiVlc 5 | { 6 | [Register("AppDelegate")] 7 | public class AppDelegate : MauiUIApplicationDelegate 8 | { 9 | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MauiVlc/Platforms/Android/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /MauiVlc/Platforms/Android/MainApplication.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Runtime; 3 | 4 | namespace MauiVlc 5 | { 6 | [Application] 7 | public class MainApplication : MauiApplication 8 | { 9 | public MainApplication(IntPtr handle, JniHandleOwnership ownership) 10 | : base(handle, ownership) 11 | { 12 | } 13 | 14 | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MauiVlc/AppShell.xaml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /MauiVlc/Platforms/iOS/Program.cs: -------------------------------------------------------------------------------- 1 | using ObjCRuntime; 2 | using UIKit; 3 | 4 | namespace MauiVlc 5 | { 6 | public class Program 7 | { 8 | // This is the main entry point of the application. 9 | static void Main(string[] args) 10 | { 11 | // if you want to use a different Application Delegate class from "AppDelegate" 12 | // you can specify it here. 13 | UIApplication.Main(args, null, typeof(AppDelegate)); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MauiVlc/Platforms/Android/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content.PM; 3 | using Android.OS; 4 | using Microsoft.Maui; 5 | 6 | namespace MauiVlc 7 | { 8 | [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] 9 | public class MainActivity : MauiAppCompatActivity 10 | { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MauiVlc/App.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace MauiVlc 2 | { 3 | public partial class App : Application 4 | { 5 | public event Action OnSleepEvent; 6 | public event Action OnResumeEvent; 7 | 8 | public App() 9 | { 10 | InitializeComponent(); 11 | 12 | MainPage = new AppShell(); 13 | } 14 | 15 | protected override void OnSleep() 16 | { 17 | OnSleepEvent?.Invoke(); 18 | } 19 | 20 | protected override void OnResume() 21 | { 22 | OnResumeEvent?.Invoke(); 23 | } 24 | 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /MauiVlc/Handlers/MediaViewerHandler.cs: -------------------------------------------------------------------------------- 1 | using MauiVlc.Controls; 2 | using Microsoft.Maui.Handlers; 3 | using System; 4 | 5 | namespace MauiVlc.Handlers 6 | { 7 | public partial class MediaViewerHandler 8 | { 9 | public static IPropertyMapper PropertyMapper = 10 | new PropertyMapper() 11 | { 12 | }; 13 | 14 | public static CommandMapper CommandMapper = new(ViewCommandMapper) 15 | { 16 | }; 17 | 18 | public MediaViewerHandler() : base(PropertyMapper, CommandMapper) 19 | { 20 | } 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /MauiVlc/App.xaml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /MauiVlc/MainPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 12 | 13 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /MauiVlc/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace MauiVlc 2 | { 3 | public partial class MainPage : ContentPage 4 | { 5 | int count = 0; 6 | 7 | public string VideoUrl { get; set; } = "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"; 8 | 9 | public MainPage() 10 | { 11 | InitializeComponent(); 12 | 13 | this.BindingContext = this; 14 | 15 | ((App)Application.Current).OnSleepEvent += MainPage_OnSleepEvent; 16 | ((App)Application.Current).OnResumeEvent += MainPage_OnResumeEvent; 17 | } 18 | 19 | protected override void OnAppearing() 20 | { 21 | base.OnAppearing(); 22 | } 23 | 24 | private void MainPage_OnResumeEvent() 25 | { 26 | videoViewer.Play(); 27 | } 28 | 29 | private void MainPage_OnSleepEvent() 30 | { 31 | videoViewer.Pause(); 32 | } 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /MauiVlc/MauiProgram.cs: -------------------------------------------------------------------------------- 1 | using MauiVlc.Controls; 2 | using Microsoft.Extensions.Logging; 3 | 4 | namespace MauiVlc 5 | { 6 | public static class MauiProgram 7 | { 8 | public static MauiApp CreateMauiApp() 9 | { 10 | var builder = MauiApp.CreateBuilder(); 11 | builder 12 | .UseMauiApp() 13 | .ConfigureMauiHandlers((handlers) => { 14 | handlers.AddHandler(typeof(MediaViewer), typeof(MauiVlc.Handlers.MediaViewerHandler)); 15 | }) 16 | .ConfigureFonts(fonts => 17 | { 18 | fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); 19 | fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); 20 | }); 21 | 22 | #if DEBUG 23 | builder.Logging.AddDebug(); 24 | #endif 25 | 26 | return builder.Build(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /MauiVlc/Controls/MediaViewer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MauiVlc.Controls 4 | { 5 | public class MediaViewer : View 6 | { 7 | public event Action PauseRequested; 8 | public event Action PlayRequested; 9 | 10 | public static BindableProperty VideoUrlProperty = BindableProperty.Create(nameof(VideoUrl) 11 | , typeof(string) 12 | , typeof(MediaViewer) 13 | , "" 14 | , defaultBindingMode: BindingMode.TwoWay); 15 | 16 | /// 17 | /// Disables or enables scanning 18 | /// 19 | public string VideoUrl 20 | { 21 | get => (string)GetValue(VideoUrlProperty); 22 | set => SetValue(VideoUrlProperty, value); 23 | } 24 | 25 | public MediaViewer() 26 | { 27 | } 28 | 29 | public void Pause() 30 | { 31 | PauseRequested?.Invoke(); 32 | } 33 | 34 | public void Play() 35 | { 36 | PlayRequested?.Invoke(); 37 | } 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Ricardo R 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MauiVlc/Platforms/iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LSRequiresIPhoneOS 6 | 7 | UIDeviceFamily 8 | 9 | 1 10 | 2 11 | 12 | UIRequiredDeviceCapabilities 13 | 14 | arm64 15 | 16 | UISupportedInterfaceOrientations 17 | 18 | UIInterfaceOrientationPortrait 19 | UIInterfaceOrientationLandscapeLeft 20 | UIInterfaceOrientationLandscapeRight 21 | 22 | UISupportedInterfaceOrientations~ipad 23 | 24 | UIInterfaceOrientationPortrait 25 | UIInterfaceOrientationPortraitUpsideDown 26 | UIInterfaceOrientationLandscapeLeft 27 | UIInterfaceOrientationLandscapeRight 28 | 29 | XSAppIconAssets 30 | Assets.xcassets/appicon.appiconset 31 | 32 | 33 | -------------------------------------------------------------------------------- /MauiVlc.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.8.34004.107 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MauiVlc", "MauiVlc\MauiVlc.csproj", "{542AFFA8-9C86-436C-9A9B-673D5485C44A}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {542AFFA8-9C86-436C-9A9B-673D5485C44A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {542AFFA8-9C86-436C-9A9B-673D5485C44A}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {542AFFA8-9C86-436C-9A9B-673D5485C44A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU 17 | {542AFFA8-9C86-436C-9A9B-673D5485C44A}.Release|Any CPU.ActiveCfg = Release|Any CPU 18 | {542AFFA8-9C86-436C-9A9B-673D5485C44A}.Release|Any CPU.Build.0 = Release|Any CPU 19 | {542AFFA8-9C86-436C-9A9B-673D5485C44A}.Release|Any CPU.Deploy.0 = Release|Any CPU 20 | EndGlobalSection 21 | GlobalSection(SolutionProperties) = preSolution 22 | HideSolutionNode = FALSE 23 | EndGlobalSection 24 | GlobalSection(ExtensibilityGlobals) = postSolution 25 | SolutionGuid = {471FD877-7B55-4681-BDA6-BD567D19F297} 26 | EndGlobalSection 27 | EndGlobal 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MauiVLC 2 | Comprehensive guide and source code for implementing the VLC Sharp library in .NET Maui applications. This demonstrative project offers an all-encompassing solution for integrating multimedia features into .NET Maui using VLC Sharp. Ideal for .NET developers interested in expanding their skills in audio and video management. Includes code examples and best practices. 3 | 4 | You can read the article through the following link: 5 | 6 | [How to Integrate LibVLCSharp into .NET MAUI for IP Camera Streaming](https://medium.com/@rretamal.dev/how-to-integrate-libvlcsharp-into-net-maui-8dc23b509be4) 7 | 8 | **** 9 | 10 | Guía completa y código fuente para implementar la biblioteca VLC Sharp en aplicaciones .NET Maui. Este proyecto demostrativo ofrece una solución integral para la integración de funciones multimedia en .NET Maui utilizando VLC Sharp. Ideal para desarrolladores de .NET interesados en ampliar sus habilidades en la gestión de audio y video. Incluye ejemplos de código y mejores prácticas. 11 | 12 | Puedes leer el artículo por el siguiente link: 13 | 14 | [Cómo Integrar LibVLCSharp en .NET MAUI](https://medium.com/@rretamal.dev/c%C3%B3mo-integrar-libvlcsharp-en-net-maui-2564576e4765) 15 | 16 | Enjoying the content? Show your support and buy me a coffee by clicking here! / 17 | ¿Te está gustando el contenido? Muestra tu apoyo y cómprame un café haciendo clic aquí. 18 | 19 | Buy Me A Coffee 20 | 21 | This project is tested with BrowserStack 22 | -------------------------------------------------------------------------------- /MauiVlc/Resources/Splash/splash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MauiVlc/Resources/AppIcon/appiconfg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MauiVlc/Resources/Styles/Colors.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | #512BD4 8 | #DFD8F7 9 | #2B0B98 10 | White 11 | Black 12 | #E1E1E1 13 | #C8C8C8 14 | #ACACAC 15 | #919191 16 | #6E6E6E 17 | #404040 18 | #212121 19 | #141414 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | #F7B548 35 | #FFD590 36 | #FFE5B9 37 | #28C2D1 38 | #7BDDEF 39 | #C3F2F4 40 | #3E8EED 41 | #72ACF1 42 | #A7CBF6 43 | 44 | -------------------------------------------------------------------------------- /MauiVlc/Handlers/MediaViewerHandler.Android.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using LibVLCSharp.Platforms.Android; 3 | using LibVLCSharp.Shared; 4 | using MauiVlc.Controls; 5 | using Microsoft.Maui.Handlers; 6 | 7 | namespace MauiVlc.Handlers 8 | { 9 | public partial class MediaViewerHandler: ViewHandler 10 | { 11 | VideoView _videoView; 12 | LibVLC _libVLC; 13 | LibVLCSharp.Shared.MediaPlayer _mediaPlayer; 14 | 15 | protected override VideoView CreatePlatformView() => new VideoView(Context); 16 | 17 | protected override void ConnectHandler(VideoView nativeView) 18 | { 19 | base.ConnectHandler(nativeView); 20 | 21 | PrepareControl(nativeView); 22 | HandleUrl(VirtualView.VideoUrl); 23 | 24 | base.ConnectHandler(nativeView); 25 | } 26 | 27 | private void VirtualView_PlayRequested() 28 | { 29 | PrepareControl(_videoView); 30 | HandleUrl(VirtualView.VideoUrl); 31 | _mediaPlayer.Play(); 32 | } 33 | 34 | private void VirtualView_PauseRequested() 35 | { 36 | _mediaPlayer.Pause(); 37 | } 38 | 39 | protected override void DisconnectHandler(VideoView nativeView) 40 | { 41 | VirtualView.PauseRequested -= VirtualView_PauseRequested; 42 | nativeView.Dispose(); 43 | base.DisconnectHandler(nativeView); 44 | } 45 | 46 | private void PrepareControl(VideoView nativeView) 47 | { 48 | _libVLC = new LibVLC(enableDebugLogs: true); 49 | _mediaPlayer = new LibVLCSharp.Shared.MediaPlayer(_libVLC) 50 | { 51 | EnableHardwareDecoding = true 52 | }; 53 | 54 | _videoView = nativeView ?? new VideoView(Context); 55 | _videoView.MediaPlayer = _mediaPlayer; 56 | 57 | VirtualView.PauseRequested += VirtualView_PauseRequested; 58 | VirtualView.PlayRequested += VirtualView_PlayRequested; 59 | } 60 | 61 | private void HandleUrl(string url) 62 | { 63 | try 64 | { 65 | 66 | if (url.EndsWith("/")) 67 | { 68 | url = url.TrimEnd('/'); 69 | } 70 | 71 | //url = "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"; 72 | 73 | if (!string.IsNullOrEmpty(url)) 74 | { 75 | var media = new Media(_libVLC, url, FromType.FromLocation); 76 | 77 | _mediaPlayer.NetworkCaching = 1500; 78 | 79 | if (_mediaPlayer.Media != null) 80 | { 81 | _mediaPlayer.Stop(); 82 | _mediaPlayer.Media.Dispose(); 83 | } 84 | 85 | _mediaPlayer.Media = media; 86 | _mediaPlayer.Mute = true; 87 | _mediaPlayer.Play(); 88 | } 89 | } 90 | catch (Exception ex) 91 | { 92 | } 93 | } 94 | 95 | } 96 | } 97 | 98 | -------------------------------------------------------------------------------- /MauiVlc/Handlers/MediaViewerHandler.iOS.cs: -------------------------------------------------------------------------------- 1 | using MauiVlc.Controls; 2 | using Microsoft.Maui.Handlers; 3 | using System; 4 | using LibVLCSharp.Platforms.iOS; 5 | using LibVLCSharp.Shared; 6 | 7 | namespace MauiVlc.Handlers 8 | { 9 | public partial class MediaViewerHandler : ViewHandler 10 | { 11 | VideoView _videoView; 12 | LibVLC _libVLC; 13 | LibVLCSharp.Shared.MediaPlayer _mediaPlayer; 14 | 15 | protected override VideoView CreatePlatformView() 16 | { 17 | return new VideoView(); 18 | } 19 | 20 | protected override void ConnectHandler(VideoView nativeView) 21 | { 22 | base.ConnectHandler(nativeView); 23 | 24 | Core.Initialize(); 25 | 26 | PrepareControl(nativeView); 27 | HandleUrl(VirtualView.VideoUrl); 28 | } 29 | 30 | protected override void DisconnectHandler(VideoView nativeView) 31 | { 32 | VirtualView.PauseRequested -= VirtualView_PauseRequested; 33 | VirtualView.PlayRequested -= VirtualView_PlayRequested; 34 | 35 | nativeView.Dispose(); 36 | base.DisconnectHandler(nativeView); 37 | } 38 | 39 | private void VirtualView_PlayRequested() 40 | { 41 | PrepareControl(_videoView); 42 | HandleUrl(VirtualView.VideoUrl); 43 | _mediaPlayer.Play(); 44 | } 45 | 46 | private void VirtualView_PauseRequested() 47 | { 48 | _mediaPlayer.Pause(); 49 | } 50 | 51 | public void PrepareControl(VideoView nativeView) 52 | { 53 | _libVLC = new LibVLC(enableDebugLogs: true); 54 | _mediaPlayer = new LibVLCSharp.Shared.MediaPlayer(_libVLC) 55 | { 56 | EnableHardwareDecoding = true 57 | }; 58 | 59 | _videoView = nativeView ?? new VideoView(); 60 | _videoView.MediaPlayer = _mediaPlayer; 61 | 62 | VirtualView.PauseRequested += VirtualView_PauseRequested; 63 | VirtualView.PlayRequested += VirtualView_PlayRequested; 64 | } 65 | 66 | public void HandleUrl(string url) 67 | { 68 | try 69 | { 70 | if (url.EndsWith("/")) 71 | { 72 | url = url.TrimEnd('/'); 73 | } 74 | 75 | if (!string.IsNullOrEmpty(url)) 76 | { 77 | var media = new Media(_libVLC, url, FromType.FromLocation); 78 | 79 | _mediaPlayer.NetworkCaching = 1500; 80 | 81 | if (_mediaPlayer.Media != null) 82 | { 83 | _mediaPlayer.Stop(); 84 | _mediaPlayer.Media.Dispose(); 85 | } 86 | 87 | _mediaPlayer.Media = media; 88 | _mediaPlayer.Mute = true; 89 | 90 | _videoView.MediaPlayer.Play(); 91 | } 92 | } 93 | catch (Exception ex) 94 | { 95 | // Handle exception 96 | } 97 | } 98 | } 99 | } 100 | 101 | -------------------------------------------------------------------------------- /MauiVlc/MauiVlc.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-ios;;net8.0-android34.0 4 | 5 | 6 | Exe 7 | MauiVlc 8 | true 9 | true 10 | enable 11 | 12 | MauiVlc 13 | 14 | com.companyname.mauivlc 15 | 69da18e9-1d89-4922-a6d9-e5f3f6b31ab8 16 | 17 | 1.0 18 | 1 19 | 11.0 20 | 21.0 21 | 22 | 23 | false 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /MauiVlc/Resources/Images/dotnet_bot.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /MauiVlc/Resources/Styles/Styles.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | 15 | 16 | 21 | 22 | 25 | 26 | 49 | 50 | 67 | 68 | 88 | 89 | 110 | 111 | 132 | 133 | 138 | 139 | 159 | 160 | 178 | 179 | 183 | 184 | 206 | 207 | 222 | 223 | 243 | 244 | 247 | 248 | 271 | 272 | 292 | 293 | 299 | 300 | 319 | 320 | 323 | 324 | 352 | 353 | 373 | 374 | 378 | 379 | 391 | 392 | 397 | 398 | 404 | 405 | 406 | --------------------------------------------------------------------------------