视频点播dll,分享地址:
链接:https://pan.baidu.com/s/1TM4xMmLmv61FbPRy7zNzNg
提取码:uv56
视频点播官方文档地址:
https://help.aliyun.com/document_detail/72085.html?spm=a2c4g.11186623.6.961.418958fcKLHJgt
https://help.aliyun.com/document_detail/60574.html?spm=a2c4g.11186623.6.700.7c5149234IQExZ
第一步:角色授权
临时授权方法:https://help.aliyun.com/document_detail/57114.html
①:新增角色
一定要新增角色,单独授权。不能用默认角色授权
②:添加授权
二:添加存储地址
三:请求上传地址和凭证、请求STS
①:获取视频上传地址和凭证
/// <summary> /// 获取视频上传地址和凭证 /// </summary> /// <param name="request"></param> /// <returns></returns> public ResponseModel<UploadVideoResponseModel> GetAuth(RequestModel<GetAuthRequestModel> request) { var response = new ResponseModel<UploadVideoResponseModel>(request.Callback, request.PostTime); // 构造请求 CreateUploadVideoRequest req = new CreateUploadVideoRequest(); if (!string.IsNullOrWhiteSpace(request.PostContent.Title)) req.Title = request.PostContent.Title; else req.Title = Guid.NewGuid().ToString(); req.FileName = request.PostContent.FileName; // 初始化客户端 DefaultAcsClient client = InitVodClient(VodStaticConfigInfo.Instance.VodAccessKeyId, VodStaticConfigInfo.Instance.VodAccessKeySecret); // 发起请求,并得到响应结果 CreateUploadVideoResponse video = client.GetAcsResponse(req); UploadVideoResponseModel info = new UploadVideoResponseModel { RequestID = video.RequestId, UploadAddress = video.UploadAddress, UploadAuth = video.UploadAuth, VideoId = video.VideoId }; response.PostContent = info; return response; }
初始化点播服务接入区域
https://help.aliyun.com/document_detail/72086.html?spm=a2c4g.11186623.6.962.10041552f38BwL
②:STS临时授权
/// <summary> /// 获取临时授权 /// </summary> /// <param name="request"></param> /// <returns></returns> public ResponseModel<VodSimpleStsModel> GetVodSts(RequestModel request) { var response = new ResponseModel<VodSimpleStsModel>(request.Callback, request.PostTime); IClientProfile profile = DefaultProfile.GetProfile(VodStaticConfigInfo.Instance.VodRegion, VodStaticConfigInfo.Instance.VodAccessKeyId, VodStaticConfigInfo.Instance.VodAccessKeySecret); DefaultAcsClient client = new DefaultAcsClient(profile); // 构造AssumeRole请求 AssumeRoleRequest arRequest = new AssumeRoleRequest { RoleArn = VodStaticConfigInfo.Instance.RoleArn, // 指定角色Arn RoleSessionName = VodStaticConfigInfo.Instance.RoleSessionName, }; // 可以设置Token有效期,可选参数,默认3600秒; //arRequest.DurationSeconds = VodStaticConfigInfo.Instance.DurationSeconds; // 可以设置Token的附加Policy,可以在获取Token时,通过额外设置一个Policy进一步减小Token的权限; // request.Policy="<policy-content>" AssumeRoleResponse arResponse = client.GetAcsResponse(arRequest); Token过期时间;服务器返回UTC时间,这里转换成北京时间显示; VodSimpleStsModel sts = new VodSimpleStsModel(); sts.AccessKeyId = arResponse.Credentials.AccessKeyId; sts.AccessKeySecret = arResponse.Credentials.AccessKeySecret; sts.SecurityToken = arResponse.Credentials.SecurityToken; sts.Expiration = DateTime.Parse(arResponse.Credentials.Expiration).ToLocalTime().ToString("yyyy/MM/dd HH:mm:ss"); sts.Region = VodStaticConfigInfo.Instance.VodRegion; response.PostContent = sts; return response; }
③:获取视频播放地址
/// <summary> /// 根据Vid获取视频播放地址 /// </summary> /// <param name="request"></param> /// <returns></returns> public ResponseModel<List<VideoPayInfoResponseModel>> GetPayUrl(RequestModel<GetPayUrlRequestModel> request) { var response = new ResponseModel<List<VideoPayInfoResponseModel>>(request.Callback, request.PostTime); List<VideoPayInfoResponseModel> infoList = new List<VideoPayInfoResponseModel>(); VideoPayInfoResponseModel info = null; // 构造请求 GetPlayInfoRequest req = new GetPlayInfoRequest(); req.VideoId = request.PostContent.Vid; req.Formats = request.PostContent.Formats; req.OutputType = "oss"; // 初始化客户端 DefaultAcsClient client = InitVodClient(VodStaticConfigInfo.Instance.VodAccessKeyId, VodStaticConfigInfo.Instance.VodAccessKeySecret); // 发起请求,并得到 response GetPlayInfoResponse video = client.GetAcsResponse(req); List<GetPlayInfoResponse.GetPlayInfo_PlayInfo> playInfoList = video.PlayInfoList; foreach (var playInfo in video.PlayInfoList) { info = new VideoPayInfoResponseModel { Bitrate = playInfo.Bitrate, CreationTime = playInfo.CreationTime, Definition = playInfo.Definition, Format = playInfo.Format, ModificationTime = playInfo.ModificationTime, PlayURL = playInfo.PlayURL.Substring(0,playInfo.PlayURL.LastIndexOf("?")), StreamType = playInfo.StreamType }; infoList.Add(info); } response.PostContent = infoList; return response; }
playInfo.PlayURL.Substring(0,playInfo.PlayURL.LastIndexOf("?"))
需要截取‘?’后面点参数,不然视频会有失效期。