Wowza Community

AES-128 and Apple low latency

Hi

I have created a low latency HLS stream using this guide:

https://www.wowza.com/docs/deliver-apple-low-latency-hls-live-streams-using-wowza-streaming-engine

It is working on a custom IOS app with low latencies of 2/3 seconds. Great!

It plays from the URL:

https://[hidden]/livelowprotected/demostream.stream/playlist_sfm4s.m3u8

BUT… I now want to encrypt the stream and have tried using this guide:

https://www.wowza.com/docs/how-to-secure-apple-http-live-streaming-aes-128-external-method

I have created my key file:

/keys/demostream.stream.key

And restarted my application

When i connect the IOS app to the stream… the video plays as before… its not encrypted.

And I notice no requests are made to my HTTP server that delivers my key.

I try to follow this guide to test:

https://www.wowza.com/docs/how-to-test-aes-encryption-for-apple-hls-streams

The first playlist (playlist_sfm4s.m3u8) is like this:

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-STREAM-INF:BANDWIDTH=5542016,CODECS=“avc1.640020”,RESOLUTION=1280x720

chunklist_w849147949_vo_sfm4s.m3u8

Then the chunklist (chunklist_w849147949_vo_sfm4s.m3u8)

is like this:

#EXTM3U

#EXT-X-VERSION:6

#EXT-X-SERVER-CONTROL:CAN-BLOCK-RELOAD=YES,PART-HOLD-BACK=0.90000004,CAN-SKIP-UNTIL=6.0

#EXT-X-INDEPENDENT-SEGMENTS

#EXT-X-TARGETDURATION:1

#EXT-X-MEDIA-SEQUENCE:804667

#EXT-X-PART-INF:PART-TARGET=0.3

#EXT-X-MAP:URI=“header_w849147949_vo_sfm4s_m3u8.cmfv”

#EXT-X-PROGRAM-DATE-TIME:2020-06-03T13:50:40.586+00:00

#EXTINF:0.5,

media_w849147949_vo_sfm4s_804667_m3u8.cmfv

#EXT-X-PROGRAM-DATE-TIME:2020-06-03T13:50:41.127+00:00

#EXT-X-PART:DURATION=0.3,URI=“media_w849147949_vo_sfm4s_804668.0_m3u8.cmfv”,INDEPENDENT=YES

#EXT-X-PART:DURATION=0.2,URI=“media_w849147949_vo_sfm4s_804668.1_m3u8.cmfv”

#EXTINF:0.5,

media_w849147949_vo_sfm4s_804668_m3u8.cmfv

#EXT-X-PROGRAM-DATE-TIME:2020-06-03T13:50:41.576+00:00

#EXT-X-PART:DURATION=0.3,URI=“media_w849147949_vo_sfm4s_804669.0_m3u8.cmfv”,INDEPENDENT=YES

#EXT-X-PART:DURATION=0.2,URI=“media_w849147949_vo_sfm4s_804669.1_m3u8.cmfv”

#EXTINF:0.5,

media_w849147949_vo_sfm4s_804669_m3u8.cmfv

#EXT-X-PART:DURATION=0.3,URI=“media_w849147949_vo_sfm4s_804670.0_m3u8.cmfv”,INDEPENDENT=YES

And when I try to download one of the CMAF files (media_w849147949_vo_sfm4s_804670.0_m3u8.cmfv) I get a 500 error

ie in the access logs:

Http2Connection[Socket:/86.40.243.176:49234]: GO_AWAY Frame received. Error code: 1:PROTOCOL_ERROR, DebugInfo: Failed ping.]. Time: 1591195953900

x-ctx: 2128919283,x-vhost: defaultVHost,x-app: livelowprotected,x-appinst:definst,x-duration: 3547.164,s-ip: hidden,s-port: 443,**s-uri:**http://hidden:443/livelowprotected/demostream.stream/playlist.m3u8,c-ip: 86.40.243.176,c-proto: http (cupertino),c-user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36,c-client-id: 2128919283,cs-bytes: 0,sc-bytes: 2316,x-spos: 0,x-sname: demostream.stream,**x-suri:**http://hidden:443/livelowprotected/demostream.stream/playlist.m3u8,**x-suri-stem:**http://hidden:443/livelowprotected/demostream.stream/playlist.m3u8,**cs-uri-stem:**http://hidden:443/livelowprotected/demostream.stream/playlist.m3u8

Can anyone shed any light on this?

Is it possible to encrypt the low latency stream?

Do I have to recompile wowza to start the encryption process or does just putting a keyfile in the keys directory suffice?

Thanks!

James

Some feedback from our engineering team.

We don’t support DRM on LL-HLS yet.

The CMAF packetizer does support DRM because it already does for DASH, but we have not implemented the required support in the HLS playlist generation to report the encryption info.