1. Universal Smartphone ProfileThis is a great starting profile for wide compatibility with modern smartphones. Plays on just about everything, though it doesn't take advantage of the higher resolutions and codec complexity possible on the newest crop of devices.
Plays on:iOS: iPhone, iPad, Apple TV, iPod Touch, iPod Classic, iPod 5.5G Blackberry: Bold 9000, Curve 8910, 8900, 8520, Pearl 9XXX, Storm, Storm 2, Torch, Tour, Bold 9650 + 9700 Android: All (?) Other: PSP (3.30+), PS3, Xbox 360, web
Doesn't play on:iPod 5G, PSP (pre-3.30), Blackberry Curve 9330, 9300, 8530, 83XX, Pearl 8XXX, 88XX
Settings:Defaults, plus: audio_bitrate: 128 (or less) audio_sample_rate: 44100 (or less) size: 480x320 max_frame_rate: 30 video_bitrate: 1500 (or less)
1b. Universal Smartphone Profile B: higher resolutionThis profile plays better on iPhone 4g, iPad, Apple TV, new iPod Touch, Droid, PS3, and Xbox, by increasing the video resolution. The extra pixels are wasted on older iPhones though, and make for a video that won't play on Blackberry and some Android phones.
Plays on:Everything above, minus Blackberry and maybe weaker Android devices
Settings:Universal Smartphone Profile (above), plus: size: 640x480
2. Advanced Smartphone ProfileNewer iOS devices allow higher resolutions and higher encoding complexity (which means better compression). In particular, iPad and Apple TV users shouldn't have to watch 480x320 video on their beautiful screens, so it makes sense to provide a higher quality version if you want to provide a good experience to these users.
Plays on:iOS: iPhone 4G, iPad, Apple TV*, newer iPod Touch Android: Nexus One, Droid, maybe others. (YMMV on these, though. Some users report trouble with 720p video.) Other: PS3, web
Doesn't play on:iOS: iPod 5G/5.5G/Classic, iPhone 3GS and before, older iPod Touch PSP, old Apple TV* Blackberry: all Android: others Other: PSP, PS3, Xbox 360, web
Settings:Defaults, plus: h264_profile: main h264_level: 3.1 audio_bitrate: 160 (or less) audio_sample_rate: 48000 size: 1280x720 (max) or 960x640 (iPhone 4 native) max_frame_rate: 30 video_bitrate: 5000 (or less)
*2b. Advanced Smartphone Profile B: with old Apple TV compatibilityTo support older Apple TV devices, use the Advanced Smartphone Profile setting, plus one of the following:
Settings:Advanced Smartphone Profile (above), plus either one of the following: size: 960x540 OR max_frame_rate: 24
3. Legacy Smartphone ProfileThis profile plays on the last major set of H.264-based mobile devices: notably, older iPods and some Blackberries. The tradeoff is significantly smaller video: 320x240, at no more than 768kbps.
Plays on:Everything above, plus: iPod 5G, PSP (pre 3.30), Blackberry Curve 9330, 9300, 8530, 83XX, Pearl 8XXX, 88XX
Settings:Defaults, plus: audio_bitrate: 128 (or less) audio_sample_rate: 44100 (or less) size: 320x240 max_frame_rate: 30 video_bitrate: 768 (or less) h264_level: 1.3
4. Legacy 3GP Profile A and BFinally, a 3GP profile or two will extend support to many remaining mobile devices. Notably, you can use these on most of the same devices supported above under the Legacy Smartphone Profile. So if you're encoding a 3GP video at 320x240, you might not need to encode another H.264 video at 320x240. Note that 3GP video support is still in beta at Zencoder. Finally, note that these videos will look terrible, but that's the cost of supporting 3GP phones.
Plays on:Hard to say. There are thousands of types of 3GP devices, and each one is a little different. Consider these a starting point.
Profile Aformat: 3gp video_codec: mpeg4 size: 320x240 aspect_mode: pad frame_rate: 15 upscale: true video_bitrate: 192 bitrate_cap: 192 audio_bitrate: 24 audio_channels: 1 audio_sample_rate: 16000
Profile Bformat: 3gp video_codec: mpeg4 size: 176x144 aspect_mode: pad frame_rate: 5 upscale: true video_bitrate: 52 bitrate_cap: 58 buffer_size: 16 audio_bitrate: 16 audio_channels: 1 audio_sample_rate: 16000
SummaryIf you want to create mobile video, start with the Universal Smartphone Profile. For better quality, supplement this with Advanced Smartphone Profile video. For wider compatibility, add a Legacy profile or two using either MP4 or 3GP. That's it. It only takes 1-3 profiles to support most mobile devices.
EditsOlder iPhone/iPod devices ask for the "H.264 Baseline Low Complexity" profile. "Low Complexity" isn't actually a H.264 standard - it actually just means "only 1 reference frame". The jury is out on how much Apple devices really enforce this, but for true compatibility, you should probably use Baseline profile and limit reference frames to 1. You can do this at Zencoder with the new
h264_reference_framessetting. November 23: A few people have asked about Palm Pre video. The published specs for Palm Pre are very similar to other smartphones: 480x320 native resolution (with 640x480 supported); H.264, H.263, or MPEG-4 video; MP3 and AAC audio (along with a few other codecs). If these specs are accurate and comprehensive, then the Universal and the Legacy profiles above should work on Palm Pre. I don't have easy access to a Pre, so if anyone wants to test this for us, we'd be happy to give you some free encoding at Zencoder to use for testing. Get in touch if you want to help out. January 24: In order to deliver 3GP video as an RTMP stream it needs to be "hinted". Add
"hint": 1to your API request to enable it.