0 Replies
      Latest reply on Feb 11, 2020 7:11 PM by chtdapp
      chtdapp Level 1 Level 1 (0 points)

        i try to playback fairplay video with  HLSCatalogWithFPS - AVContentKeySession apple sample code.

        and i just modify  2 func "func requestApplicationCertificate() throws -> Data"  and  "func requestContentKeyFromKeySecurityModule(spcData: Data, assetID: String) throws -> Data"  and add video url on the stream.plist

         

        func requestApplicationCertificate() throws -> Data {

                let certificateURL = Bundle.main.url(forResource: "fairplay", withExtension: "cer")

                let applicationCertificate: Data? = try? Data(contentsOf: certificateURL!)

                return applicationCertificate!

            }

         

            func requestContentKeyFromKeySecurityModule(spcData: Data, assetID: String) throws -> Data {

           

                // MARK: ADAPT - You must implement this method to request a CKC from your KSM.

                var ckcData: Data? = nil

                let url = URL(string: " DRM license url")!

                var request = URLRequest(url: url)

         

           

                let postString = "spc=\(spcData.base64EncodedString())&assetId=\(assetID)"

                let postData = postString.data(using: .utf8, allowLossyConversion: true)   

           

                request.httpMethod = "POST"

                request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

                request.setValue(String(postData!.count), forHTTPHeaderField: "Content-Length")

                request.httpBody = postData

                let session = URLSession.shared

           

                let semaphore = DispatchSemaphore(value: 0)

           

                let task = session.dataTask(with: request) { (data, response, error) in

                    guard let data = data, error == nil else {

                        print("error=\(error)")

                        return

                    }

               

                    print("response = \(response)")

               

                    let responseData = String(data: data, encoding: .utf8)

                    print("responseData = \(responseData)")

                    print("ckc = \(ckcData = Data(base64Encoded: responseData!))")

                    semaphore.signal()

                }

                   task.resume()

           

                _ = semaphore.wait(timeout: DispatchTime.distantFuture)

                return ckcData!

        }

         

        and i get the error message , How can i solve it ??

         

         

        response = Optional(<NSHTTPURLResponse: 0x28283d040> { URL: DRM License URL } { Status Code: 500, Headers {

            Connection =     (

                close

            );

            "Content-Length" =     (

                94

            );

            "Content-Type" =     (

                "application/json"

            );

            Date =     (

                "Mon, 03 Feb 2020 15:07:16 GMT"

            );

            Server =     (

                "Apache-Coyote/1.1"

            );

        } })

        responseData = Optional("FPS Error code = -42581 | Error in parsing Server playback context to retrieve assetId and HU.")

        ckc = ()

        Fatal error: Unexpectedly found nil while unwrapping an Optional value

        2020-02-03 23:07:16.061540+0800 HLSCatalog[4006:862460] Fatal error: Unexpectedly found nil while unwrapping an Optional value