Find Apple iOS device supported profile and level information

If you're having trouble playing a Wowza Streaming Engine™ media server software stream on an iOS device, check that your stream is being encoded to H.264 video and AAC/MP3 stereo audio and a profile and level supported by your device. With older devices, 44100 Hz and 128 kbps works well for playing back MP3 files. Check technical specifications for broader range of support for newer devices.

Profile and level support information can be found in Apple's technical specifications for each device.

  • iPhone 3GS and older devices support Baseline Profile level 3.0 and lower
  • iPhone 4S supports High Profile level 4.1 and lower
  • iPhone 5C supports High Profile level 4.1 and lower
  • iPhone 5S supports High Profile level 4.1 and lower
  • iPad 1 supports Main Profile level 3.1 and lower
  • iPad 2 supports Main Profile level 3.1 and lower
  • iPad with Retina display supports High Profile level 4.1 and lower
  • iPad mini supports High Profile level 4.2 and lower

For testing purposes, encode to Baseline Profile level 3.0, the lowest common denominator, for testing playback of a single stream to all iOS devices.

For adaptive bitrate streaming to Apple iOS devices, you can use a Synchronized Multimedia Integration Language (SMIL) file to provide the best possible viewing experience given the user's device and bandwidth. The player selects which is the best stream suited to play based on the stream's metadata.

For example, say you have three live streams encoded at different bitrate/profile levels: myStream_baseline.stream (Baseline Profile level 3.0, 200 kbps total bitrate) targeted for iPhone 3GS playback; myStream_main.stream (Main Profile level 3.1, 200 kbps) targeted for iPad 1, original iPad 2, and iPhone 4S playback; and myStream_high.stream (High Profile level 4.1 at 300 kbps) targeted for newer iPad playback. Using a text editor, create a SMIL file in the [install-dir]/content folder with the name myStream.smil with the following content:

<smil>
<head></head>
    <body>
        <switch>
            <video src="myStream_baseline.stream" system-bitrate="200000"/>
            <video src="myStream_main.stream" system-bitrate="200000"/>
            <video src="myStream_high.stream" system-bitrate="300000"/>
        </switch>
    </body>
</smil>

You can see that there is a <video> entry in the <switch> container for each rendition of the stream. The system-bitrate value is set to the total bitrate in bits-per-second for that stream.

To play using an Apple iOS device (Cupertino/Apple HTTP Live Streaming), enter the URL

http://[wowza-ip-address]:1935/[application-name]/smil:myStream.smil/playlist.m3u8

into Safari on the device.

For adaptive bitrate streams, your encoder must generate multiple, keyframe-aligned bitrate renditions. Wowza Streaming Engine Transcoder can ingest a single high-bitrate live stream and create multiple lower bitrate renditions on the fly that are properly keyframe aligned.

Log files give feedback about the current stream and profile level that may cause playback issues. The following warning message indicates that there will be a playback problem if attempting to play on an iPhone 3 or older device because the video is encoded as Main Profile level 3.1 and iPhone 3 and older devices support Baseline Profile level 3.0 and lower.

(Video may not be playable on older iPhone and iPod touch devices where Main/Level 3.1 or lower is required) Video info: : {MediaCodecInfoVideo: codec:H264, profile:Baseline, level:4.1, frameSize:320x240, displaySize:320x240, frameRate:25.000000}