Search code examples
xamarin.formsxamarin.androidxamarin.iosvideo-capturexamarin.essentials

How to capture only 5minutes video with Xamarin.Essentials MediaPicker in xamarin forms


We are creating Capture Images & Videos with Xamarin Essentials MediaPicker in xamarin forms.

await Xamarin.Essentials.MediaPicker.CaptureVideoAsync();

Video capturing more than 10 minutes long. How to restrict only capture 5minutes video.


Solution

  • Xamarin Essentials MediaPicker is still in preview and doesn't support such an option until now .

    We could use the plugin Media.Plugin from nuget .

    Usage

    private async void Button_Clicked(object sender, EventArgs e)
            {
                await CrossMedia.Current.Initialize();
    
                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    DisplayAlert("No Camera", ":( No camera available.", "OK");
                    return;
                }
    
    
                // record video
                //var file = await CrossMedia.Current.TakeVideoAsync(new Plugin.Media.Abstractions.StoreVideoOptions
                //{
                //    DesiredLength = new TimeSpan(300),  //set length here 300s
                //    Quality = Plugin.Media.Abstractions.VideoQuality.High
                //});
    
                //if (file == null)
                //    return;
    
                //take photo
                var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    Directory = "Sample",
                    Name = "test.jpg"
                });
    
                if (file == null)
                    return;
    
                await DisplayAlert("File Location", file.Path, "OK");
    
                image.Source = ImageSource.FromStream(() =>
                {
                    var stream = file.GetStream();
                    return stream;
                });
            }