Screencasting on iOS

Update - 1st March 2012: Since creating the original post, a new option has become available - Reflection on the Mac. I've updated the post to include this new option.
I'm getting more and more emails from people asking how I do the screencasts of my iPad and iPhone.
I've struggled with this since the iPhone and iPad came out as there is still no simple solution, even with the hardwired display out features of the iPad 2 and iPhone 4 and 4S.
So this post is a high level summary of some of the techniques available.
Option 1 - Reflection on the Mac
This is a new piece of software just released on the Mac - website.
It basically turns your Mac into an AirPlay target and allows you to use Airplay and screen mirroring on the iPad 2 and iPhone 4 and above. Just run Reflection on your Mac, and it appears in the list of available AirPlay devices on the iOS device.
Once selected, the iOS screen appears on your Mac, and Reflection allows you create an iPad or iPhone "frame" around it.
It's a first release and my initial impressions are tempered by some issues I had running it for the first time. After making an initial connection, I found it difficult to reconnect to the same iOS device again and I also had some issues trying to select the highest resolution on the Mac. I'm sure these initial bugs will be ironed out over time.
Once you have got it working, you can use any screen recording application to grab the video of your desktop - I'd recommend Screenflow.
The main issue is not the fault of the application, but the fact that the "taps" or "touches" onscreen are not visible, but more about that later.
But overall, Reflections is to be welcomed as it's the first decent solution that doesn't require a jailbroken iOS device or a dedicated hardware capture device.
Option 2 - Jailbreak your iOS device.
Not to be taken lightly and does cause instability on the iOS device. It also means you're constantly behind when new iOS releases come out, as it always takes a while for the jailbreak community to catch up with iOS releases.
Even worse is that initially, the first jailbreak release for a new release of iOS is invariably a "tethered" jailbreak. This means there's a bit of a rigmarole rebooting the device, and can be a nightmare if you inadvertently let your iOS device run out of power.
The good news is that the current jailbreak for iOS5 (5.0.1) is untethered and fairly easy to install.
Once jailbroken, you can purchase an app called DisplayRecorder which will record the iPad video natively on the iPad and has a built in web server to allow you to copy the file to your Mac. There's also an app called iDemo that you can run on your Mac, and this will allow you to capture the live image of your iOS device on the Mac desktop - just use Screenflow or similar to capture that.
One huge benefit of this is that DisplayRecorder allows you to record the "taps" on the screen - indispensable.
Option 3 - Dedicated capture device.
The only other option if you have an iPad 2, iPhone 4 or iPhone 4S, is to purchase a dedicated hardware device to capture the output of the iOS device via the 30 pin dock connector.
The options I have used are:
Matrox MXO2 Mini - Link - This uses a proprietary card to interface to the Mac (So a Mac Pro or MacBook Pro with expresscard is required) but there is now a Thunderbolt adapter available to interface to most modern Thunderbolt enabled Macs (not tried this)
This works OK but you need to use the Apple HDMI connector and capture in a non standard resolution for the iPad. That is, you can't capture in 1024x768, you have to capture in 1280x720. Matrox supply their own software for capture.
Downsides are you don't have a native resolution capture (can look awful) plus you don't capture the taps on screen. When I've used this option, I've had to hand animate the taps on screen.
VGA2USB LR Framegrabber - Link - This is a small (but expensive - $800) adaptor that connected the VGA output from the iPad and converts to USB. Install some special drivers on the Mac and the bespoke software and you can display the iPad image on you Mac in it's native resolution. Plus you can capture the video.
Downsides are that it's a little difficult to setup and get the optimum results, plus again, you can't see any "taps" on screen.
Blackmagic Intensity Extreme - Link - A lot of people are waiting on this as it's one of the first low cost ($299) video capture boxes with native Thunderbolt support. I think it will fall into the same category as the Matrox as it will allow for standard video format capture but not native 1024x768 capture. Regardless, I've just ordered one and I'll let you know how it works out.
Visual Feedback
As I've mentioned before, one of the main issues of using a dedicated video capture device, is the inability to record "taps" or in fact, any gestures on screen. When screencasting on the Mac, we have our mouse cursor to guide the viewers eyes around the screen. So useful is this, that I actually increase the visibility of the mouse pointer using an app called PinPoint.
However, on a non jailbroken iPad, this just isn't possible, and the viewer has no visual feedback on what is tapped. There may be a slight glow from controls sometimes, but mostly nothing. In these cases, I have to manually animate the on screen gestures using a combination of overlays and graphics - very labour intensive.
Apple really need to enable a setting to allow iOS to display any taps on screen. Not just for us screencasters, but surely this would be useful for any live presentations or demos. It does need to be done by Apple as it needs to be a system wide setting, for all applications.
In the meantime, if I could send out a request to App developers to include the ability to switch on a "Show Taps" setting if the iOS device detects that an external device is in use.
Major props to Smile Software for being the first developers I know to do this, in their new PDFPen app for the iPad. When an external device is connected, a new option appears in settings "Show Touches".
Switch on, and all your touches appear on screen. Great for live presentations on large screens, and for us screencasters.
So if Apple could take note and all you developers could add "Show Touches" in your apps until Apple get with the program.
Kudos to Phillip at Smile!

Reader Comments (8)
Hi Don, I too am seeking the 'holy grail' that is a native Screencasting solution for the iPad.
I don't mind mentioning that it's so that I can create an iPad native app to compliment my Kupima (http://kupima.com) remote user testing service. I think that the upsurge in tablet usage (particularly iPad) is going to lead to a greater interest in user testing on mobile and tablet devices, which would make it a worthwhile product to develop.
AirPlay Mirroring to the Mac would be great.
Don, it is a good idea for developers to add their own functionality for showing touch events. I tried to search for an open source framework to do this but didn't find one. I'll work on adding this functionality to my upcoming app and if I can keep the code clean, I will aim to post it on github so that other developers can use / improve it.
If you are a developer and interested in working with me on this. Please contact me.
If you're considering Reflections you might also want to consider AirServer (http://www.airserverapp.com/). Not as polished as Reflections - for example, you don't get the simulated devices as borders - but it seems more reliable in my experience.
Thanks for the post. I did a similar blog posting recently, although mine was more focused on getting a live iPad's display mirrored to a remote audience. I didn't find all of the hardware options you had, so I appreciate the information.
I did find an interested software package called iTools. The blog posting has more info. Using a camera is another option.
Randy, thanks for the iTools. Useful software.
Since Snow Leopard QuickTime Player has Screen Recording capabilities so its a free options for creating a screencast which supports microphones.
It can be found in QuickTime Player's File menu.
Has anyone found a way to display touches when the iPhone screen is tapped? Thanks in Advance!