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.
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: Apple Developer Tools, iPhone, Screencast, SIMBL
christi
November 24th, 2009 at 4:59 PM
Hi there, this looks great but is there a way to turn the pointer off?
David Beck
November 24th, 2009 at 5:01 PM
Yes. Go to “Recording” -> “Recording Preferences” and uncheck “Record Pointer”.
bob
January 12th, 2010 at 6:46 PM
Hi Dave,
I compiled your app but there isn’t an executable, what am I doing wrong?
David Beck
January 12th, 2010 at 6:55 PM
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.
bob
January 12th, 2010 at 7:32 PM
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…
Lisa
January 26th, 2010 at 10:39 AM
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
David Beck
January 26th, 2010 at 10:47 AM
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.
sonas
March 7th, 2010 at 7:01 PM
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
David Beck
March 7th, 2010 at 7:05 PM
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.
sonas
March 7th, 2010 at 9:03 PM
No I using Leopard, but now I have some “error: cannot find protocol declaration for ‘NSApplicationDelegate’”
Rob
March 11th, 2010 at 1:33 AM
Any luck on the 3.2 port?
Zeeshan
June 17th, 2010 at 2:13 AM
Hi,
Could you please share the code for taking screen shot of iphone screen.
Thanks,
Zeeshan Khan
Cascubo
June 20th, 2010 at 3:30 PM
It’s works fine! Thanks for this function.
Cascubo
Nick
June 30th, 2010 at 12:38 PM
This is very useful and it’s introduced me to SIMBL, which opens up a whole world of possibilities
Many thanks!
Ondrej
July 7th, 2010 at 2:49 AM
Hi
Its cool feature nice work , but how to take landscape mode ?
Thanks
David Beck
July 7th, 2010 at 6:46 AM
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.
Si
July 14th, 2010 at 2:54 PM
This is a great bit of kit. Thanks so much for sharing!
Si
July 17th, 2010 at 9:46 AM
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…
David Beck
July 17th, 2010 at 10:09 AM
I believe it renders at 20fps.
Mach
August 4th, 2010 at 7:14 PM
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.
Andy Q
August 11th, 2010 at 11:10 AM
This is exactly what I’ve been looking for – thanks very much David!
DS
August 15th, 2010 at 10:28 PM
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?
David Beck
August 16th, 2010 at 7:50 AM
You need to open the window from the record menu.
Jeremy
August 18th, 2010 at 7:43 AM
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!
Daniel
August 25th, 2010 at 12:04 PM
The recorded movie does not show the frame nor the pointer.