简介
获取私有m3u8播放地址功能是由 数据万象(Cloud Infinite,CI)提供的,数据万象将处理能力与 COS SDK 完全结合,您可以直接按照本篇文档指引进行使用。
本文档提供关于获取私有m3u8的相关 API 概览以及 SDK 示例代码。
注意:
API | 操作描述 |
获取私有 M3U8 ts 资源的下载授权 |
获取私有 m3u8
功能说明
GetPrivateM3U8 接口用于获取私有 M3U8 ts 资源的下载授权。(此方式通过对象存储转发请求至数据万象)。
请求示例
private static String appId = "123456789";private static String bucket = "demo-123456789";private static String objectKey = "test.m3u8";private static String expires = "3600"; //单位为秒,可自行调整token方法private static byte[] secret = "YourSecret".getBytes();public static String generateCosDomainPrivateM3U8Url(COSClient client) throws UnsupportedEncodingException {PrivateM3U8Request request = new PrivateM3U8Request();request.setBucketName(bucket);request.setObject(objectKey);request.setExpires(expires);request.setTokenType("JwtToken");String token = generateToken(appId, bucket, objectKey, secret,expires);request.setToken(token);return client.generateCosDomainPrivateM3U8Url(request);}public static String generateToken(String appId, String bucketId, String objectKey, byte[] secret, String expires) throws UnsupportedEncodingException {Instant now = Instant.now();Instant expire = now.plus(Long.parseLong(expires), ChronoUnit.SECONDS);String encodedObjectKey;encodedObjectKey = URLEncoder.encode(objectKey, "UTF-8");Algorithm algorithm = Algorithm.HMAC256(secret);JWTCreator.Builder builder = JWT.create().withIssuer("client").withIssuedAt(Date.from(now)).withExpiresAt(Date.from(expire)).withClaim("Type", "CosCiToken").withClaim("AppId", appId).withClaim("BucketId", bucketId).withClaim("Object", encodedObjectKey).withClaim("Issuer", "client").withClaim("IssuedTimeStamp", now.getEpochSecond()).withClaim("ExpireTimeStamp", expire.getEpochSecond()).withClaim("UsageLimit", 20).withClaim("ProtectSchema", "rsa1024")// .withClaim("PublicKey", "xxx").withClaim("ProtectContentKey", 0);return builder.sign(algorithm);}
参数说明
Request 中的具体数据描述如下:
参数名称 | 描述 | 类型 | 是否必传 |
bucketName | 资源 bucket 信息 | String | 是 |
object | 资源在 cos 桶中的相对位置 | String | 是 |
expires | 私有 ts 资源 url 下载凭证的相对有效期,单位为秒,范围为[3600,43200] | String | 是 |
tokenType | 使用的 token 类型 | String | 否 |
token | token 内容,demo 中提供的是 JwtToken 类型的生成示例 | String | 否 |
返回结果说明
成功:返回携带签名与参数的 m3u8播放地址。
失败:发生错误(如 Bucket 不存在),抛出异常 CosClientException 或者 CosServiceException。详情请参见 异常处理。
SDK 代码完整示例