mp_camera

Camera frame conversion and scheduling for MP vision tasks in Flutter.

mp_camera is the only package in the SDK that depends on package:camera. Portable vision, text, audio, and GenAI packages remain usable from plain Dart.

Features

  • BGRA8888 to RGBA conversion for iOS camera frames
  • NV21 and row/pixel-stride-aware YUV420 conversion for Android
  • Sensor and device orientation compensation
  • Explicit preview mirroring metadata
  • A latest-frame scheduler with drop and failure telemetry

Install

Add the package:

dependencies:
  { { name } }: ^0.1.0

Camera frame conversion and scheduling for MP vision tasks in Flutter.

Usage

import 'package:camera/camera.dart';
import 'package:mp_camera/mp_camera.dart';

final clock = MpCameraClock();
final scheduler = LatestFrameScheduler<MpCameraFrame>((frame) async {
  await landmarker.detectAsync(
    frame.image,
    frame.timestampMs,
    processingOptions: frame.processingOptions,
  );
});

await controller.startImageStream((cameraImage) {
  final rotation = MpCameraRotation.degrees(
    controller.description,
    controller.value.deviceOrientation,
  );
  scheduler.submit(
    MpCameraFrameConverter.convert(
      cameraImage,
      timestampMs: clock.nextTimestampMs(),
      rotationDegrees: rotation,
      mirroredPreview: MpCameraRotation.isPreviewMirrored(controller.description),
    ),
  );
});

Listen to scheduler.failures in development and monitor droppedCount to choose an appropriate camera resolution. A dropped queued frame is expected in real-time inference; retaining stale frames is usually worse.

The conversion and scheduling paths run in CI against synthetic frames, and the live-camera integration is exercised end to end by the examples/device_demo Flutter app.

Failure contract

Unsupported API and platform combinations fail explicitly with MpException(MpStatus.unimplemented, …) rather than silently returning empty results. Check MpStatus before treating a failure as a model or input problem.

See the camera guide({{ links.docs }}packages/camera/).

See the mp_camera documentation for the full data contract and platform notes.

MP is independent software. MediaPipe is a trademark of Google LLC; this project is not affiliated with or endorsed by Google.

Libraries

mp_camera
Camera integration for MP vision tasks.