djaus2_MauiMediaRecorderVideoLib 3.0.2

dotnet add package djaus2_MauiMediaRecorderVideoLib --version 3.0.2
                    
NuGet\Install-Package djaus2_MauiMediaRecorderVideoLib -Version 3.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="djaus2_MauiMediaRecorderVideoLib" Version="3.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="djaus2_MauiMediaRecorderVideoLib" Version="3.0.2" />
                    
Directory.Packages.props
<PackageReference Include="djaus2_MauiMediaRecorderVideoLib" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add djaus2_MauiMediaRecorderVideoLib --version 3.0.2
                    
#r "nuget: djaus2_MauiMediaRecorderVideoLib, 3.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package djaus2_MauiMediaRecorderVideoLib@3.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=djaus2_MauiMediaRecorderVideoLib&version=3.0.2
                    
Install as a Cake Addin
#tool nuget:?package=djaus2_MauiMediaRecorderVideoLib&version=3.0.2
                    
Install as a Cake Tool

MauiMediaRecorderVideoLib

A .NET MAUI library for Android video recording plus Audio using MediaRecorder with camera preview and stabilization features.

Now waits for the user to accept Camera before starting the camera preview.
Both Release and Debug versions of test app work.

Nb: The solution of test app plus this lib as one solution is a private repository.

Test App Repository

djaus2/MauiMediaRecorderVideoAndroidApp

About

This library is being developed to target a sporting Phototiming app. See djaus2/PhotoTimingDjaus

Features

  • Full-screen camera preview
  • Video recording with MediaRecorder
    • Now includes audio recording
  • Image stabilization options (Standard or Locked)
  • Camera rotation support (0, 90, 180, 270 degrees)
  • Configurable video FPS (30, 60, or default)
  • Support for pausing and resuming recording
  • Proper handling of Android permissions
  • Screen dimensions detection for optimal preview
  • Added: Gun Button Functuionality to append start time to video filename.
  • Added: Crosshairs overlay for aiming assistance
  • Added: TimeFromMode property to indicate to Stitching app the method to use to determine guntime. (Appends text to video filename)

Usage with a MAUI Android Phone App

Installation

Start by creating a new .NET MAUI project or using an existing one.

Install the package via NuGet:

dotnet add package MauiMediaRecorderVideoLib

Also need to install the following NuGet package:

dotnet add package CommunityToolkit.Maui.Camera

Nb: CommunityToolkit.Maui.Camera is in the library but needs a reference in the App as it uses the Toolkit Peview.

Basic Setup

See the sample app for details. The following is a summary of the steps to get started:

  1. Add the required permissions to your Android/Manifest.xaml:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
  1. Add call to activate permsssions in Android/MainActivity.cs:
    public class MainActivity : MauiAppCompatActivity
  {
      protected override void OnCreate(Bundle? savedInstanceState)
      {
          base.OnCreate(savedInstanceState); // Ensure base initialization always occurs

          VideoKapture.RequestPermissionsStatic();
      }
  }

This is the point at which the app requests permissions. The method actually iterates through the permissions in the Android/Manifest file and requests them.

  1. In MauiProgram.cs, add the following line to register the library:
using MauiMediaRecorderVideoLib;

Include the Toolkit:

builder
   .UseMauiApp<App>()
   .UseMauiCommunityToolkitCamera() <- Add this
   ...

In the Builder setup, add the following lines to register the camera preview handler and configure camera services:

    builder.ConfigureMauiHandlers(handlers =>
    {
        handlers.AddHandler(typeof(CameraPreviewView), typeof(MauiAndroidCameraViewLib.Platforms.Android.CameraPreviewHandler));
    });
    MauiAndroidCameraViewLib.MauiCameraServicesSetup.ConfigureCameraServices(builder);

The following is in MainPage.cs:

  1. Initialize the video recorder service:
using MauiMediaRecorderVideoLib;

// Initialize the service
_VideoKapture = new VideoKapture(this, CameraPreview);
  1. Submit the video filenamme to the service:
_VideoKapture.OnFilenameCompleted(filename);
  1. Start Preview:
    var activity = Platform.CurrentActivity;
    await _VideoKapture.OnButton_GetReady4Recording(activity);
  1. Start Recording:
    await _VideoKapture.OnButton_StartRecording_Clicked();
  1. Pause Recording:
    await _VideoKapture.OnButton_PauseRecording_Clicked();
  1. Continue Recording:
    await _VideoKapture.OnButton_ContinueRecording_Clicked();
  1. Stop Recording:
    await _VideoKapture.OnButton_StopRecording_Clicked();
  1. A button can be added to toggle visibility of the crosshairs.
    The button is added to the XAML file and the code behind is as follows:
    _VideoKapture.ViewModel.EnableCrossHairs = !_VideoKapture.ViewModel.EnableCrossHairs;

There is also code to set the framerate at 30 or 60 FPS and to enable image stabilisaztion. See the sample app.

Requirements

  • .NET MAUI project targeting Android
  • Android API level 21 or higher
  • Requires Android device with camera
Product Compatible and additional computed target framework versions.
.NET net9.0-android35.0 is compatible.  net10.0-android was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.2 147 7/16/2025
3.0.1 141 7/16/2025
3.0.0 143 7/16/2025
2.5.1 98 7/11/2025
2.5.0 103 7/11/2025
2.4.3 142 7/6/2025
2.4.2 142 7/6/2025
2.4.0 138 7/6/2025
2.3.0 143 7/6/2025
2.2.2 156 6/19/2025
2.2.1 154 5/23/2025
2.2.0 158 5/21/2025
2.1.2 154 5/20/2025
2.1.1 238 5/15/2025
2.1.0 248 5/14/2025
2.0.3 231 5/14/2025
2.0.2 242 5/14/2025
2.0.1 237 5/13/2025
2.0.0 246 5/13/2025
1.1.3 148 5/11/2025
1.1.2 149 5/11/2025
1.1.0 152 5/11/2025
1.0.3 162 5/7/2025
1.0.2 161 5/7/2025
1.0.1 153 5/6/2025
1.0.0 160 5/6/2025

Added Autostart Countdown mode:  V3.0.2