Unfortunately, Apple has never let screen recording applications into the AppStore. This is diametrically opposed to the situation on most other computing platforms, both mobile and desktop. Just some examples: Microsoft has never had any objection to mirroring Windows Mobile phone / PDA screens on a desktop computer. While far from being able to deliver full speed, the best WinMo controllers [in this regard, Pocket Controller and VirtualCE; please see THIS for more info on video recording capabilities] are still able to record videos of almost anything(!) running on the handset. Android also has screen recording support with both desktop-based recording (see e.g. THIS and THIS) and, if you do root your device, the free(!) ShootMe. The latter, however, was very slow; therefore, THESE XDA-Devs folks have “hacked” it to be much faster (direct download link; note that haven't tested the app myself).
iPad2 HDMI screen mirror recording
On the mobile Apple platforms, unless you do jailbreak your iDevice, all you can officially do is getting an iPad 2, the HDMI output cable. Note that this will only work with the newly, with the iPad 2 released HDMI converter, not the plain old composite / component (working with all past models) or VGA (working with iPad 1+ and iPhone 4+) cables! These don't do any mirroring and only very few apps support these VGA outputs, let alone the older analogue output cables (composite / component), which is only supported by the built-in video player.
And, then, I haven't even mentioned the problem of recording the HDMI signal, which requires either an expensive mobile recorder (e.g., Atomos Ninja costing $1000) mostly used by the pro movie folks or a desktop PC. (Argh!) There's only one “cheap” (around $200) non-PCI Express card-based recorder (PCI Express cards can't be connected to MacBooks – I don't know of any USB2 or ExpressCard/34 converters which would let for using it -not that the speed of USB2 or even regular notebook hard disks would be sufficient for full HDMI, uncompressed recording...), but it's USB3 only, which is not and will never be supported by Apple's desktop / laptop computers (and doesn't work with most existing PC hardware either – see the comments HERE). And even if HDMI recording works / worked (again: it's pretty complicated to record uncopressed HDMI signal because of the huuuuge bandwidth needs), you rarely need 1080p (1920*1080) resolution, particularly not when recording the output of legacy or, at most, XGA-resolution (1024*768) apps. That is, you would still need to scale the recording when compressing the recording. And the need for a hardware cable (until iOS5's AirPlay is out) is just the icing on the cake...
Mirroring the screen on jailbroken iDevices and recording the mirrored signal
Not so with jailbroken iDevices. At least for iOS versions prior to iOS5 (it's still not known whether these hacks will work for iOS5 as well; hopefully they will), there's an excellent application in Cydia “DisplayOut” by Ryan Petrich, who is also the author of DisplayRecorder, which will be introduced below.
DisplayOut is a commercial application but it doesn't cost much ($3). Unfortunately, there's no trial version. It lets for mirroring the iPhone / iPod touch 4 and both iPads (that is, the devices that have already been compatible with the VGA output cable by Apple) on all kinds of cables: HDMI, VGA, component and composite. Unfortunately, it can't do wonders and only lets for using the last two (component and composite), rather low-quality output on all (except the first) previous-generation devices.
We've already seen (some) dedicated HDMI recorders. For composite video recording, even the lousiest and cheapest TV tuner or digitizer card / USB stick will do (with a composite input, of course). Just some examples of the many: EasyCap USB Video Capture Adapter for $8.60 or, if you need Mac / PAL60 / NTSC 433 support, EasyCAP USB 2.0 Audio/Video Capture/Surveillance Dongle with Mac OS Support for $20. (Note that I tend to provide DealExtreme links. American readers may find better / faster-to-deliver local ones; for us non-Americans, though, probably this is the online shop we should take a look at first as it's, for most of its stuff, cheap and international shipping is free / registered post only costs $1.70.) Both support S-Video (which is better than composite) – too bad there's no native S-Video output solutions for iDevices.
Component recording is a bit more complicated but, fortunately, hardware isn't particularly expensive either. For example, the Hauppauge 1212 HD-PVR High Definition Personal Video Recorder (original, non-Amazon product page HERE) only costs $200 at Amazon and is able to even record hi-res video even over component input. (Some PC cards cost even less.) That is, if you don't have the money for a VGA / HDMI recorder but want to record video of acceptable (e.g., YouTube) quality, getting this and an RGB output cable may be the most cost-effective solution. (Note that, not having one, I can't really comment on the recording quality of this particular item and haven't found any info on whether high-res output is supported over the component cable on a jailbroken machine with DisplayOut. Without DisplayOut, only low-res videos are played back through it, of course.)
With VGA recording (just like with HDMI), we've arrived at an entirely different price category. For example, Epiphan's DVI2USB Solo (recording DVI and HDMI) costs $700. HERE is a dedicated (albeit a bit outdated) article worth checking out for more info and the basics of VGA recording. Also note that it's still not known whether the iPad 3 (or the rumoured iPad 2 HD, for that matter), if it indeed receives a double-resolution screen, will also mirror it with full resolution (most probably, it will). That is, if you purchase, for example, a cheap(er) card with SXGA (1280 x 1024) or even WUXGA (1920*1200) resolution “only”, it may prove to be sufficient to make a decent recording of the QXGA resolution or the new model.
Using non-Apple output cables
Also note that, should you want to use cheap ($2-$3 over at DealExtreme and a lot of eBay sellers) knock-offs instead of Apple's certified cables, you might want to need Resupported4 from Cydia. It, fortunately, has a trial version. (Dedicated thread HERE)
Recording in the emulator
If all you want to do is recording the screen output of an application you develop (or you have its sources), you can just use your iDevice emulator under OS X to do the recording. The emulator is pretty quick even on C2D desktops (for example, it plays my example counter at a steady 60 fps on my late 2009 C2D 2.8 GHz 17” MBP with a WUXGA (1920*1200) screen, 8GB RAM and an 1 TB 5400 rpm hard disk running OS X 10.5.8).
Recording at such a high speed (or even 30 fps), however, can prove a little tricky. For example, ScreenFlow (one of the best, albeit pretty expensive [$99] video recorders) only records at around 30 fps on the above configuration. (I measured.) It can't be made to only record part of screen for a possible speedup (this is also explained HERE: “You don't need to pick an area of the screen for capture, ScreenFlow has advanced algorithms that only encode areas of change on your screen.”) The pretty cheap (currently, $25 only) Screenflick turned out to be slightly better (around 44 fps) when recording a HVGA area (a non-Retina iPhone screen), but it's still not 60 fps. Recording an XGA area (iPad resolution) has resulted in a slight speed drop (to around 42 fps). Entirely disabling audio recording helped a bit, but not much (45 fps vs. 42 fps). Neither did help switching to the dedicated VGA card (in my case, the 9600 GT) from the 9400m with either title.
Nevertheless, recording in the emulator is still better than using DisplayRecorder (and way cheaper than purchasing a HD component / VGA / HDMI hardware recorder), which delivers even worse results. (See below.)
Recording on the device itself
If none of the above (recording in an emulator OR a separate hardware video recorder) applies to you, your only choice is recording on your iDevice itself. Currently, the only way of recording a video of your iOS device screen is
1.) jailbreaking the device, which can be done with all current, pre-iOS5 devices supporting OpenGL ES 2.0, except for the iPad2, unless it still has the original, 4.3 version of iOS. (Few do.) It's the only iOS version for the iPad 2 that is jailbreakable.
The need for OpenGL ES 2.0 support means you can't even install the app on a first- or second-generation iPhone or iPod Touch. (Note: the 8GB version of third-generation iPT's is, physically, also a second-generation iPT and, consequently, doesn't support OpenGL ES 2.0.)
2.) purchasing DisplayRecorder from Cydia Store. It's $5 and, in my opinion, more than worth the price. There's no trial version but, at the price tag, I don't think you'll find it useless. Unless, of course, you want to make 60 fps videos, which it's not capable of.
Of course, you can always record what's going on, as has already been pointed out, with an external camera. It, however, will never be able to deliver the same quality, clarity etc. as a direct screen recording. The quality difference will be at least as high as taking a screenshot with a camera or directly. Even with prosumer video + support equipment (like that of mine) + a lot of knowledge on shooting videos (e.g., to avoid focus-related problems). DisplayRecorder even shows the touch points on the video, which means using an external camera won't be needed to show them either.
How it works?
By default, you need to press the Power button for about 3 seconds. (This can be full reconfigured in the system-level Settings.) Then, it DisplayRecorder prompts for your input on whether recording should be started.
It'll record until you press-and-hold the Power button again. Then, another dialog will be displayed, informing you of the end of the recording.
Before all this, you may also want to alter the default settings. (This is quite important if you aren't recording, say, a game and, therefore, the much better H.264 mode may work better for you.) They're under Settings. There, you can set the orientation, the possible scaling (only if you don't tick in OpenGL recording, you can only record every other pixel, resulting in a half-sized recording), the recorded frames per second, the recording quality and the like. The settings, however, only have any affect on non-H.264 videos.
There are vast differences between the orientation setting in the system-level Settings if you use the default (and, with many apps, only usable) M-JPEG mode, particularly on slower (read: pre-A5 / iPad 2) models. As a rule of thumb,
- if you're on an iPad 1, you will ALWAYS want to avoid leaving recording in Portrait setting. ALWAYS. Why? It's WAY, orders of magnitude worse than recording in any of the two Landscape settings. (In my tests, both fared equally good. The developer suggests Right landscape is better, though.)
Don't you believe me? Well, check out the following three videos, and compare the counter speed in the first video to those of the two other videos:
http://www.youtube.com/watch?v=7KvF3PMhbC0 (Landscape Right)
http://www.youtube.com/watch?v=jF_PcsuN13g (Landscape Left)
See the difference? Quite big, isn't it? Note that, as with all(!) the settings, this has only effect on the MJPEG recording (but not on the vastly superior H.264 one).
Note that, with the iPad 2, things have changed a bit. Take a look at the following videos:
http://www.youtube.com/watch?v=9JxxN_PfPO4 (Landscape Right)
http://www.youtube.com/watch?v=sakYKyT7xh4 (Landscape Left)
To save you from having to check out the results yourself, frame-by-frame, I've done the chore of listing the recorded frames in M-JPEG mode. They're as follows:
Portrait: heavy frame doubling (albeit not as much as in Landscape or Upside Down [UD]): 1-4-6-6-11-14-14-18-21-21-25-28-31-31-35-38-38-42-44-47-47-52-55-55-59-62-66-69-73-75-78-78-83
Landscape Left [LL]: almost every second frame is doubled: 2-4-4-9-9-14-14-19-21-26-26-31-31-36-38-38-43-43-48-48-53-55-55-60-60-65-65-70-70-75
Landscape Right [LR] considerably worse than Portrait and equally bad as LL: 2-2-7-7-12-14-14-19-21-21-26-26-31-33-33-38-41-41-46-48-48-53-53-58-60-60-65-65-70
For comparison, the (recommended) H.264 mode records at 24 fps and the test result frame grab is 0-3-5-8-10-13-15-18-20-22-25-27-30-32-34-37-39-42-44-47-49-52-54-57-59-61-64-66-69-71-74-76-78-81-83-86-88-91-93-96-98-101-103-105-108-110-113-115-117-120. The benchmark video is HERE, taken with DR version 1.2.1; an 1.2.2 (which has just [07/19] been released) benchmark is HERE. Interestingly, the latter is clearly worse (recorded less individual, original frames) than the one shot with 1.2.1. I've already asked the developer (Twitter HERE) about this as he's stated just the opposite in the “what's new” section of 1.2.2; hope he answers soon.
You can test this yourself using the counter app I've originally made available in my dedicated article [backup version HERE]. Note that that article only has an iPad-specific version of the counter. I've created an iPhone-specific one; it's available HERE as an Xcode project.
On the iPhone / iPod Touch (tested this on the iPhone 4 4.3.3 and the iPhone 3GS 4.2.1), there's some difference in favour of Portrait mode (particularly on the higher-resolution, 4th generation devices; on previous-generation, low-resolution phones / iPod Touches the difference seems to be negligible), but the difference isn't as high as on the iPad. Example videos:
http://www.youtube.com/watch?v=RHOpcC54oso (iPhone 3GS landscape 1, as with the iPad, full, high quality, 24 fps M-JPEG recording, without OpenGL and locking)
http://www.youtube.com/watch?v=PhOvCz1Gbac (iPhone 3GS landscape 2)
http://www.youtube.com/watch?v=X7XPPEq8TXw (iPhone 3GS Portrait)
http://www.youtube.com/watch?v=uISVCh7sX7Y (iPhone 4 Landscape 1)
http://www.youtube.com/watch?v=eBdNpapdpbQ (iPhone 4 Landscape 2)
http://www.youtube.com/watch?v=uuP7uyuCgYY (iPhone 4 Portrait)
http://www.youtube.com/watch?v=X9J9O0B6IXA (iPhone 4 H.264 – LS 1)
http://www.youtube.com/watch?v=-Isk4XPHdpU (iPhone 4 H.264 – LS 2)
I've already told you to prefer one and only one recording mode on a given model. (iPad 1: LR; iPad 2 and all iPhone / iPod touch models: Portrait). This also means you'll end up having to rotate your videos before uploading unless you make your app compatible with at least the three main rotation directions (which is, incidentally, pretty much the norm with non-games apps at least on the iPad).
With M-JPEG recording, fortunately, rotating results in little (if any) quality loss as M-JPEG uses no inter-frame compression, only intra-frame. You can use both the built-in Windows Movie Maker / Windows Live Movie Maker (on Windows XP / 7, respectively) and the pretty inepxepsnive iMovie on the Mac. (Please see THIS for a tutorial on all these apps) If on the Mac and would prefer QuickTime 7 Pro, you'll want to read THIS. There's also the free BitPlayer (I haven't tested it in this regard, though) – dedicated tutorial HERE. An additional Mac-specific thread HERE.
Converting the stream to be 30 fps
In earlier DR versions (up to 1.2.1), when you uploaded the videos you capture to YouTube, you would notice they become shorter requiring less time to play back. That's because the videos are captured and stored at 24 fps, while YouTube handles them as if they were 30 fps.
Fortunately, this problem no longer exists with the latest, 1.2.2 version, which means you don't need to convert the 24 fps file to 30 fps before a YouTube upload.
DisplayRecorder doesn't support audio recording at all (nevertheless, the developer is actively working on adding audio recorded from the mike). That is, you'll need to record audio separately.
You can use an external audio recorder plugged into the 3.5mm jack output of the iDevice. In order to hear what's happening (e.g., you want to record a FaceTime conversation – which can be done in high-quality, fast H.264 mode magnificently!), you'll need to use a recorder with monitoring capabilities. Almost all recorders support this; e.g., Olympus' all digital dictaphones with a mike/line in input allow for listening to the stuff you're recording (at least) via the headphones output.
I've tested the Olympus DS-40 in this regard, which too has a stereo mike in. Unfortunately, it was barely usable, not even the inout amplifier set to the lowest possible level and also the volume of the iDevice. Even then there was a definite distortion because of the audio overdrive. This means you will barely want to use the mike input on most? all? dictaphones.
I've also tested a very old (late 2003-early 2004) mobile jukebox “mediaX”, which, in addition to a built-in mike, also sports a direct (stereo) line input jack. As the line in is far less sensitive (requires far higher voltage to be driven), it worked just fine. This means you'll also need to look for a personal audio recording device with dedicated line (and not microphone!) input to record audio in addition to video.
Note that it's still not the most ideal way of recording e.g. Skype or, even better (because of the h.264 compatibility), FaceTime, as you won't hear what you say, only the other party. In addition, with most external (consumer-grade) recorders, you can't mix the line in with the microphone; that is, you can't record both parties at the same time. And even this requires heavy cabling (one from the iDevice to the recorder; another one from it to your ears if, as is the case with most recorders, it can't monitor the incoming audio with its built-in speaker). Therefore, I don't think it's a good idea to try to screen record conversations like these; use e.g. ScreenFlow on OS X to record conversations like these (haven't played with how you need to achieve the same under Windows, sorry.). Just don't forget to check in both “Record Audio From: Built-in Microphone” and “Record Computer Audio” (also allow it to install its driver) so that both sources are recorded. Note that while ScreenFlow does record two independent audio tracks (one for recording you, the other for recording the other party), it'll mix them into one and you can't force it to store them as two individual, independent audio tracks in the output file (which, BTW, I've found the best to use 100%, that is, no rescaling. Make sure you also crop the full screen recording before exporting.). However, I've found the audio results pleasing and much-much better than just recording either only the mike (that is, mostly yourself, with the other party only via the speakers) or the other party (which is even worse as your voice will be hardly heard and it it will, only with some delay). (Tested this under Snow Leopard on a late 2009 17” MBP Pro.)
Size restrictions, DisplayRecorder tips and tricks
If you do record long sessions, depending on the format (H.264 requires far-far less storage than M-JPEG) and, if it's M-JPEG, quality, make sure you stop and restart from time to time. Versions of DisplayRecorder prior to 1.2.2 (I haven't tested the latest version in this regard) simply crash when they open a file list containing at least one file over the 2 Gbyte threshold. Nevertheless, the files still remain accessible under /Library/DisplayRecorder via, say, iPhone Explorer and remain playable on a desktop computer (tested with a 2.7GB one).
If you try to record on the iPad or the high-resolution (Retina / 4th generation) small-screen devices in M-JPEG mode, consider using scaling. It'll deliver truly 30 fps results as opposed to the much choppier high-resolution ones. Of course, it's mostly with games and the like that you will want to use scaling and not apps where readability of any text is important.
Should you want to convert your HUUUUGE video files before YouTube upload (or even storage), I recommend the free and excellent Handbrake the most. Just use its default „mp4” output settings (CBR 20 quality, no resizing – except for throwing away two scanlines -, no audio etc.). It'll convert even 20-minute M-JPEG HVGA videos in 2-3 minutes (tested on my C2D 2.8 GHz late 2009 MBP 17”) to a file at least an order smaller than the original. That is, it's really worth converting the files!
Should you need to cut your (too long) video file in half so that they can still be uploaded (YouTube has a 15-minute barrier), use (after converting to an MP4) avidemux2 (on the Mac). Load the file; make sure you „Copy” both video and (non-existing) audio. Drag the slider to the end of the clip (e.g., the end of the first half, should you want to export the first half). Save the first file; name accordingly. Then, click the „B” icon (8th icon, to the right of a red „A” icon); this will mark the end of selection. To save the second half of the video, don't move the slider, just click „A”, and, then, moving the slider to the right end, „B”. Save this half too. Do not pay any money for any commercial mp4 etc. cutter – the free(!) avidemux2 does this task (and a lot more) for free!