好记性,不如烂笔头,趁下班时间对今天研究的阿里云视频点播服务做个小小的总结,方便后期查看等。
一、视频点播服务介绍
1.1视频点播总体介绍
官方文档:
https://help.aliyun.com/document_detail/84752.html?spm=a2c4g.11186623.6.1097.84f7d418JrQa3F
1.2Web端文件上传流程
二、账号授权
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不同,所以进行了单独的配置,另外视频的授权策略也是独立配置的。
如何查看授权策略?请参考如下,依次点击即可查看:
当然你可以通过其他路径进入查看,上面的配置信息是默认的,你可以根据实际情况进行配置。
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)前端完整示例代码
将文件拖到此处,或
点击上传
上传文件大小不能超过 1G
五、参考资料
阿里云 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