OSS生成m3u8文件动态签名-阿里云开发者社区

开发者社区> 开发与运维> 正文

OSS生成m3u8文件动态签名

简介: 针对对象存储OSS私有bucket权限的使用场景,每个object都需要生成一次签名URL。针对m3u8的索引文件,索引里的每一个ts都需要生成一次签名地址。这里提供一个通过m3u8设置header带到签名里,从而实现获取的ts带签名的方法。

业务场景
针对对象存储OSS私有bucket权限的使用场景,每个object都需要生成一次签名URL。针对m3u8的索引文件,索引里的每一个ts都需要生成一次签名地址。
普通的带签名的m3u8地址,ts是没有签名的。
image.png
那么播放器请求的时候,请求到ts时,就会抛出403签名的权限报错。
image.png
解决方法
1、官网提供了签名URL的生成方法以及demo
https://help.aliyun.com/document_detail/100670.html?spm=a2c4g.11186623.6.659.181165d3h56PAa
2、通过官网的方法,在header中添加上x-oss-proccess=hls/sign处理即可。
demo例子:(Java)
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "";
String accessKeySecret = "";
String bucketName = "";
String objectName = "";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 设置图片处理样式。
String style = "hls/sign";
// 指定过期时间为10分钟。
Date expiration = new Date(new Date().getTime() + 1000 60 10 );
GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
req.setExpiration(expiration);
req.setProcess(style);
URL signedUrl = ossClient.generatePresignedUrl(req);
System.out.println(signedUrl);
// 关闭OSSClient。
ossClient.shutdown();
最终输出的地址上的ts是带上签名的。
image.png

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

集结各类场景实战经验,助你开发运维畅行无忧

其他文章