Giter VIP home page Giter VIP logo

arrecorder's Introduction

⚠️ This project is not actively maintained and due to use of private SPI may not work with newer releases of iOS. ⚠️


AR Recorder icon AR Recorder

This project demonstrates how ARKit's private SPI can be used to record and replay AR sessions, thus enabling a convenient development workflow and test automation.

Disclaimer: Functionality exposed and used in this project is private SPI. It's not guaranteed to be reliable or stay available in any form in future versions of ARKit. It definitely cannot be used in production versions of apps distributed on the App Store.

How to build

Clone the repository and open ARRecorder.xcodeproj in Xcode 10 or newer. Configure automatic codesigning by opening project settings, ARRecorder target, General, and configuring the Team setting in the Signing section.

How to use

The app starts a normal AR session once launched. Tap Record to start recording the session to a local file. Then tap Finish to complete the recording and continue a normal session. To replay a previously recorded session, tap Replay, then select the file. To stop the replay at any time, tap .

During both normal, recording and replay sessions, tap anywhere to place a virtual cube in the scene at the estimated physical location that corresponds to your touch. Note that this won't be recorded into the replay file: you can interact with the session differently during recording and replay.

To delete a recorded file, tap Replay and swipe left on a file row, then tap Delete. You can also access all session recordings using the Files app by selecting On My iPhone/iPad location, where ARRecorder's documents container will show up. The app is also configured to allow File Sharing via iTunes.

SPI declaration

Relevant SPI classes and methods are annotated across a few headers like ARRecordingTechnique.h and ARReplaySensorProtocol.h (please see ARKit Private API group in Xcode project for the full list). Their signature and presumed function have been observed as of ARKit 3.0.

Note that depending on the iOS version, either ARReplaySensor or ARReplaySensorPublic class is used to load replays. See ARConfiguration.makeReplayConfiguration(replayURL:) method in MainViewController.swift for an example of how that can be done.

Supported devices

All iOS 11.3+ devices with A9 chip or newer are supported. This includes:

  • iPhone SE
  • iPhone 6S, 6S Plus or newer
  • iPad (2017, 5th generation) or newer

The project can be modified to support a wider range of hardware by replacing session's world tracking configuration with an orientation tracking configuration.

Licensing

This work is licensed under a BSD 3-Clause License.

arrecorder's People

Contributors

cjmlgrto avatar orj avatar vlas-voloshin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

arrecorder's Issues

ios14 Support?

I wonder if you could publish a version with ios14 support. Thanks.

iOS13 changes

It seems that this API changed in iOS13 but should be available (e.g., Reality Composer is using recording for Xcode debugging).

Is there still a way of accessing it?

Recording multiple sessions

The current version only records the first ARKit session. When I tried to record the second session, the app doesn't save the output file in the Documents directory. I have to close the application and open it again to save the next session. Does anyone face the same error?

Extract Image with IMU Data

Hi Vlas,

Thanks for your job about your article "Recording ARKit Sessions" and the code which comes with.
I am currently looking for a way to extract the IMU data for each captured image. I did not find any way to do it using the example you have provided.
Are the IMU data encoded with the video? Is there a solution to get them?

Thanks

Live streaming feature

Hi Vlas,
Thank you for your great work. I also run and enjoyed your AR Visualizer. In the demo video, you streamed the recorded session to a Mac for visualization. Is this feature already included in the repo? If so, how can I activate it? If not, do you have a plan to update it with the feature?
Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.