Skip to content

Conversation

shiena
Copy link

@shiena shiena commented Jun 26, 2025

This is a demo project for camera feed and camera server.

Supported Platforms

  • Linux
  • macOS
  • Android (4.5 or later)

Limitations

Pull requests have been proposed for Windows, iOS and Web.

macOS and iOS are incomplete due to bugs.

Android: Handle YUV_420_888 strides correctly in CameraFeed

Support CameraServer.feeds_updated signal.

Defer format_changed and frame_changed signal for all camera feeds.

Preview

camera_feed

@shiena shiena force-pushed the feature/camerafeed-demo branch from 32d07e5 to d7aa707 Compare June 26, 2025 21:29
@shiena shiena force-pushed the feature/camerafeed-demo branch from d7aa707 to 31daada Compare June 26, 2025 22:12
Copy link
Member

@Calinou Calinou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that the demo requires 4.5 (even on unsupported platforms), as it references the monitoring_feeds property which doesn't exist on 4.4.1. This is not essential to fix to merge (it's fine for this demo to be 4.5+), but I thought I'd mention nonetheless.

Some feedback:

  • The demo should be switched to the Compatibility rendering method if it doesn't use features exclusive to Forward+/Mobile.
  • The demo's folder should be renamed from camerafeed to camera_feed.
  • application/run/low_processor_mode should be enabled in the Project Settings to reduce CPU/GPU utilization when idle.

@shiena shiena force-pushed the feature/camerafeed-demo branch 2 times, most recently from 95f148b to 7c11b39 Compare June 27, 2025 08:46
@shiena
Copy link
Author

shiena commented Jun 27, 2025

@Calinou
Updated based on review feedback:

  • Add require 4.5
  • Switch to the Compatibility rendering
  • Rename from camerafeed to camera_feed
  • Enable application/run/low_processor_mode

@Calinou
Copy link
Member

Calinou commented Jun 27, 2025

The demo should use a lower window size on desktop platforms. Otherwise, on a 1080p display, it'll look like this when run from the editor with game window embedding enabled:

image

You can do this by changing Window Width Override and Window Height Override to 480 and 854 respectively. This will allow it to fit on a 1080p display. (The setting is ignored on mobile platforms.)

@shiena shiena force-pushed the feature/camerafeed-demo branch from 7c11b39 to c48aa42 Compare June 27, 2025 18:23
@shiena
Copy link
Author

shiena commented Jun 27, 2025

  • Changed Window Width Override and Window Height Override

@shiena shiena requested a review from Calinou June 27, 2025 18:28
@shiena shiena force-pushed the feature/camerafeed-demo branch 9 times, most recently from bea0171 to aea91ff Compare July 4, 2025 10:11
@shiena shiena force-pushed the feature/camerafeed-demo branch from aea91ff to 292547b Compare August 10, 2025 11:06
@shiena shiena force-pushed the feature/camerafeed-demo branch from 292547b to 91e9758 Compare August 25, 2025 04:11
@shiena
Copy link
Author

shiena commented Aug 25, 2025

@AThousandShips Address review comments.

@shiena shiena force-pushed the feature/camerafeed-demo branch from 5d13712 to 0e376f2 Compare September 24, 2025 03:52
@Calinou
Copy link
Member

Calinou commented Sep 24, 2025

I've tested the demo on macOS with 4.5.stable and I noticed that while the camera name appears, I can't choose any format:

Screenshot 2025-09-24 at 17 36 37

After clicking Reload, I see a permission prompt. When I accept it, the LED next to the webcam lights up, but I still don't see anything. I don't see any errors in the terminal. This occurs regardless of how I'm running Godot (it's the official 4.5 .app bundle, I've tried running it from a terminal but also from Spotlight). Maybe I'm missing an entitlement? cc @bruvzg

@shiena
Copy link
Author

shiena commented Sep 24, 2025

@Calinou
Format is currently not supported. You will be able to select from a list once godotengine/godot#106777 is merged.
image

@bruvzg
Copy link
Member

bruvzg commented Sep 24, 2025

Current entitlements should be fine, but if you are using multiple bundles with the same id at the same (and all versions of Godot have the same id) permission can sometimes stop working. Removing it from the allowed app list in the system settings (minus button) completly and restarting the app should fix it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants