七牛 私有空间 如何用pm3u8对嵌套的m3u8文件地址进行授权?

新手上路,请多包涵

目的

利用M3U8做带宽自适应媒体流。

但是问题来了

我的m3u8文件都在一个私有空间里,需要授权。查文档使用 pm3u8/0 参数请求父m3u8文件,发现并没有对其内部的子m3u8 链接地址进行授权。

猜测是我m3u8格式有误?或者是七牛pm3u8接口未针对嵌套情况进行授权?如何解决?

附录:问题环境

先生成了几个不同规格的子m3u8文件,最后手动生成了一个父m3u8

#父m3u8
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=10000000
vvid54c4deed07e9f8c970d74a80_hight.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5000000
vvid54c4deed07e9f8c970d74a80_standard.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2500000
vvid54c4deed07e9f8c970d74a80_low.m3u8

#其中一个子m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:9
#EXTINF:8.400000,
http://XXXXX.com1.z0.glb.clouddn.com/KEEp3ZK-T5sv1-JMC5qLd7z64E8=/lhRK8qt8znDmp3g46StgFtVSBiAE/seg0
#EXTINF:5.412856,
http://XXXXX.com1.z0.glb.clouddn.com/KEEp3ZK-T5sv1-JMC5qLd7z64E8=/lhRK8qt8znDmp3g46StgFtVSBiAE/seg1
#EXT-X-ENDLIST

//Response(并未签名)
HTTP/1.1 200 OK
Content-Type: application/x-mpegurl
...
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=10000000
vvid54c4deed07e9f8c970d74a80_hight.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5000000
vvid54c4deed07e9f8c970d74a80_standard.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2500000
vvid54c4deed07e9f8c970d74a80_low.m3u8
阅读 7.5k
2 个回答

目前七牛的 pm3u8 接口,还没有支持,m3u8 文件的嵌套,然后动态生成下载凭证。原因大致如下:
1. 存储在七牛私有空间的 m3u8 文件(hls索引文件)必须使用 pm3u8 才能进行对其包含的切片文件的列表也带下载凭证进行访问;
2. 广泛意义上,m3u8 文件(hls索引文件)的内容,可以是任何的音视频文件的链接(mp4文件、m3u8文件、ts文件等),除了内容为 m3u8 文件外,其他内容均适用pm3u8接口,所以七牛并未针对内容 m3u8 文件的hls索引文件做特殊的处理,导致了pm3u8接口不支持嵌套;

我这边还是建议,如果不是业务上对 m3u8 的嵌套有非常强烈的需求,m3u8 文件分开来存储和播放其实也是个非常好的选择,毕竟把三种码率的切片文件列表放在一起,进行播放的意义不是很大。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进