David Beck's Blog

iPhone Video Screen Capture

Thursday, October 15th, 2009

I recently had the misfortune of having to make a video to showcase Bubble Burster. The results were not pretty. I was literally laughed at by friends when they saw it. The problem is that while you can take screenshots of the iPhone screen, there is no way to capture video. I could have used a screen capture program but those cost around $100 (yes I am very cheap). The best solution I could come up with was to use the built in iSight on my MacBook to show the app.

In order to improve the quality of the video, I created a SIMBL plugin for the iPhone simulator. Basically it captures a screenshot every frame and then saves it to video. It overlays a circle for the pointer and a gloss iPhone frame.

It does not record audio at this time.

To install the plugin, place it in “~/Library/Application Support/SIMBL/Plugins”. create it if it doesn’t already exist. You will need to install SIMBL as well. Right now it is only for Snow Leopard but there isn’t anything major that is keeping it from working on Leopard other than some convenience methods.

If you end up using this plugin, please let me know in the comments.

Download

Update: I uploaded the demo video I made for Bubble Burster. I used a custom build that ignores the accelerometer. I then used After Effects to rotate the video to match my actions. I think I should have paused a little though, because in parts it looks unnaturally fast.

Update: Thanks to John Scott for getting it working with 3.2. It now works in 3.2 and 4.0. iPad, unfortunately, does not record correctly yet. The cosmetic settings, like setting a fake time, are not functioning either.

Update: Fake time, fake apps and fake carrier have been fixed for 4.0. A Github repository has also been created.

Filed under: Software Tags: , , ,

25 Responses to “iPhone Video Screen Capture”

  1. Hi there, this looks great but is there a way to turn the pointer off?

  2. Yes. Go to “Recording” -> “Recording Preferences” and uncheck “Record Pointer”.

  3. Hi Dave,
    I compiled your app but there isn’t an executable, what am I doing wrong?

  4. Are you getting any errors?

    There is no application. The product is a SIMBL plugin of type (.bundle extension). The projects executable installs the plugin and launches the simulator. You will need SIMBL installed too.

  5. Hi Dave,
    Thanks for the quick response. I have SIMBL installed, the program builds with no errors. I did notice that the build and run buuton is dimmed on the simulator. Maybe something is set wrong in the project. I am running Snow Leopard…

  6. Im not a developer but I would like to record a demo on the iphone, how do I actually use the plugin? I have downloaded both things and put the folder in the library directory like you said. But I dont know how to actually use it. Please help

  7. Did you install SIMBL as well? You should just have to double click the installer when you download it. You will also need the iPhone developer tools. They are free for Mac users.

    Assuming everything is installed, when you launch the iPhone Simulator, there will be a “Recording” menu. From there select Record. A window will appear with a record button and a timer. Once you are done recording, select “Recording” | “Save”.

    You can also select “Recording” | “Recording Preferences” to change some settings like background color (including transparent), time and even carrier.

  8. Hi David,
    I have some errors, so maybe you see what I should do:
    “Building target “iPhone Simulator Capture” of project “iPhone Simulator Capture” with configuration “Debug”
    Checking Dependencies
    Invalid value ‘com.apple.compilers.llvm.clang.1_0′ for GCC_VERSION
    Unable to determine concrete GCC compiler for file /Library/Application Support/SIMBL/Plugins/iPhone-Capture/iPhone Simulator Capture/ISCController.m of type sourcecode.c.objc.
    ….. etc.

    I don’t know if I install correct your Capture script or SIMBL (Can I just copy a SIMBL folder from HD where is installed default to Liblary/Application Support/SIMBL/Plugins?)
    How should look Plugins folder?
    When I lunch iPhone Simulator I don’t have record button?
    Should I first run Xcode? Open some your project or just run iPhone Simulatr?
    Please explain ones again in few steps, I try do this and can’t get results.
    Best

  9. Are you using Snow Leopard? I have not tested this program with prior versions. Clang is the new compiler for Snow Leopard. You can try changing the compiler in the project settings.

  10. No I using Leopard, but now I have some “error: cannot find protocol declaration for ‘NSApplicationDelegate’”
     

  11. Any luck on the 3.2 port?

  12. Hi,
    Could you please share the code for taking screen shot of iphone screen.
    Thanks,
    Zeeshan Khan

  13. It’s works fine! Thanks for this function.
    Cascubo

  14. This is very useful and it’s introduced me to SIMBL, which opens up a whole world of possibilities
    Many thanks!

  15. Hi
    Its cool feature nice work , but how to take landscape mode ?
    Thanks

  16. The same way you normally do, Hardware > Rotate Left. It will still show it in portrait in the video, but the screen will be rotated. You can then rotate it in an editor. I find Photoshop to be the easiest tool for quick edits like this.

    The reason I didn’t rotate the video automatically is because you could rotate the iPhone mid recording and that would screw up the aspect ratio.

  17. This is a great bit of kit. Thanks so much for sharing!

  18. a question – what frame rate is it saving out at? I’m dumping frames from QTPro to use in Premiere and would like to avoid any resampling…

  19. I believe it renders at 20fps.

  20. Good stuff David, but it generates a very large file. Can you change that some how or do you import it into another tool to play around with it.

  21. This is exactly what I’ve been looking for – thanks very much David!

  22. I am not seeing any record button when I run the xcode simulator with my project.  Does this work with os4.0.2?  Is there some other project I need to run?

  23. You need to open the window from the record menu.

  24. this is a fantastic little tool, I’m glad I found it.  one question – I can’t seem to get the pointer to show up in the saved video.  I’ve tried checking and unchecking the “record pointer” checkbox but no dice.  I’m using ios4.0.2.  Thanks!

  25. The recorded movie does not show the frame nor the pointer.

Leave a Reply