M3U8 + AES Encryption Key

I’m trying to play an m3u8 file that is encrypted. The m3u8 has an AES key file that is used to decrypt the stream.

How would I go about applying that AES key file into the following code in order to have the file decrypted for Roku to play it? NOTE: This code was initially created for an m3u8 file that was not encrypted. I basically need to understand what line(s) to add in order for the decryption to take place.

Sub RunUserInterface()
    screenFacade = CreateObject("roPosterScreen")
    screenFacade.show()
    
    port = CreateObject("roMessagePort")
    videoScreen = CreateObject("roVideoScreen")
    videoScreen.setMessagePort(port)
    videoScreen.SetPositionNotificationPeriod(10)
    
    videoclip = {}
    videoclip.StreamUrls = ["URL.m3u8"]
    videoclip.StreamFormat = "hls"
    videoclip.ContentType = "movie"
    videoclip.title = "MOVIE"
    videoclip.StreamBitrates = [0]
    videoclip.playstart = 0
    videoclip.StreamQualities = ["SD"]
    videoclip.SwitchingStrategy = "full-adaptation"
    videoScreen.SetContent(videoclip)

    videoScreen.show()
    nowpos = 0
    while true
        msg = wait(0, port)
        if type(msg) = "roVideoScreenEvent"
            if msg.isScreenClosed() then 'ScreenClosed event'
                print "Closing video screen"
                exit while
            else if msg.isPlaybackPosition() then
                nowpos = msg.GetIndex()
                print nowpos
            else if msg.isRequestFailed()
                print "play failed: "; msg.GetMessage()
            else if msg.isFullResult()
                print "isFullResult"
            else if msg.isPartialResult()
                print "isPartialResult, nowpos = ";nowpos
            else if msg.isStreamStarted()
                print "isStreamStarted"
            else
                print "Unknown event: "; msg.GetType(); " msg: "; msg.GetMessage()
            end if
        else
            print "Event: ";type(msg)
            print msg.GetInfo()
        end if
    end while

    print "Exiting app"
    screenFacade.showMessage("")
    sleep(25)
End Sub

Anyone?

It’s the weekend…More devs are around workdays.

Assuming you’ve implemented the encryption according to the HLS spec using the #EXT-X-KEY tag, you don’t necessarily have to do anything in BrightScript to make it work. The firmware will handle it automatically. You may need to add a call to SetCertificatesFile() to get any HTTPS requests working.

http://sdkdocs.roku.com/display/sdkdoc/ … thasStringasBoolean

“RokuChris” wrote:
Assuming you’ve implemented the encryption according to the HLS spec using the #EXT-X-KEY tag, you don’t necessarily have to do anything in BrightScript to make it work. The firmware will handle it automatically. You may need to add a call to SetCertificatesFile() to get any HTTPS requests working.

http://sdkdocs.roku.com/display/sdkdoc/ … thasStringasBoolean

Can you elaborate a bit more using the sample code I posted?

Sorry, I am still at the 101 level.

Just following up here.

I have a .m3u8 file AND a .key file.

How do I play the .m3u8 on my Roku?

You don’t have to do any different in BrightScript. The key needs to be specified in your HLS manifest.

The Encoding Guide talks about this: http://sdkdocs.roku.com/display/sdkdoc/ … Encryption
As does the HLS spec: https://tools.ietf.org/html/draft-panto … tion-6.2.3

With AES Encryption. I have the same problem. Did you find any solution for this?