HLS video not playing

I’ve set up a basic live application and have DASH, HDS and RTMP streams working fine. However, I’m unable to get the HLS stream running on any device that I’ve tried on including Safari on my iPhone 6.

Here’s what I get from the logs:

2015-08-25

10:45:54 (UTC)

destroy

stream (200)

x-ctx: mpegts.stream,x-vhost: defaultVHost,x-app: live,x-appinst: definst,x-duration: 34.484,s-ip: [wowza-url],s-port: 1935,s-uri: http://[wowza-url]:1935/live/mpegts.stream/playlist.m3u8,c-ip: [client-ip],c-proto: http (cupertino),c-referrer: http://[wowza-url]:1935/live/mpegts.stream/playlist.m3u8,c-user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4,c-client-id: 1694321653,cs-bytes: 0,sc-bytes: 771,x-stream-id: 735,x-spos: 0,cs-stream-bytes: 0,sc-stream-bytes: 0,x-sname: mpegts.stream,x-suri: http://[wowza-url]:1935/live/mpegts.stream/playlist.m3u8,x-suri-stem: http://[wowza-url]:1935/live/mpegts.stream/playlist.m3u8,cs-uri-stem: http://[wowza-url]:1935/live/mpegts.stream/playlist.m3u8

2015-08-25

10:45:54 (UTC)

disconnect

cupertino (200)

x-ctx: 1694321653,x-vhost: defaultVHost,x-app: live,x-appinst: definst,x-duration: 22327.752,s-ip: [wowza-url],s-port: 1935,s-uri: http://[wowza-url]:1935/live/mpegts.stream/playlist.m3u8,c-ip: [client-ip],c-proto: http (cupertino),c-referrer: http://[wowza-url]:1935/live/mpegts.stream/playlist.m3u8,c-user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4,c-client-id: 1693321653,cs-bytes: 0,sc-bytes: 771,x-spos: 0,x-sname: mpegts.stream,x-suri: http://[wowza-url]:1935/live/mpegts.stream/playlist.m3u8,x-suri-stem: http://[wowza-url]:1935/live/mpegts.stream/playlist.m3u8,cs-uri-stem: http://[wowza-url]:1935/live/mpegts.stream/playlist.m3u8

So basically a series of destroys and disconnects every time I try to load the HLS URL.

Anyone know what might be going on?

Thanks,

Saswat

Hello there.

What codex are you using for audio/video? For HLS, should h.264 video and AAC audio. MP3 is also supported but should be 64 or 128kbs, 44100hz stereo.

You can also start Wowza in stand-alone mode [install-dir]/bin/startup.bat|startup.sh and view the server activity in the console. Do you see any errors?

Thank you,

Salvadore

Double check to make sure you have the downloaded and copied over the Wowza Module collection and copied over the /lib/wms-plugin-collection.jar from the package to the /lib folder in your Wowza Streaming Engine installation ([install-dir]/lib.

You can get the Module Collection here

Also, double check you have the server listener configured in the correct location of the server, and with no typos. Refer to this guide again:

How to schedule streaming with Wowza Streaming Engine (ServerListenerStreamPublisher)

As a side note, you might also want to consider this log message:

H.264 ([B]Video may not be playable on older iPhone and iPod touch devices[/B] where Main/Level 3.1 or lower is required) Video info: {H264CodecConfigInfo: codec:H264, profile:High, level:5.1, frameSize:1920x1080, displaySize:1920x1080, frameRate:24.0, PAR:1:1, crop: l:0 r:0 t:0 b:4}

Regards,

Salvadore

Great, glad to hear you got this working.

For the broadest range of device playback, you might want to consider offering Adaptive Bit rate Streaming. For ABR you have to have 2 or more, keyframe aligned renditions of the stream. The best way to produce these ABR renditions is to use the Wowza Transcoder.

The following guide shows how to set up the Wowza Transcoder for live streams and ABR:

How to set up and run Wowza Transcoder for live streaming

Regards,

Salvadore

You’re welcome, please let us know if you need any assistance in the future

Salvadore

I am indeed using H.264 and AAC. I ran as standalone and below are the only errors and warnings:

ERROR server comment - ServerUtils.loadServerListener: Error creating (com.wowza.wms.plugin.collection.serverlistener.ServerListenerStreamPublisher) : java.lang.ClassNotFoundException: com.wowza.wms.plugin.collection.serverlistener.ServerListenerStreamPublisher|at java.net.URLClassLoader$1.run(URLClassLoader.java:372)|at java.net.URLClassLoader$1.run(URLClassLoader.java:361)|at java.security.AccessController.doPrivileged(Native Method)|at java.net.URLClassLoader.findClass(URLClassLoader.java:360)|at java.lang.ClassLoader.loadClass(ClassLoader.java:424)|

WARN server comment - loadModFunctions[live/definst]: Module class not found or could not be loaded. Check [install-dir]/conf/live/Application.xml to be sure all Modules/Module/Class paths are correct: name:streamPublisher class:com.wowza.wms.plugin.collection.module.ModuleStreamPublisher

And the “Cupertino”-relevant output:

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/mpegts.stream]: chunkDurationTarget: 10000

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/mpegts.stream]: audioGroupCount: 3

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/mpegts.stream]: playlistChunkCount:3

