如何将自定义HTTP标头字段添加到HLS的AVPlayer请求

时间:2014-08-01 19:49:38

标签: ios objective-c avfoundation avplayer

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

2 个答案:

答案 0 :(得分:5)

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

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="top"
    android:layout_gravity="top"
    android:orientation="vertical"
    tools:context="com.ferr3t.don.gurumovies.MovieDetail">


    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/imageView" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/text_view_title" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:id="@+id/text_view_description" />

</LinearLayout>

使用AVURLAssetHTTPHeaderFieldsKey是有问题的。

答案 1 :(得分:0)

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

我在这里制作了一个简单的示例项目(包含大量注释和文档): https://github.com/kevinjameshunt/AVPlayer-HTTP-Headers-Example