I had been following this thread on enabling HD video recording on iPhone 3GS since some weeks now. It took some time to perfect, but now HD video of up to 1080×800 resolution can be recorded on the iPhone 3GS @ 30 frames per second. This is way better than the 640 x 480 official resolution provided by Apple. This is possible because the ARM Cortex processor in iPhone 3GS is capable of recording HD videos. Mike Pan has managed to bypass this limit and here’s how you can do it too via his blog:
- I am assuming your iOS device is running firmware 4.1, I have not tested this with older versions of iOS
- Jailbreak your 3G/3GS with limerain or greenpoison. Install OpenSSH via Cydia.
- SSH into your phone using the root account
- Open /System/Library/PrivateFrameworks/Celestial.framework/N88/AVCapture.plist with a Plist editor
- Under the AVCaptureMode_AudioVideoRecording key, set the width and height for the capturekey to 1080×800, respectively. This value controls the dimension of the video it is encoded at.
- Set the width and height for the preview key to 440×320. This value controls the size of the on-screen preview. It does not have any effect on the final video.
- Set the width and height for the sensor key to 1920×1080. This value controls the active region of the sensor, so basically, we want to use the entire sensor. This source will be automatically downscaled to the proper resolution at encoding time.
- Increase the encoding average bitrate to 20Mbps (20000000bps), this records a much larger video file (~ 2MB for every second of video)
- Increase the encoding bitrate cap to 40Mbps. Also, lower the minimum quantizer from 19 to 15 or something, just for the heck of it.
- Set the H264 profile from 3_0 to 3_1 (because wikipedia says so)
- Save and close this file.
- To make the phone playback the recorded HD video. Simply edit CameraRollValidator.plist and MediaValidator.plist, they can be found in the same place as AVCapture.plist. (If you don’t do this, the file can only be played back on your computer)
- Replace 768 with 1280
- And replace<key>MaxLevel</key> <integer>30</integer>
- Save these two files.
- Open /System/Library/CoreServices/SpringBoard.app/N88AP.plist with a Plist editor, and add the following under the capability node, this will enable HD recording from the camera app:
- If you are having a hard time figuring out where to make the changes, download the pre-edited file HDVideo3GS.zip Then simply copy the plist files to the correct location via SCP.
- Reboot your iDevice.
This is the video quality you’ll get:
There should be a simple installable tweak on Cydia soon to make this process much easier. Until then, this should do.
Beware though, a few bugs could still pop up with still shots here and there. Don’t say we didn’t warn you. Don’t try this if you don’t want to put anything to risk.