天天看點

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檔案動态簽名