security-union / security-union/remote-shutter
Spatial video recording (MV-HEVC for Vision Pro)
Nobody has claimed this yet.
- Dominant language
- Swift
- Stars
- 19
- Forks
- 3
- Avg merge
- 28m
- Merged PRs (30d)
- 6
Description
Requested by @momentsintimeusa in #206.
What the user wants
Record spatial video (stereo MV-HEVC, playable in 3D on Apple Vision Pro) from the camera device, triggered and configured from the remote like any other video mode.
Platform facts
- Spatial video capture is available to third-party apps since iOS 17.2 (iPhone 15 Pro and later, wide + ultra-wide pair) via
AVCaptureMovieFileOutputwithisSpatialVideoCaptureEnabled, and since iOS 18 viaAVCaptureVideoDataOutput+AVAssetWriterwith the MV-HEVC multiview compression properties. - Only formats with
isSpatialVideoCaptureSupportedqualify; supported formats are 1080p/30 (and a limited set on newer devices). Lens switching, zoom beyond the paired lenses, and non-16:9 crops are unavailable while spatial capture is on. - Output is a
.movwith two MV-HEVC layers; Photos tags it as Spatial automatically.
Scope sketch
- Camera: a
spatialvideo mode inCaptureEngine/RecordingPipeline, gated on device support, that picks a spatial-capable format and locks out incompatible controls (lens switch, crop) while recording. - Wire: capability flag
supports_spatial_video+ aVideoMode/resolution entry inFlatBufferSchemas.fbsso the remote only offers it to a capable camera (Unknown = 0convention). - Remote: mode picker entry; disable the controls the mode forbids.
- Transfer to remote / multicam: MV-HEVC files are larger; check the monitor-side receive path handles the size.
Open questions
- Is
AVAssetWriter-based spatial capture (iOS 18) sufficient, or do we need theAVCaptureMovieFileOutputpath for iOS 17.2 devices? Minimum target today is iOS 15, so this is feature-gated either way. - Monetization: part of "enable video" IAP or a new tier?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading CaptureEngine and RecordingPipeline to determine how video modes and device formats are selected. Then inspect FlatBufferSchemas.fbs, the remote mode picker, and the monitor-side receive path for capability negotiation and file handling. Done means a supported camera can record spatial MV-HEVC, the remote exposes it only when valid, incompatible controls are disabled, and transfer works.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, swift
- Domain
- mobile-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100