camera_desktop 1.2.1
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, butgst_parse_launchsucceeds even when the camera cannot produce MJPEG, so the intended raw-capture fallback never ran and initialization failed atPLAYING. The plugin now probes the V4L2 device (bothMJPEGandJPEGpixel 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, withvideorateadapting 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 acameraErrorif 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_LOGenvironment variable to any value other than0to 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
UnregisterTexturecompletes (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-negotiatederror 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-8under 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_ttocharconversion 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
pipewiresrcinstead ofv4l2src - Request camera access via
org.freedesktop.portal.CameraD-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/canAddOutputfailures return aFlutterErrorinstead of silently skipping, preventing blank-screen timeouts - Increase initialization timeout from 8s to 15s for slower USB cameras
- Subscribe to
AVCaptureSessionRuntimeError,WasInterrupted, andInterruptionEndednotifications and forward to Dart viacameraError - Fix MethodChannel image stream fallback sending hardcoded
bytesPerRowinstead of actual value fromCVPixelBuffer - 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 viaCVPixelBuffertextures, H.264/AAC recording, native mirror support. - Windows, Media Foundation (
IMFCaptureEngine) with Direct3D 11 texture rendering. H.264/AAC recording viaIMFSinkWriter. - Linux, GStreamer + V4L2 (
v4l2src → videoconvert → appsinkpipeline). H.264/AAC recording with automatic encoder selection, native mirror viavideoflip.
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_interfacecompliance. - Photo capture, video recording, image streaming, and live preview.