【问题标题】:How to add custom HTTP header field to AVPlayer requests for HLS如何将自定义 HTTP 标头字段添加到 HLS 的 AVPlayer 请求
【发布时间】:2014-08-01 19:49:38
【问题描述】:

我们正在使用 AVPlayer 播放 HLS 流,但我们有一个新要求,即我们需要提供自定义 HTTP 标头字段来从后端团队中识别客户端。是否可以向 AVPlayer 请求添加自定义 HTTP 标头字段,而无需借助黑客 HLS 播放列表文件来使用自定义协议?

【问题讨论】:

  • 嘿@Frank 你找到解决方案了吗?

标签: ios objective-c avfoundation avplayer


【解决方案1】:

我在网上的某个地方找到了这个答案。我在我的测试应用程序中使用它,但由于这是一个未记录的功能,苹果可能会拒绝。 但从技术上讲,这是一种选择。

NSMutableDictionary* headers = [NSMutableDictionary dictionary];
[headers setObject:@"SOF" forKey:@"X-REQ-HEADER-TEST"];

AVURLAsset* asset = [AVURLAsset URLAssetWithURL:myUrl options:@{@"AVURLAssetHTTPHeaderFieldsKey": headers}];
AVPlayerItem* item = [AVPlayerItem playerItemWithAsset:asset]; 
[avPlayerObj replaceCurrentItemWithPlayerItem:item];

AVURLAssetHTTPHeaderFieldsKey 的使用是有问题的。

【讨论】:

  • +1,因为这是我能找到的唯一解决方案,但它是一个非官方功能,根据 Apple 的说法,没有办法“正式”执行此操作。
【解决方案2】:

我花了数周时间寻找正式的方法。对于正在寻找适用于播放列表和块请求的请求和响应的方法的其他任何人,我能够找到有效的唯一方法是通过设备本身的反向代理传递播放请求,这允许您拦截请求,添加标头,将其发送到真实服务器,然后从响应中提取标头,然后将其返回给 AVPlayer。

我在这里做了一个简单的示例项目(有很多 cmets 和文档): https://github.com/kevinjameshunt/AVPlayer-HTTP-Headers-Example

【讨论】:

    猜你喜欢
    • 2013-03-05
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2023-03-12
    相关资源
    最近更新 更多