如何播放加密视频

det365娱乐官网登录 🌸 2026-01-12 23:48:20 🎨 admin 👁️ 7097 ❤️ 53
如何播放加密视频

三方DRM(Fairplay)加密播放-视频点播UrlSource/直播UrlSource播放说明 仅支持HLS协议的Fairplay方案。

可参见智能媒体服务国际站控制台的直播封装功能,该功能目前仅支持国际站。

经过DRM加密的视频通过UrlSource方式播放时,除了与播放普通视频配置一致外,还必须实现AVPDrmDelegate接口以获取Fairplay证书及视频密钥。

@interface SimplePlayerViewController()

@end

- (void)viewDidLoad {

self.player = [[AliPlayer alloc] init];

self.player.playerView = self.avpPlayerView.playerView;

self.player.drmDelegate = self;

if(当前URL是三方DRM视频){

[self.player setPreferPlayerName:@"AppleAVPlayer"];

}

//...

}

//AVPDrmDelegate.requestCert和requestKey的接口,结合三方DRM厂商的文档获取证书和密钥。

//以下以PallyCon DRM厂商获取证书和密钥的实现供参考,详情参考https://pallycon.com/docs/en/multidrm

#pragma mark AVPDrmDelegate

- (NSData *)requestCert:(AliPlayer *)player {

// 业务也可以提前把证书请求好缓存下来,此处只要返回缓存的证书即可,可降低起播耗时。

// 如果证书数据不对,播放器会onError并告知相关错误,也可关注控制台的报错了解更多信息。

//将SITE_ID替换成您自己的

const char* url = "https://license.pallycon.com/ri/fpsKeyManager.do?siteId=SITE_ID";

//按照DRM厂商要求,通过HTTP GET请求配置的Fairplay证书

//尽量避免占用该线程太长时间。

NSData* responseData = [self performAsyncHttpGet:url];

if (!responseData) {

//异常处理,此时播放器会onError并告知相关错误。

return nil;

}

//请求回来的数据需要base64 decode后再返回给播放器

NSString *base64String = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

return [self decodeBase64String:base64String];

}

- (NSData *)requestKey:(AliPlayer *)player data:(NSData *)data {

//按照DRM厂商要求,通过HTTP POST请求密钥信息

NSString *urlString = [NSString stringWithFormat:@"https://license-global.pallycon.com/ri/licenseManager.do"];

const char *url = [urlString UTF8String];

//将TOKEN_ID替换成您自己的

NSString *headerString = [NSString stringWithFormat:@"pallycon-customdata-v2: TOKEN_ID"];

const char* headers[] = {

[headerString UTF8String]

};

int headerCount = sizeof(headers) / sizeof(headers[0]);

//尽量避免占用该线程太长时间。

NSData* responseData = [self performAsyncHttpPost:url

headers:headers

headerCount:headerCount

data:data];

if (!responseData) {

//异常处理,此时播放器会onError并告知相关错误。

return nil;

}

//若您的token的的response_format设置为original,则直接返回response,否则还需要解析后返回

//具体参考:https://pallycon.com/docs/en/multidrm/license/license-token/#token-json

//不同厂商response的格式与结构差异巨大,请仔细检查,如果response无法被用来解密,播放器会onError告知相关错误。

return [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

}

相关推荐

补天灵片吃多久有效果?
det365娱乐官网登录

补天灵片吃多久有效果?

📅 07-10 👁️ 9807
高锟 (1933
28365365体育在线备用

高锟 (1933

📅 10-14 👁️ 7622
毫针法禁忌
28365365体育在线备用

毫针法禁忌

📅 08-09 👁️ 4335