如何在iOS中使用AVPlayer url发送cookie?

时间:2016-05-14 14:18:12

标签: ios objective-c aes session-cookies avplayer

是否可以使用AVPlayer URL发送cookie?我有一个AES加密的直播流,需要一个密钥才能解密。它会点击服务器,只有会话在那里服务器返回密钥。所以我想要将phpsessionid和网址一起发送给AVPlayer。

有可能吗?我看到了AVURLAssetHTTPHeaderFieldsKey。我不知道这是不是我要设置的。如果这样做怎么办?

3 个答案:

答案 0 :(得分:3)

在你的情况下,苹果的FPS(FairPlay Streaming)将起作用。 FairPlay Streaming是DRM(数字版权管理)支持,您可以在其中获取内容密钥以及内容数据,并且需要通过支持AES-128加密的委托。请参阅下面我在下面分享的链接

https://developer.apple.com/streaming/fps/

答案 1 :(得分:2)

   This is how you can set Signed Cookies (Headers) in AVPlayer URL Request :

    fileprivate func setPlayRemoteUrl() {
        if playUrl.isEmpty { return }
        let cookiesArray = HTTPCookieStorage.shared.cookies!
        let values = HTTPCookie.requestHeaderFields(with: cookiesArray)
        let cookieArrayOptions = ["AVURLAssetHTTPHeaderFieldsKey": values]
        let assets = AVURLAsset(url: videoURL! as URL, options: cookieArrayOptions)
        let item = AVPlayerItem(asset: assets)
        player = AVPlayer(playerItem: item)
        playerLayer = AVPlayerLayer(player: player)
        playerLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
        playerLayer?.contentsScale = UIScreen.main.scale
        layer.insertSublayer(playerLayer!, at: 0)
    }

答案 2 :(得分:1)

我自己还没有真正尝试过,但似乎有一个API可以让你用AVURLAsset创建options。其中一个可能的选项键是AVURLAssetHTTPCookiesKey。你可能想看一下。