- Note renamed fromMauiMediaRecorderVideoAndroidApp
Will change Repository URL to match soon to djaus2/AthsVideoRecording
A test app for the following NuGet package. V3.0.1 djaus2_MauiMediaRecorderVideoLib
Also uses Nuget Package V1.0.6 djaus2MauiCountdownToolkit
- See note wrt FPS below
- Several options for determining the event start time, wrt the video start time
- Can use Icon from app but not Toolkit embedded versions
- 2 Nuget packages tried. Reverting at Version 1.1.6 where app icon works
Major bug fix (sorry) in the app that caused the app to crash when trying to run detached from VS.
EnumEqualsConverter
went missing! Fixed.
- Numerous updates including with 2 NuGet packages it uses.
- In TimeFromMode WallClockSelect
- These features only show in this mode.
- Can auto start video recording after a period
- 3 Modes for that:
- Soft: Just handled by _VideoKapture as UI less delay
- Can be cancelled by pressing video start (white) button.
- ATM it does this delay in both packages. 2Do
- Red and Rainbow: A popup with Cancel button
- Red: Popup border is Red. 2Do make color selectable
- Rainbow: Rainbow border, as below. Nice!
- Soft: Just handled by _VideoKapture as UI less delay
- 3 Modes for that:
- There is a start gun icon. Race times are wrt to this.
- In TimeFromMode WallClockSelect
- Added TimeFromMode property to VideoRecorderService to allow for different ways of determining the start time of the event.
- Appends a text string for TimeFromMode to the video filename.
- AthStitcher app uses this to determine the start time of the event and parse it to the video file Title property, removing that text from the filename.
- For WallClock mode, the gun time is also appended that AthStitcher parses to gun WallClock time and sets as Video file Comment property, also removing that text from the filename.
- Note: Gun only shows if TimeFromMode is set to WallClock when ready to record.
- Can be pressed before or during video recording.
- 2Do Insert those properties in the capture library so that the video file has those properties set.
- Text appended: (Note: _ is added before and after each text string:
TimeFromMode.FromVideoStart => "VIDEOSTART",
TimeFromMode.FromGunSound => "GUNSOUND",
TimeFromMode.FromGunFlash => "GUNFLASH",
TimeFromMode.ManuallySelect => "MANUAL",
TimeFromMode.WallClockSelect => "WALLCLOCK"
- Found that it works in Release mode if AOT is disabled!
Both Bundle AND APK builds
Bundle-No AOT config here for Release config.
NuGet: MauiMediaRecorderVideoLib , a .NET MAUI library for Android video recording using MediaRecorder with Camera Preview and Stabilization features.
Nb: Video is stored /Movies folder. Filename is juxtaposed with date. Can optionally also optionally start time to the the video filename which this app can parse and use.
A .NET MAUI library for Android video recording using MediaRecorder with camera preview and stabilization features.
Latest Version: 2.0.1
Nb This is a work in progress. The library is functional but the test app is not yet fully working in Release mode. (Debug works).
Clone this repository, build and deploy to an Android phone.
(Was tested on a Pixel 6 phone)
Change the UI as you wish.
The library is being developed to target a sporting Photoiming app. See djaus2/PhotoTimingDjaus
- Full-screen camera preview
- Video recording with MediaRecorder
- No audio recording
- Image stabilization options (Standard or Locked)
- Camera rotation support (0, 90, 180, 270 degrees)
- Configurable video FPS (30, 60, or default)
- Note for 60 FPS with Google Pixel phone need to:
- Camera Settings
- Advanced
- Turn off Store videos efficiently
- Probably best to do that for 30 FPS as well otherwise get dynamic FPS
- Note for 60 FPS with Google Pixel phone need to:
- Support for pausing and resuming recording
- Proper handling of Android permissions
- Screen dimensions detection for optimal preview
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 Preview.
- Add the required permissions to your Android Manifest:
<uses-permission android:name="android.permission.CAMERA" />
Note: In app Android//MainActivity calls permissions setup via static method in library that iterates through in-app Android/Manifest permissions.
- Initialize the video recorder service:
using MauiMediaRecorderVideoLib;
// Initialize the service
var videoRecorderService = new AndroidVideoRecorderService();
await videoRecorderService.InitializeAsync();
- Start the camera preview:
// Assuming you have a GraphicsView named 'cameraPreview' in your XAML
videoRecorderService.SetPreviewSurface(cameraPreview);
- Start recording:
// Configure recording options
videoRecorderService.SetVideoFPS(30); // Optional: Set FPS
videoRecorderService.SetImageStabilization(StabilizationMode.Locked); // Optional: Set stabilization
// Start recording
string outputFilePath = Path.Combine(FileSystem.CacheDirectory, "myVideo.mp4");
await videoRecorderService.StartRecordingAsync(outputFilePath);
- Control recording:
// Pause recording
await videoRecorderService.PauseRecordingAsync();
// Resume recording
await videoRecorderService.ResumeRecordingAsync();
// Stop recording
await videoRecorderService.StopRecordingAsync();
- Clean up resources:
// Release resources when done
await videoRecorderService.CleanupAsync();
- .NET MAUI project targeting Android
- Android API level 21 or higher
- Requires Android device with camera