阿里云视频点播服务接口对接总结 C# 2021-01-30

好记性,不如烂笔头,趁下班时间对今天研究的阿里云视频点播服务做个小小的总结,方便后期查看等。

一、视频点播服务介绍

1.1视频点播总体介绍

阿里云视频点播服务接口对接总结 C# 2021-01-30_第1张图片
阿里云视频点播服务总体介绍

官方文档:
https://help.aliyun.com/document_detail/84752.html?spm=a2c4g.11186623.6.1097.84f7d418JrQa3F

1.2Web端文件上传流程

阿里云视频点播服务接口对接总结 C# 2021-01-30_第2张图片
web端文件上传流程

二、账号授权

2.1视频上传地址和凭证

官方文档:
https://help.aliyun.com/document_detail/57056.html?spm=a2c4g.11186623.6.644.17af4e28dglLzP

2.2 STS临时授权

官方文档:
https://help.aliyun.com/document_detail/57114.html?spm=a2c4g.11186623.6.645.737a69d1hynw4p

2.3

https://help.aliyun.com/document_detail/52204.html?spm=a2c4g.11186623.2.12.71c452f34nxfPW

三、后端接口

3.0新增配置信息

在文件OSS_Helper.cs原来配置信息的基础上增加如下配置信息:

#region 视频点播服务 2021-01-29
        private const string videoRegion = "cn-shanghai";//视频初始化服务需要调用
        private const string videoRoleArn = "acs:ram::你的角色配置信息";//【RAM角色管理】——【单机角色】
        private const string videoPolicyFile = @"{
            ""Statement"": [
                    {
                        ""Action"": ""vod:*"",
                        ""Effect"": ""Allow"",
                        ""Resource"": ""*""
                    }
                ],
                ""Version"": ""1""
        }";
        #endregion

备注:上面的三个信息与OSS虽然名字类似,但是信息却不同,开发的时候创建了2个角色,一个用于专门管理OSS、一个用于管理VOD,所以RoleArn会不同,另外视频开通的地区与之前的OSS不同,所以进行了单独的配置,另外视频的授权策略也是独立配置的。

如何查看授权策略?请参考如下,依次点击即可查看:

阿里云视频点播服务接口对接总结 C# 2021-01-30_第3张图片
用户
阿里云视频点播服务接口对接总结 C# 2021-01-30_第4张图片
权限
阿里云视频点播服务接口对接总结 C# 2021-01-30_第5张图片
权限策略管理

当然你可以通过其他路径进入查看,上面的配置信息是默认的,你可以根据实际情况进行配置。

3.1视频上传地址和凭证

(1)新建业务实体类UploadVideoResponseModel.cs,用于返回凭证信息

 /// 
    /// 获取视频上传地址和凭证  https://help.aliyun.com/document_detail/55407.html?spm=a2c4g.11186623.6.763.ec8f70373Xn4lb
    /// 
    public class UploadVideoResponseModel
    {
        /// 
        /// 请求ID  示例值:25818875-5F78-4A*****F6-D7393642CA58
        /// 
        public string RequestId { get; set; }

        /// 
        /// 视频ID  示例值:93ab850b4f6f*****54b6e91d24d81d4
        /// 
        public string VideoId { get; set; }

        /// 
        /// 上传地址 示例值:eyJTZWN1cml0*****a2VuIjoiQ0FJU3p3TjF
        /// 
        public string UploadAddress { get; set; }

        /// 
        /// 上传凭证 示例值:eyJFbmRw*****b2ludCI6Im
        /// 
        public string UploadAuth { get; set; }
    }

(2)在自己定义的工具类OSS_Helper.cs中封装:

  • ①初始化视频服务接口

  • ②获取视频上传地址和凭证接口

代码如下所示:

/// 
        /// 初始化视频服务
        /// https://help.aliyun.com/document_detail/72086.html?spm=a2c4g.11186623.6.1094.3d83d418WiA4Z6
        /// 
        /// 访问密钥标识
        /// 访问密钥
        /// 
        public static DefaultAcsClient InitVodClient(string accessKeyId, string accessKeySecret)
        {
            // 点播服务接入区域
            string regionId = videoRegion;
            IClientProfile profile = DefaultProfile.GetProfile(regionId, accessKeyId, accessKeySecret);
            return new DefaultAcsClient(profile);
        }

        /// 
        /// 获取视频上传地址和凭证
        /// 
        /// 视频标题
        /// FileName视频源文件名
        /// 
        public UploadVideoResponseModel GetAuth(string title, string fileName)
        {
            // 构造请求
            CreateUploadVideoRequest request = new CreateUploadVideoRequest();
            request.Title = title;
            request.FileName = fileName;

            // 初始化客户端
            DefaultAcsClient client = InitVodClient(accessKeyId, accessKeySecret);
            // 发起请求,并得到响应结果
            CreateUploadVideoResponse response = client.GetAcsResponse(request);

            UploadVideoResponseModel info = new UploadVideoResponseModel
            {
                RequestId = response.RequestId,
                UploadAddress = response.UploadAddress,
                UploadAuth = response.UploadAuth,
                VideoId = response.VideoId
            };
            return info;
        }

