camera_desktop 1.2.1 copy "camera_desktop: ^1.2.1" to clipboard
camera_desktop: ^1.2.1 copied to clipboard

A Flutter camera plugin for desktop platforms (Linux, macOS, Windows). Implements camera_platform_interface for easy integration with the standard camera package.

1.2.1 #

  • Fix Linux preview Internal data stream error (not-negotiated) on cameras that do not expose MJPEG, such as NV12/YUYV-only USB webcams. The MJPEG fast-path added in 1.1.7 was selected whenever its pipeline merely parsed, but gst_parse_launch succeeds even when the camera cannot produce MJPEG, so the intended raw-capture fallback never ran and initialization failed at PLAYING. The plugin now probes the V4L2 device (both MJPEG and JPEG pixel formats) for the target resolution before choosing the MJPEG path, and otherwise uses the always-safe raw capture path. The MJPEG pipeline pins only the resolution and lets the camera's native frame rate float, with videorate adapting it to the requested fps, so requesting a frame rate the camera does not expose natively in MJPEG no longer breaks negotiation.

1.2.0 #

  • Speed up Windows camera initialization by completing initialize() as soon as the preview starts instead of blocking until the first camera frame arrives. On a typical webcam this returns control to the app in roughly 250 ms rather than about 2 seconds. The preview fills in as frames arrive, and a watchdog reports a cameraError if no frames are received within 8 seconds.
  • Make Windows diagnostic logging opt-in and off by default so the plugin stays quiet in your app. Set the CAMERA_DESKTOP_LOG environment variable to any value other than 0 to capture a trace when reporting an issue. This also removes the logging overhead that slowed camera initialization, most noticeably with a debugger or IDE attached.

1.1.8 #

  • Fix Windows use-after-free crashes on camera dispose: guard the preview texture against in-flight preview samples, and defer destroying the texture until Flutter's asynchronous UnregisterTexture completes (its raster-thread pixel-buffer callback could otherwise run after the texture was freed) (#4)

1.1.7 #

  • Fix Windows crash after camera dispose by marshalling platform channel messages to the platform thread (#4)
  • Fix Linux preview not-negotiated error on common USB webcams (#5, thanks @jvnonce)
  • Fix Linux recording on systems without x264enc (#5, thanks @jvnonce)
  • Report max frame rate across all pixel formats during Linux device enumeration (#5, thanks @jvnonce)

1.1.6 #

  • Fix Swift compiler warnings: remove unused variables in DeviceEnumerator, PhotoHandler, RecordHandler, and CameraSession

1.1.5 #

  • Fix SPM integration by adding missing FlutterFramework dependency to iOS and macOS Package.swift

1.1.4 #

  • Update documentation
  • Remove debug logging from image stream pause/resume and video recording completion

1.1.3 #

  • Fix Windows build failure (C4819 / C2220) on hosts with a non-UTF-8 system code page (e.g. CP936 on Simplified Chinese Windows) by compiling the plugin with /utf-8 under MSVC (#2)

1.1.2 #

  • Fix macOS build failure on Xcode 26+ by removing unavailable AVCaptureSessionInterruptionReasonKey (re-introduced in 1.1.1)
  • Fix Windows build failure caused by implicit wchar_t to char conversion in debug logging

1.1.1 #

  • Add comprehensive diagnostic logging across all platforms (Linux, macOS, Windows)
  • Log device enumeration, backend selection, pipeline construction, resolution selection, recording lifecycle, and error paths

1.1.0 #

  • Add PipeWire camera portal support for Flatpak sandbox compatibility on Linux
  • Automatically detect Flatpak environment and use pipewiresrc instead of v4l2src
  • Request camera access via org.freedesktop.portal.Camera D-Bus interface
  • Enumerate PipeWire camera nodes via GstDeviceMonitor
  • Fall back to V4L2 if portal is unavailable or user denies permission
  • No new build dependencies: uses GIO (D-Bus) and GStreamer APIs already linked

1.0.8 #

  • Fix macOS build failure on Xcode 26+ by removing unavailable AVCaptureSessionInterruptionReasonKey (iOS-only API)

1.0.7 #

  • Fix camera initialization failure on Intel Macs by selecting session preset after device discovery using device.supportsSessionPreset() with automatic fallback (1080p → 720p → high → medium)
  • Make canAddInput/canAddOutput failures return a FlutterError instead of silently skipping, preventing blank-screen timeouts
  • Increase initialization timeout from 8s to 15s for slower USB cameras
  • Subscribe to AVCaptureSessionRuntimeError, WasInterrupted, and InterruptionEnded notifications and forward to Dart via cameraError
  • Fix MethodChannel image stream fallback sending hardcoded bytesPerRow instead of actual value from CVPixelBuffer
  • Add diagnostic logging at all critical points in macOS session setup

1.0.6 #

  • Fix Xcode build warnings by declaring PrivacyInfo.xcprivacy as a resource bundle in iOS and macOS podspecs

1.0.5 #

  • Fixes #1: conflict with camera_android and camera_avfoundation dependencies

1.0.4 #

  • Fix macOS Swift Package Manager compatibility

1.0.3 #

  • Fix hot restart FFI crash by replacing NativeCallable with polling

1.0.2 #

  • Fix macOS use-after-free crash during engine teardown by making dispose synchronous/idempotent and guarding FFI callbacks

1.0.1 #

  • Fix xcprivacy build warnings by declaring resource_bundles in iOS and macOS podspecs

1.0.0 #

First stable release of camera_desktop

Platform implementations #

  • macOS, AVFoundation (AVCaptureSession, AVAssetWriter). Preview via CVPixelBuffer textures, H.264/AAC recording, native mirror support.
  • Windows, Media Foundation (IMFCaptureEngine) with Direct3D 11 texture rendering. H.264/AAC recording via IMFSinkWriter.
  • Linux, GStreamer + V4L2 (v4l2src → videoconvert → appsink pipeline). H.264/AAC recording with automatic encoder selection, native mirror via videoflip.

Features #

  • Live camera preview with hardware-accelerated texture rendering on all platforms
  • Photo capture, video recording, and real-time image streaming
  • FFI-based zero-copy frame delivery (MethodChannel fallback for compatibility)
  • Configurable resolution presets, FPS (5–60), and video bitrate
  • Mirror/flip control (macOS and Linux)
  • Pause/resume preview
  • Runtime capability querying via getPlatformCapabilities()

0.0.8 #

  • Migrate Windows implementation to IMFCaptureEngine

0.0.7 #

  • Update example app to show settings panel

0.0.5 #

  • Fix C linkage on Linux

0.0.4 #

  • FFI-based image stream for reduced memory copies (3→2 per frame)
  • Fix macOS Swift/ObjC interop for FFI bridge
  • Fix image format reporting (Linux/Windows RGBA vs macOS BGRA)

0.0.3 #

  • Performance improvements

0.0.2 #

  • Add setMirror API and built-in camera sorting for DeviceEnumerator

0.0.1 #

  • Linux camera support via GStreamer + V4L2.
  • macOS camera support via AVFoundation.
  • Windows camera support via Media Foundation.
  • Full camera_platform_interface compliance.
  • Photo capture, video recording, image streaming, and live preview.
8
likes
160
points
2.29k
downloads

Documentation

API reference

Publisher

verified publisherhugo.ml

Weekly Downloads

A Flutter camera plugin for desktop platforms (Linux, macOS, Windows). Implements camera_platform_interface for easy integration with the standard camera package.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

camera_platform_interface, flutter, plugin_platform_interface, stream_transform

More

Packages that depend on camera_desktop

Packages that implement camera_desktop