天天看点

OSS生成m3u8文件动态签名

业务场景

针对对象存储OSS私有bucket权限的使用场景,每个object都需要生成一次签名URL。针对m3u8的索引文件,索引里的每一个ts都需要生成一次签名地址。

普通的带签名的m3u8地址,ts是没有签名的。

OSS生成m3u8文件动态签名

那么播放器请求的时候,请求到ts时,就会抛出403签名的权限报错。

OSS生成m3u8文件动态签名

解决方法

1、官网提供了签名URL的生成方法以及demo

https://help.aliyun.com/document_detail/100670.html?spm=a2c4g.11186623.6.659.181165d3h56PAa

2、通过官网的方法,在header中添加上x-oss-process=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是带上签名的。

OSS生成m3u8文件动态签名