using Aliyun.Acs.Core; using Aliyun.Acs.Core.Profile; using Aliyun.Acs.vod.Model.V20170321; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; namespace JiaZhiQuan.Common.AliVod { public class AliVODHelper { readonly VodConfig config; DefaultAcsClient client; public AliVODHelper(VodConfig config) { this.config = config; } public DefaultAcsClient GetVodClient() { //string regionId = "cn-shanghai"; //IClientProfile profile = DefaultProfile.GetProfile(regionId, config.AccessKeyId, config.AccessKeySecret); //// DefaultProfile.AddEndpoint(regionId, regionId, "vod", "vod." + regionId + ".aliyuncs.com"); //return new DefaultAcsClient(profile); if (client == null) { lock (this) { if (client == null) { string regionId = "cn-shanghai"; IClientProfile profile = DefaultProfile.GetProfile(regionId, config.AccessKeyId, config.AccessKeySecret); // DefaultProfile.AddEndpoint(regionId, regionId, "vod", "vod." + regionId + ".aliyuncs.com"); client = new DefaultAcsClient(profile); } return client; } } else { return client; } } /// /// 人工批量审核 /// /// 最多20条 /// 是否通过 /// 如果未通过,给出理由 /// 审核备注 /// public CreateAuditResponse ManualAudit(List videoIds, bool pass, string reason, string comment) { var req = new CreateAuditRequest(); JArray auditContents = new JArray(); foreach (var videoId in videoIds) { JObject auditContent = new JObject(); auditContent.Add("VideoId", videoId); auditContent.Add("Status", pass ? "Normal" : "Blocked"); if (!pass && !string.IsNullOrEmpty(reason)) { auditContent.Add("Reason", reason); } if (!string.IsNullOrEmpty(comment)) { auditContent.Add("Comment", comment); } auditContents.Add(auditContent); } req.AuditContent = auditContents.ToString(); return GetVodClient().GetAcsResponse(req); } public CreateAuditResponse AutoManualAudit(string videoId) { var req = new CreateAuditRequest(); JArray auditContents = new JArray(); JObject auditContent = new JObject(); auditContent.Add("VideoId", videoId); auditContent.Add("Status", "Normal"); auditContent.Add("Comment", "机审通过,人工自动通过"); auditContents.Add(auditContent); req.AuditContent = auditContents.ToString(); return GetVodClient().GetAcsResponse(req); } /// /// 获取视频上传地址和凭证 /// /// 长度不超过128个字符或汉字。 /// 必须带扩展名,且扩展名不区分大小写 /// /// 最多不超过16个标签,多个用逗号分隔。单个标签不超过32个字符或汉字。 /// /// 分类 /// public CreateUploadVideoResponse GetUploadVideoInfo(string title, string fileName, string tags, long cateId) { CreateUploadVideoRequest request = new CreateUploadVideoRequest(); request.Title = title; request.FileName = fileName; request.Tags = tags; request.CateId = cateId; request.WorkflowId = config.AutofitDefaultWorkflow; // 发起请求,并得到响应结果 return GetVodClient().GetAcsResponse(request); } /// /// 刷新视频上传凭证 /// /// /// public RefreshUploadVideoResponse RefreshUploadVideoInfo(string videoId) { RefreshUploadVideoRequest request = new RefreshUploadVideoRequest(); request.VideoId = videoId; // 发起请求,并得到 response return GetVodClient().GetAcsResponse(request); } /// /// 获取图片上传地址和凭证 /// /// /// 图片类型。取值范围:default(默认)cover(封面)控制台暂时只支持default类型的图片管理。 /// /// /// 图片文件扩展名。取值范围:png jpg jpeg gif 默认值:png /// public CreateUploadImageResponse GetUploadImageInfo(string imageType, string imageExt) { CreateUploadImageRequest request = new CreateUploadImageRequest(); request.ImageType = imageType; request.ImageExt = imageExt; // 发起请求,并得到 response return GetVodClient().GetAcsResponse(request); } /// /// 获取视频播放地址,8小时有效 /// /// /// public GetPlayInfoResponse GetPlayInfo(string videoId) { GetPlayInfoRequest request = new GetPlayInfoRequest(); request.VideoId = videoId; request.Definition = "AUTO,HD,SD,OD"; request.AuthTimeout = 3600 * 8; // 8小时 //request.Formats = "mp4"; //request.OutputType = "oss"; //request.PlayConfig = JsonConvert.SerializeObject(new { EncryptType = "Unencrypted" }); return GetVodClient().GetAcsResponse(request); } /// /// 获取视频播放地址(试看) /// /// /// 试看多少秒 /// public GetPlayInfoResponse GetPlayInfo(string videoId, int previewSeconds) { GetPlayInfoRequest request = new GetPlayInfoRequest(); request.VideoId = videoId; request.Definition = "AUTO,HD,SD,OD"; request.AuthTimeout = 3600 * 2; // 两小时 request.PlayConfig = JsonConvert.SerializeObject(new { PreviewTime = previewSeconds }); return GetVodClient().GetAcsResponse(request); } /// /// 获取视频播放凭证 /// /// /// public GetVideoPlayAuthResponse GetPlayAuth(string videoId) { GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest(); request.VideoId = videoId; request.AuthInfoTimeout = 3000; return GetVodClient().GetAcsResponse(request); } /// /// 获取视频信息 /// /// /// public GetVideoInfoResponse GetVideoInfo(string videoId) { GetVideoInfoRequest request = new GetVideoInfoRequest(); request.VideoId = videoId; return GetVodClient().GetAcsResponse(request); } /// /// 获取原始视频信息 /// /// /// public GetMezzanineInfoResponse GetMezzanineInfo(string videoId) { var request = new GetMezzanineInfoRequest(); request.ActionName = "GetMezzanineInfo"; request.AuthTimeout = 60 * 60 * 24 * 15L; request.VideoId = videoId; request.OutputType = "cdn"; return GetVodClient().GetAcsResponse(request); } /// /// 批量获取视频信息 /// /// /// 逗号分隔,最多支持20个 /// /// public GetVideoInfosResponse GetVideoInfos(string videoIds) { GetVideoInfosRequest request = new GetVideoInfosRequest(); request.VideoIds = videoIds; return GetVodClient().GetAcsResponse(request); } /// /// 批量删除视频 /// /// /// 逗号分隔,最多支持20个。 /// /// public DeleteVideoResponse DeleteVideos(string videoIds) { DeleteVideoRequest request = new DeleteVideoRequest(); request.VideoIds = videoIds; return GetVodClient().GetAcsResponse(request); } } }