AliVODHelper.cs 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. using Aliyun.Acs.Core;
  2. using Aliyun.Acs.Core.Profile;
  3. using Aliyun.Acs.vod.Model.V20170321;
  4. using Newtonsoft.Json;
  5. using Newtonsoft.Json.Linq;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace JiaZhiQuan.Common.AliVod
  11. {
  12. public class AliVODHelper
  13. {
  14. readonly VodConfig config;
  15. DefaultAcsClient client;
  16. public AliVODHelper(VodConfig config)
  17. {
  18. this.config = config;
  19. }
  20. public DefaultAcsClient GetVodClient()
  21. {
  22. //string regionId = "cn-shanghai";
  23. //IClientProfile profile = DefaultProfile.GetProfile(regionId, config.AccessKeyId, config.AccessKeySecret);
  24. //// DefaultProfile.AddEndpoint(regionId, regionId, "vod", "vod." + regionId + ".aliyuncs.com");
  25. //return new DefaultAcsClient(profile);
  26. if (client == null)
  27. {
  28. lock (this)
  29. {
  30. if (client == null)
  31. {
  32. string regionId = "cn-shanghai";
  33. IClientProfile profile = DefaultProfile.GetProfile(regionId, config.AccessKeyId, config.AccessKeySecret);
  34. // DefaultProfile.AddEndpoint(regionId, regionId, "vod", "vod." + regionId + ".aliyuncs.com");
  35. client = new DefaultAcsClient(profile);
  36. }
  37. return client;
  38. }
  39. }
  40. else
  41. {
  42. return client;
  43. }
  44. }
  45. /// <summary>
  46. /// 人工批量审核
  47. /// </summary>
  48. /// <param name="videoIds">最多20条</param>
  49. /// <param name="pass">是否通过</param>
  50. /// <param name="reason">如果未通过,给出理由</param>
  51. /// <param name="comment">审核备注</param>
  52. /// <returns></returns>
  53. public CreateAuditResponse ManualAudit(List<string> videoIds, bool pass, string reason, string comment)
  54. {
  55. var req = new CreateAuditRequest();
  56. JArray auditContents = new JArray();
  57. foreach (var videoId in videoIds)
  58. {
  59. JObject auditContent = new JObject();
  60. auditContent.Add("VideoId", videoId);
  61. auditContent.Add("Status", pass ? "Normal" : "Blocked");
  62. if (!pass && !string.IsNullOrEmpty(reason)) {
  63. auditContent.Add("Reason", reason);
  64. }
  65. if (!string.IsNullOrEmpty(comment))
  66. {
  67. auditContent.Add("Comment", comment);
  68. }
  69. auditContents.Add(auditContent);
  70. }
  71. req.AuditContent = auditContents.ToString();
  72. return GetVodClient().GetAcsResponse(req);
  73. }
  74. public CreateAuditResponse AutoManualAudit(string videoId)
  75. {
  76. var req = new CreateAuditRequest();
  77. JArray auditContents = new JArray();
  78. JObject auditContent = new JObject();
  79. auditContent.Add("VideoId", videoId);
  80. auditContent.Add("Status", "Normal");
  81. auditContent.Add("Comment", "机审通过,人工自动通过");
  82. auditContents.Add(auditContent);
  83. req.AuditContent = auditContents.ToString();
  84. return GetVodClient().GetAcsResponse(req);
  85. }
  86. /// <summary>
  87. /// 获取视频上传地址和凭证
  88. /// </summary>
  89. /// <param name="title">长度不超过128个字符或汉字。</param>
  90. /// <param name="fileName">必须带扩展名,且扩展名不区分大小写</param>
  91. /// <param name="tags">
  92. /// 最多不超过16个标签,多个用逗号分隔。单个标签不超过32个字符或汉字。
  93. /// </param>
  94. /// <param name="cateId">分类</param>
  95. /// <returns></returns>
  96. public CreateUploadVideoResponse GetUploadVideoInfo(string title, string fileName, string tags, long cateId)
  97. {
  98. CreateUploadVideoRequest request = new CreateUploadVideoRequest();
  99. request.Title = title;
  100. request.FileName = fileName;
  101. request.Tags = tags;
  102. request.CateId = cateId;
  103. request.WorkflowId = config.AutofitDefaultWorkflow;
  104. // 发起请求,并得到响应结果
  105. return GetVodClient().GetAcsResponse(request);
  106. }
  107. /// <summary>
  108. /// 刷新视频上传凭证
  109. /// </summary>
  110. /// <param name="videoId"></param>
  111. /// <param name="client"></param>
  112. public RefreshUploadVideoResponse RefreshUploadVideoInfo(string videoId)
  113. {
  114. RefreshUploadVideoRequest request = new RefreshUploadVideoRequest();
  115. request.VideoId = videoId;
  116. // 发起请求,并得到 response
  117. return GetVodClient().GetAcsResponse(request);
  118. }
  119. /// <summary>
  120. /// 获取图片上传地址和凭证
  121. /// </summary>
  122. /// <param name="imageType">
  123. /// 图片类型。取值范围:default(默认)cover(封面)控制台暂时只支持default类型的图片管理。
  124. /// </param>
  125. /// <param name="imageExt">
  126. /// 图片文件扩展名。取值范围:png jpg jpeg gif 默认值:png
  127. /// </param>
  128. public CreateUploadImageResponse GetUploadImageInfo(string imageType, string imageExt)
  129. {
  130. CreateUploadImageRequest request = new CreateUploadImageRequest();
  131. request.ImageType = imageType;
  132. request.ImageExt = imageExt;
  133. // 发起请求,并得到 response
  134. return GetVodClient().GetAcsResponse(request);
  135. }
  136. /// <summary>
  137. /// 获取视频播放地址,8小时有效
  138. /// </summary>
  139. /// <param name="videoId"></param>
  140. /// <returns></returns>
  141. public GetPlayInfoResponse GetPlayInfo(string videoId)
  142. {
  143. GetPlayInfoRequest request = new GetPlayInfoRequest();
  144. request.VideoId = videoId;
  145. request.Definition = "AUTO,HD,SD,OD";
  146. request.AuthTimeout = 3600 * 8; // 8小时
  147. //request.Formats = "mp4";
  148. //request.OutputType = "oss";
  149. //request.PlayConfig = JsonConvert.SerializeObject(new { EncryptType = "Unencrypted" });
  150. return GetVodClient().GetAcsResponse(request);
  151. }
  152. /// <summary>
  153. /// 获取视频播放地址(试看)
  154. /// </summary>
  155. /// <param name="videoId"></param>
  156. /// <param name="previewSeconds">试看多少秒</param>
  157. /// <returns></returns>
  158. public GetPlayInfoResponse GetPlayInfo(string videoId, int previewSeconds)
  159. {
  160. GetPlayInfoRequest request = new GetPlayInfoRequest();
  161. request.VideoId = videoId;
  162. request.Definition = "AUTO,HD,SD,OD";
  163. request.AuthTimeout = 3600 * 2; // 两小时
  164. request.PlayConfig = JsonConvert.SerializeObject(new
  165. {
  166. PreviewTime = previewSeconds
  167. });
  168. return GetVodClient().GetAcsResponse(request);
  169. }
  170. /// <summary>
  171. /// 获取视频播放凭证
  172. /// </summary>
  173. /// <param name="videoId"></param>
  174. /// <returns></returns>
  175. public GetVideoPlayAuthResponse GetPlayAuth(string videoId)
  176. {
  177. GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
  178. request.VideoId = videoId;
  179. request.AuthInfoTimeout = 3000;
  180. return GetVodClient().GetAcsResponse(request);
  181. }
  182. /// <summary>
  183. /// 获取视频信息
  184. /// </summary>
  185. /// <param name="videoId"></param>
  186. /// <returns></returns>
  187. public GetVideoInfoResponse GetVideoInfo(string videoId)
  188. {
  189. GetVideoInfoRequest request = new GetVideoInfoRequest();
  190. request.VideoId = videoId;
  191. return GetVodClient().GetAcsResponse(request);
  192. }
  193. /// <summary>
  194. /// 获取原始视频信息
  195. /// </summary>
  196. /// <param name="videoId"></param>
  197. /// <returns></returns>
  198. public GetMezzanineInfoResponse GetMezzanineInfo(string videoId)
  199. {
  200. var request = new GetMezzanineInfoRequest();
  201. request.ActionName = "GetMezzanineInfo";
  202. request.AuthTimeout = 60 * 60 * 24 * 15L;
  203. request.VideoId = videoId;
  204. request.OutputType = "cdn";
  205. return GetVodClient().GetAcsResponse(request);
  206. }
  207. /// <summary>
  208. /// 批量获取视频信息
  209. /// </summary>
  210. /// <param name="videoIds">
  211. /// 逗号分隔,最多支持20个
  212. /// </param>
  213. /// <returns></returns>
  214. public GetVideoInfosResponse GetVideoInfos(string videoIds)
  215. {
  216. GetVideoInfosRequest request = new GetVideoInfosRequest();
  217. request.VideoIds = videoIds;
  218. return GetVodClient().GetAcsResponse(request);
  219. }
  220. /// <summary>
  221. /// 批量删除视频
  222. /// </summary>
  223. /// <param name="videoIds">
  224. /// 逗号分隔,最多支持20个。
  225. /// </param>
  226. /// <returns></returns>
  227. public DeleteVideoResponse DeleteVideos(string videoIds)
  228. {
  229. DeleteVideoRequest request = new DeleteVideoRequest();
  230. request.VideoIds = videoIds;
  231. return GetVodClient().GetAcsResponse(request);
  232. }
  233. }
  234. }