ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Aliplayer通过HLS流式播放Aliyun Mps(媒体处理)转码的加密视频

2022-01-20 22:33:28  阅读:630  来源: 互联网

标签:视频 EXT 转码 HLS 解密 Aliplayer 播放 config response


前言

 公司需求,上传的视频需要加上公司Logo,同时播放需要采用流式播放禁止下载。 现有的环境在阿里云上,所以自然想到了阿里云的产品【媒体处理】的转码功能。

 

转码配置

配置比较简单,采用阿里云HLS标准加密方式 参考阿里云官方文档即可【文档地址】,采用工作流方式,自动触发。 

流程图如下。

 

 

 

工作流的配置需要额外注意的是KeyUri,该Url为业务站点应用对应的视频解密api, 此Url会在MPS加密后自动写入m3u8文件中,播放器播放时在解析m3u8文件后,也会自动请求该Url,将读取到的ts文件进行解密播放。

 

解密与播放

流程图

 

解密服务

这里可以按照自己的开发语言,我这边使用的是.net core。 官方文档提供了python和java 两个版本,调用Kms密钥服务将密文进行解密。

 一个简单的m3u8文件如下

#EXTM3U
     #EXT-X-VERSION:3
     #EXT-X-TARGETDURATION:5
     #EXT-X-MEDIA-SEQUENCE:0
     #EXT-X-KEY:METHOD=AES-128,URI="https://example.aliyundoc.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b****"
     #EXTINF:4.127544,
     15029611683170-00001.ts
     #EXT-X-ENDLIST

其中Ciphertext为密文,MediaId 为媒体服务对应的mediaId,播放时使用。

解密api的请求代码如下(C#)

        private Client CreateClient()
        {
            Config config = new Config
            {
                // 您的AccessKey ID
                AccessKeyId = _config.AccessKeyId,
                // 您的AccessKey Secret
                AccessKeySecret = _config.AccessKeySecret,
                Endpoint = _config.Endpoint,
            };
            return new Client(config);
        }
   private async Task<string> DecryptRequest(string mediaId, string ciphertext)
        {
            var client = CreateClient();
            DecryptRequest request = new DecryptRequest();
            request.CiphertextBlob = ciphertext;
            try
            {
                DecryptResponse response = await client.DecryptAsync(request);
                string plaintext = response.Body.Plaintext;

                Console.WriteLine($"plaintext:{plaintext}");
                Console.WriteLine($"KeyId:{response.Body.KeyId}");
                Console.WriteLine($"KeyVersionId:{response.Body.KeyVersionId}");
                Console.WriteLine($"RequestId:{response.Body.RequestId}");
                return plaintext;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

不过按理来讲需要在这里要额外校验当前用户的身份,如果没有对应的身份标识,则应该返回httpCode 403. 验证标识的方式可采用 cookie token或其他方式,但这块儿的http请求是由 Aliplayer发出的,在前后端分离的项目中暂时还不清楚如何在请求头上加上自己的临时票据 也就是上面播放流程图中的MtsHlsUriToken参数,需要请教大佬解答了。

 

视频播放

 

 视频播放可以采用两种方式即 播放地址播放和mps用户方式播放。

 

 

 

播放地址播放

因为视频时采用HLS标准加密的,如果想要使用播放地址进行播放的话,需要将视频所在的bucket公开才可以。 否则会导致aliplayer无法读取.ts视频段

MPS用户播放

 

标签:视频,EXT,转码,HLS,解密,Aliplayer,播放,config,response
来源: https://www.cnblogs.com/dyhuang/p/15828105.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有