INFO server comment - MediaStreamMap.getLiveStreamPacketizer[live/definst/mpegts.stream]: Create live stream packetizer: cupertinostreamingpacketizer:mpegts.stream

INFO server comment - CupertinoPacketHandler.startStream[live/definst/mpegts.stream]

INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/definst/mpegts.stream]: Video codec:H264 isCompatible:true

INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/definst/mpegts.stream]: Audio codec:AAC isCompatible:true

INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/definst/mpegts.stream][mp4a.40.2]: AAC Audio info: {AACFrame: codec:AAC, channels:2, frequency:48000, samplesPerFrame:1024, objectType:LC}

INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/definst/mpegts.stream][avc1.100.51]: H.264 (Video may not be playable on older iPhone and iPod touch devices where Main/Level 3.1 or lower is required) Video info: {H264CodecConfigInfo: codec:H264, profile:High, level:5.1, frameSize:1920x1080, displaySize:1920x1080, frameRate:24.0, PAR:1:1, crop: l:0 r:0 t:0 b:4}

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:1 mode:TS[H264,AAC] a/v/k:82/99/3 duration:5479

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:2 mode:TS[H264,AAC] a/v/k:150/231/7 duration:9625

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:3 mode:TS[H264,AAC] a/v/k:151/231/7 duration:9625

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:4 mode:TS[H264,AAC] a/v/k:171/264/8 duration:11000

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:5 mode:TS[H264,AAC] a/v/k:151/231/7 duration:9624

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:6 mode:TS[H264,AAC] a/v/k:150/231/7 duration:9625

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:7 mode:TS[H264,AAC] a/v/k:172/264/8 duration:11000

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:8 mode:TS[H264,AAC] a/v/k:150/231/7 duration:9625

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:9 mode:TS[H264,AAC] a/v/k:150/230/7 duration:9584

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:10 mode:TS[H264,AAC] a/v/k:151/231/7 duration:9625

INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/definst/mpegts.stream]: Add chunk: id:11 mode:TS[H264,AAC] a/v/k:171/264/8 duration:11000

Here’s what I get when trying to access an RTMP via the Test Player:

INFO session connect-pending [client-ip] -

INFO session connect [client-ip] -

INFO stream create - -

INFO stream play mpegts.stream -

INFO stream stop mpegts.stream -

INFO stream destroy mpegts.stream -

INFO session disconnect 261289252 -

And from accessing the HLS stream from Safari on my iPhone 6:

INFO cupertino connect 243208801 -

INFO stream create mpegts.stream -

INFO cupertino connect 1566070247 -

INFO stream create mpegts.stream -

INFO cupertino connect 1380173458 -

INFO stream create mpegts.stream -

INFO stream destroy mpegts.stream -

INFO cupertino disconnect 243208801 -

INFO stream destroy mpegts.stream -

INFO cupertino disconnect 1566070247 -

INFO stream destroy mpegts.stream -

INFO cupertino disconnect 1380173458 -

No other errors in the output. Anything that could be wrong in terms of properties on the server? I added the properties for scheduling streams. Anything in there that would be interfering with the HLS stream?

Thanks! The jar file did it!

I now have the HLS stream working on my Android device as well as VLC for mac, even though Safari on iPhone 6 still doesn’t work. Curious why since I am using the latest iOS device with the latest OS update. But at least HLS works!

Awesome! I’ll get started on playing around with the Transcoding. Thanks for the help!