【问题标题】:How to send cookie with AVPlayer url in iOS?如何在 iOS 中使用 AVPlayer url 发送 cookie?
【发布时间】:2016-09-10 16:45:58
【问题描述】:

是否可以使用 AVPlayer url 发送 cookie?我有一个 AES 加密的直播,需要一个密钥来解密。它将访问服务器并且服务器只有在会话存在时才返回密钥。所以我想将 phpsessionid 与 url 一起发送到 AVPlayer。

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

【问题讨论】:

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


    【解决方案1】:
       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】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 默认情况下,AVPlayer 会随请求一起发送 cookie。似乎播放器会发送 cookie(如果可用)。无论如何感谢您的回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 2014-05-25
      • 2020-02-22
      • 2014-04-12
      • 1970-01-01
      • 2015-03-14
      • 2010-09-23
      相关资源
      最近更新 更多