Why is my HLS stream not playing back?
This is a great question! There are some common reasons why the playback fails. Below we have outlined some steps to address this issue for you.
Tip #1: Check your HLS (Cupertino) Settings that control the streaming packetizer.
- All chunks must start on a keyframe, so use a keyframe interval that's a factor of the cupertinoChunkDurationTarget setting.
- If cupertinoChunkDurationTarget is 10 seconds, use a keyframe interval of either 1, 2, 2.5, 5, or 10.
- Wowza Streaming Engine can't create chunks that are smaller than the encoder's GOP size.
- While you can reduce the latency of Apple HLS streams by using smaller chunk sizes, this may result in playback errors if Wowza Streaming Engine uses the default behavior of returning three chunks at a time to the player. To fix this, you will need to configure Wowza Streaming Engine to store and return more chunks to the player.
- Within an origin/edge configuration, the origin and edge servers must use the same value for cupertinoChunkDurationTarget
- Review Wowza's recommended settings for all the Cupertino properties here.
Tip #2: Optimize your encoder settings for HLS playback on mobile devices.
- For mobile streaming, it's best to encode streams using a medium bitrate and low encoding complexity (baseline).
- A total bitrate of between 1000Kbps and 2500Kbps is best depending on the frame size.
- Most mobile devices support H.264 Baseline profile.
Tip #3: Is your HLS playback URL in the correct format?
- A default HLS playlist URL for a Wowza Streaming Engine stream has the format below:
- [address] is the IP address or domain and port for Wowza Streaming Engine (default port 1935)
- [application] is the application name
- [application-instance] is the name of the application instance (if omitted, defaults to _definst_)
- [stream-name] is the stream name
Example: The playlist URL for an HLS live stream myStream from Wowza Streaming Engine at the address mycompany.com using the live application is: