App Previews aka “PurpleVideo” aka App Trailers finally arrived on the iOS 8 App Store. While Google Play simply leverages YouTube’s infrastructure for uploading and delivering video, Apple uses their own HTTP Live architecture.
You upload video files according to spec to iTunes Connect. Uploads were quite erratic in the first few days, and the error message simply said “error”, but some digging through the requests revealed the verbose error message, which was complaining about the incorrect frame rate. QuickTime will capture at 60fps from a connected iOS device under Yosemite, but you’ll have to deliver a 30fps movie to the App Store. iTunes Connect accepts ProRes and H264 files, and uses an unknown encoder to transcode the files. The mp4 files self-identify as “Core Media Video”, so a farm of Mac minis could be behind all this.
After app review and another couple of hours of caching weirdness, the video will appear on the store.
The following are the numbers for a 4″ video at 640x1136px:
Your video will be split up into 2 audio-only versions (64 and 128kbit, both stereo), 6 iframe-only “trick play” videos for faster scrubbing and 7 full video versions (306×542-hi, 306×542-med, 306×542-lo, 360×638, 414×734, 486×862, 640×1136).
The mp4 media files are not split up into chunks, but the m3u8 playlists contain the byte offsets into the mp4 files, so splitting can be achieved by the client requesting the appropriate byte range for a chunk and the CDN serving that chunk.
The playlist entries are all labeled with “en”, which is incorrect for my app, as its default language is German, but may hint at the future possibility of localising App Previews just like screenshots. Also, splitting out audio-only localisations is possible with this setup by simply exchanging the audio track.
The ordering of the video versions (small to large) ensures a quick start time until the first frame is displayed, but also means that a lot of app previews will start off quite blurry at 306×542 and only later increase resolution.
The lower res audio comes bundled with the lower size videos, so there might be an audible difference in audio quality during playback. In past iOS versions there were issues with audio sync when switching audio qualities, I don’t know if these have been resolved in the last couple of versions.
For a 30 second preview, file sizes range from 244kB to 500kB for the audio and 1,2MB to 8MB for the video. Actual bandwidth consumed while watching these may vary widely because the playback framework will probe several versions while trying to figure out which one to play. Media is hosted on apptrailers.itunes.apple.com, which resolves to *.footprint.net, which has pointers to Level 3 or possibly Apple’s own new CDN?
I don’t know if the iTunes version for Windows also contains support for HTTP Live playback (maybe for iTunes Festival etc.?), otherwise they could fall back to just getting one static mp4 file for iTunes on Windows. But so far, I haven’t seen any App Previews on iTunes or the iTunes Preview on the web at all.
If you’re on iOS 8, you can see the preview for “Bits und so” here.