使用iOS AVPlayer对HLS流进行运行时URL修改

问题描述

我们已将录制的视频存储在MS azure中,并且出于安全目的,MS azure需要在HLS URL中添加安全令牌。

例如,如果实际URL是http://samplevideo.m3u8,而安全令牌是XXX,则需要从天青获得视频访问权限的URL是http://samplevideo.m3u8?XXX

此外,.ts清单文件中包含的.m3u8 URL也需要更改。 例如,如果包含的.ts URL是PQR_vid_10.ts,则需要将其转换为PQR_vid_10.ts?XXX

在android中,我们使用的是Exo-player,它具有一个不错的API,该API允许通过提供回调来修改每个URL。 例如,我们将以下代码用于exo-player,并且效果很好:

private void buildHlsMediaSource() {
        Uri uri = Uri.parse(testHlsUrl);
        HlsMediaSource hlsMediaSource =
                new HlsMediaSource.Factory(
                        new ResolvingDataSource.Factory(
                                new DefaultHttpDataSourceFactory(Util.getUserAgent(this,getString(R.string.app_name))),(DataSpec dataSpec) -> dataSpec.withUri(resolveUri(dataSpec.uri))))
                        .createMediaSource(uri);
        player.prepare(hlsMediaSource);
        player.setPlayWhenReady(false);
        player.addListener(eventListener);
    }

 private Uri resolveUri(Uri uri) {
        String resultPath = uri.toString()+"?XXX";
        return Uri.parse(resultPath);
    }

但是,我们无法为iOS AVPlayer找到一个好的/类似的解决方案。 我们已经看到,一些SO答案建议使用本地代理服务器来解决此问题。但是我们不确定这是否是最终的解决方案,还有其他更好,更直接的解决方案是否可用。

因此,您能为我们提供一个可能的简单/直接解决方案或示例代码片段或此用例的任何其他文档吗?

预先感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...