(3)Controller层调用,暴露给前端

/// 
        /// 获取视频上传地址和凭证
        /// 
        /// 视频标题
        /// FileName视频源文件名
        /// 返回视频上传地址和凭证
        [AcceptVerbs("GET", "POST")]
        public Task GetAuth(string title,string fileName)
        {
            var response = new MessageModel();
            try
            {
                //IUser user = (IUser)this.Request.GetRouteData().Values["User"];
                OSS_Helper oss = new OSS_Helper();
                var videoModel = oss.GetAuth(title, fileName);
                response.Data = videoModel;
                return Task.FromResult(response.SetError(GlobalErrorCode.OK));
            }
            catch (Exception ex)
            {
                NLogger.Exception(ex);
                return Task.FromResult(response.SetError(GlobalErrorCode.SystemError));
            }
        }

3.2STS上传

(1)工具类方法封装

备注:assumeRole方法是之前上传OSS时封装的方法,通用,无需单独设置

public StsTokenModel GetVideoToken()
        {
            // 只有 RAM用户(子账号)才能调用 AssumeRole 接口
            // 阿里云主账号的AccessKeys不能用于发起AssumeRole请求
            // 请首先在RAM控制台创建一个RAM用户,并为这个用户创建AccessKeys

            // RoleArn 需要在 RAM 控制台上获取
            // RoleSessionName 是临时Token的会话名称,自己指定用于标识你的用户,主要用于审计,或者用于区分Token颁发给谁
            // 但是注意RoleSessionName的长度和规则,不要有空格,只能有'-' '_' 字母和数字等字符
            // 具体规则请参考API文档中的格式要求
            //string roleSessionName = "alice-001";
            string roleSessionName = "001";
            // 必须为 HTTPS
            try
            {
                AssumeRoleResponse stsResponse = assumeRole(accessKeyId, accessKeySecret, videoRoleArn, roleSessionName,
                        videoPolicyFile, ProtocolType.HTTPS, TokenExpireTime);

                return new StsTokenModel()
                {
                    status = 200,
                    Region = "cn-shanghai",
                    AccessKeyId = stsResponse.Credentials.AccessKeyId,
                    AccessKeySecret = stsResponse.Credentials.AccessKeySecret,
                    Expiration = stsResponse.Credentials.Expiration,
                    SecurityToken = stsResponse.Credentials.SecurityToken,
                    BucketName = bucketName
                };

            }
            catch (ClientException e)
            {
                return new StsTokenModel() { status = 500 };
            }
        }

(2)Controller层调用,暴露给前端

[HttpGet]
        public Task GetSTSsecurityToken()
        {
            var response = new MessageModel();
            try
            {
                IUser user = (IUser)this.Request.GetRouteData().Values["User"];
                OSS_Helper oss = new OSS_Helper();
                var stsmodel = oss.GetVideoToken();
                response.Data = stsmodel;
                return Task.FromResult(response.SetError(GlobalErrorCode.OK));
            }
            catch (Exception ex)
            {
                NLogger.Exception(ex);
                return Task.FromResult(response.SetError(GlobalErrorCode.SystemError));
            }
        }

四、前端调用

(1)安装web前端接口框架:

npm install ali-oss

(2)前端完整示例代码






五、参考资料

阿里云 oss 视频上传 sts+前端js分片上传
https://blog.csdn.net/bianenhui91/article/details/83105679

【上传文件】基于阿里云的视频点播VOD、对象存储OSS实现音视频图片等文件上传
https://blog.csdn.net/fifteen718/article/details/82764187

JAVA实现文件上传oss以及阿里云视频点播
https://blog.csdn.net/weixin_45498245/article/details/109338093

【视频点播最佳实践】使用OSS SDK上传视频到点播
https://blog.csdn.net/yunqiinsight/article/details/80134266

阿里云视频点播上传与url播放
https://blog.csdn.net/qq_33865313/article/details/80271323

阿里云视频上传
https://blog.csdn.net/chihang6/article/details/83241142

视频点播——JS测试阿里云视频上传功能
https://blog.csdn.net/qq_36808823/article/details/85065525

VUE 2.0 对接阿里云视频以及视屏站开发
https://blog.csdn.net/qq_34837006/article/details/85006931

前端js上传阿里云视频
https://blog.csdn.net/qq_36500865/article/details/92793826

阿里云JavaScript上传视频
https://blog.csdn.net/qq_41664100/article/details/99550997

https://blog.csdn.net/chihang6/article/details/83241142

前端上传视频至阿里云
https://blog.csdn.net/guanguan0_0/article/details/86612159

阿里云VOD 视频点播(三),后台java接口代码
https://blog.csdn.net/qq_37880968/article/details/90375782

阿里云VOD 视频点播(二)、VUE视频上传,视频播放
https://blog.csdn.net/qq_37880968/article/details/90374634

阿里视频上传工具类
https://blog.csdn.net/lq18894033018/article/details/97163812

阿里云oss视频上传后,如何获取视频封面
https://blog.csdn.net/qq_27295403/article/details/89176708

你可能感兴趣的:(阿里云视频点播服务接口对接总结 C# 2021-01-30)