视频审核增强版支持SDK方式调用和原生HTTPS方式调用。推荐您使用SDK接入,可免去签名验证以及Body格式构建等细节步骤。本文介绍视频审核增强版接入的方式。
步骤一:开通服务
访问开通内容审核增强版服务页面,开通视频审核增强版服务。接口接入使用后系统会按使用量自动出账,具体信息,请参见计费说明。您也可以购买按量抵扣资源包,资源包相较于后付费存在一定阶梯折扣,适合使用量级可预期和较大的用户。
开通视频审核增强版服务后,默认付费方式是按量后付费,且按照实际用量结算当日费用,不调用服务不收费。
步骤二:为RAM用户授权
在接入SDK或者API之前,您需要为RAM用户授权。您可以为RAM用户创建一个访问密钥(AccessKey)。在调用阿里云API时您需要使用AccessKey完成身份验证。获取方式,请参见获取AccessKey。
步骤三:安装并接入视频审核服务
目前支持的接入地域为:
地域 | 外网接入地址 | 内网接入地址 | 支持的服务 |
华东2(上海) | green-cip.cn-shanghai.aliyuncs.com | green-cip-vpc.cn-shanghai.aliyuncs.com | videoDetection、liveStreamDetection |
华北2(北京) | green-cip.cn-beijing.aliyuncs.com | green-cip-vpc.cn-beijing.aliyuncs.com | |
华东1(杭州) | green-cip.cn-hangzhou.aliyuncs.com | green-cip-vpc.cn-hangzhou.aliyuncs.com | |
华南1(深圳) | green-cip.cn-shenzhen.aliyuncs.com | green-cip-vpc.cn-shenzhen.aliyuncs.com | |
新加坡 | green-cip.ap-southeast-1.aliyuncs.com | green-cip-vpc.ap-southeast-1.aliyuncs.com | videoDetection_cb、liveStreamDetection_cb |
如果需要其他语言的SDK示例代码,您可以通过OpenAPI 开发者门户在线调试工具调试API接口,该工具会自动生成相应API的SDK调用示例代码。在线调试API接口如下:
阿里云SDK代码通过定义ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
环境变量来创建默认的访问凭证。调用接口时,程序直接访问凭证,读取您的访问密钥(即AccessKey)并自动完成鉴权。您在接入SDK代码示例之前,请先配置环境变量。具体操作,请参见身份验证配置。
API接口字段说明请参考视频文件审核增强版API和视频直播流审核增强版API。
Java SDK
支持Java 1.8及以上版本。
原始代码,请参见Java SDK源码或者Java SDK源码(OSS路径)。
支持以下三种类型的视频检测。
对公网可访问视频进行检测
使用场景
当需要审核的视频可通过公网链接访问时,视频审核增强版服务可通过视频URL获取文件后进行审核。
在pom.xml中添加如下依赖,就可以在Maven工程中使用SDK。
<dependency> <groupId>com.aliyun</groupId> <artifactId>green20220302</artifactId> <version>2.2.14</version> </dependency>
接入Java SDK。
提交视频检测任务代码示例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VideoModerationRequest; import com.aliyun.green20220302.models.VideoModerationResponse; import com.aliyun.green20220302.models.VideoModerationResponseBody; import com.aliyun.teaopenapi.models.Config; public class VideoModerationDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); //接入区域和地址请根据实际情况修改。 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); //连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); //读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); //设置http代理。 //config.setHttpProxy("http://10.10.xx.xx:xxxx"); //设置https代理。 //config.setHttpsProxy("https://10.10.xx.xx:xxxx"); Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); serviceParameters.put("url", "https://xxx.oss.aliyuncs.com/xxx.mp4"); VideoModerationRequest videoModerationRequest = new VideoModerationRequest(); // 检测类型:videoDetection videoModerationRequest.setService("videoDetection"); videoModerationRequest.setServiceParameters(serviceParameters.toJSONString()); try { VideoModerationResponse response = client.videoModeration(videoModerationRequest); if (response.getStatusCode() == 200) { VideoModerationResponseBody result = response.getBody(); System.out.println(JSON.toJSONString(result)); System.out.println("requestId = " + result.getRequestId()); System.out.println("code = " + result.getCode()); System.out.println("msg = " + result.getMessage()); Integer code = result.getCode(); if (200 == code) { VideoModerationResponseBody.VideoModerationResponseBodyData data = result.getData(); System.out.println("taskId = [" + data.getTaskId() + "]"); } else { System.out.println("video moderation not success. code:" + code); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
获取视频检测任务代码示例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VideoModerationResultRequest; import com.aliyun.green20220302.models.VideoModerationResultResponse; import com.aliyun.green20220302.models.VideoModerationResultResponseBody; import com.aliyun.teaopenapi.models.Config; public class VideoModerationResultDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); //接入区域和地址请根据实际情况修改。 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); //连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); //读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); //设置http代理。 //config.setHttpProxy("http://10.10.xx.xx:xxxx"); //设置https代理。 //config.setHttpsProxy("https://10.10.xx.xx:xxxx"); Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任务时返回的taskId。 serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****"); VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest(); // 检测类型:videoDetection videoModerationResultRequest.setService("videoDetection"); videoModerationResultRequest.setServiceParameters(serviceParameters.toJSONString()); try { VideoModerationResultResponse response = client.videoModerationResult(videoModerationResultRequest); if (response.getStatusCode() == 200) { VideoModerationResultResponseBody result = response.getBody(); System.out.println("requestId=" + result.getRequestId()); System.out.println("code=" + result.getCode()); System.out.println("msg=" + result.getMessage()); if (200 == result.getCode()) { VideoModerationResultResponseBody.VideoModerationResultResponseBodyData data = result.getData(); System.out.println("dataId = " + data.getDataId()); System.out.println("riskLevel = " + data.getRiskLevel()); System.out.println("audioResult = " + JSON.toJSONString(data.getAudioResult())); System.out.println("frameResult = " + JSON.toJSONString(data.getFrameResult())); } else { System.out.println("video moderation result not success. code:" + result.getCode()); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
取消视频直播流检测任务代码示例
import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VideoModerationCancelRequest; import com.aliyun.green20220302.models.VideoModerationCancelResponse; import com.aliyun.green20220302.models.VideoModerationCancelResponseBody; import com.aliyun.teaopenapi.models.Config; public class VideoModerationCancelDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); //接入区域和地址请根据实际情况修改 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); //连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); //读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); //设置http代理。 //config.setHttpProxy("http://xx.xx.xx.xx:xxxx"); //设置https代理。 //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx"); Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任务时返回的taskId serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****"); VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest(); videoModerationCancelRequest.setService("liveStreamDetection"); videoModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString()); try { VideoModerationCancelResponse response = client.videoModerationCancel(videoModerationCancelRequest); if (response.getStatusCode() == 200) { VideoModerationCancelResponseBody result = response.getBody(); System.out.println("requestId=" + result.getRequestId()); System.out.println("code=" + result.getCode()); System.out.println("msg=" + result.getMessage()); if (200 != result.getCode()) { System.out.println("video moderation cancel not success. code:" + result.getCode()); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
对本地视频进行检测
使用场景
当您需要审核的视频在本地机器且无公网访问链接,您可以将视频上传到内容安全提供的对象存储OSS Bucket中,视频审核增强版服务可直接访问对象存储OSS,获取到视频内容后进行审核。
在pom.xml中添加如下依赖,就可以在Maven工程中使用SDK。
<dependency> <groupId>com.aliyun</groupId> <artifactId>green20220302</artifactId> <version>2.2.14</version> </dependency>
安装OSS SDK:
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.16.3</version> </dependency>
接入Java SDK。
提交视频检测任务代码示例
import com.alibaba.fastjson.JSON; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.DescribeUploadTokenResponse; import com.aliyun.green20220302.models.DescribeUploadTokenResponseBody; import com.aliyun.green20220302.models.VideoModerationRequest; import com.aliyun.green20220302.models.VideoModerationResponse; import com.aliyun.green20220302.models.VideoModerationResponseBody; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.teaopenapi.models.Config; import com.aliyun.teautil.models.RuntimeOptions; import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.UUID; public class LocalVideoModeration { //服务是否部署在vpc上 public static boolean isVPC = false; //文件上传token endpoint->token public static Map<String, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData> tokenMap = new HashMap<>(); //上传文件请求客户端 public static OSS ossClient = null; /** * 创建请求客户端 * * @param accessKeyId * @param accessKeySecret * @param endpoint * @return * @throws Exception */ public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception { Config config = new Config(); config.setAccessKeyId(accessKeyId); config.setAccessKeySecret(accessKeySecret); // 接入区域和地址请根据实际情况修改 config.setEndpoint(endpoint); return new Client(config); } /** * 创建上传文件请求客户端 * * @param tokenData * @param isVPC */ public static void getOssClient(DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData, boolean isVPC) { //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 if (isVPC) { ossClient = new OSSClientBuilder().build(tokenData.ossInternalEndPoint, tokenData.getAccessKeyId(), tokenData.getAccessKeySecret(), tokenData.getSecurityToken()); } else { ossClient = new OSSClientBuilder().build(tokenData.ossInternetEndPoint, tokenData.getAccessKeyId(), tokenData.getAccessKeySecret(), tokenData.getSecurityToken()); } } /** * 上传文件 * * @param filePath * @param tokenData * @return * @throws Exception */ public static String uploadFile(String filePath, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData) throws Exception { String[] split = filePath.split("\\."); String objectName; if (split.length > 1) { objectName = tokenData.getFileNamePrefix() + UUID.randomUUID() + "." + split[split.length - 1]; } else { objectName = tokenData.getFileNamePrefix() + UUID.randomUUID(); } PutObjectRequest putObjectRequest = new PutObjectRequest(tokenData.getBucketName(), objectName, new File(filePath)); ossClient.putObject(putObjectRequest); return objectName; } public static VideoModerationResponse invokeFunction(String accessKeyId, String accessKeySecret, String endpoint) throws Exception { //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 Client client = createClient(accessKeyId, accessKeySecret, endpoint); RuntimeOptions runtime = new RuntimeOptions(); //本地文件的完整路径,例如D:\localPath\exampleFile.mp4。 String filePath = "D:\localPath\exampleFile.mp4"; //获取文件上传token if (tokenMap.get(endpoint) == null || tokenMap.get(endpoint).expiration <= System.currentTimeMillis() / 1000) { DescribeUploadTokenResponse tokenResponse = client.describeUploadToken(); tokenMap.put(endpoint, tokenResponse.getBody().getData()); } //上传文件请求客户端 getOssClient(tokenMap.get(endpoint), isVPC); //上传文件 String objectName = uploadFile(filePath, tokenMap.get(endpoint)); // 检测参数构造。 Map<String, String> serviceParameters = new HashMap<>(); //文件上传信息 serviceParameters.put("ossBucketName", tokenMap.get(endpoint).getBucketName()); serviceParameters.put("ossObjectName", objectName); serviceParameters.put("dataId", UUID.randomUUID().toString()); VideoModerationRequest request = new VideoModerationRequest(); // 检测类型:videoDetection request.setService("videoDetection"); request.setServiceParameters(JSON.toJSONString(serviceParameters)); VideoModerationResponse response = null; try { response = client.videoModerationWithOptions(request, runtime); } catch (Exception e) { e.printStackTrace(); } return response; } public static void main(String[] args) throws Exception { /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ String accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID"; String accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret"; // 接入区域和地址请根据实际情况修改。 VideoModerationResponse response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.cn-shanghai.aliyuncs.com"); try { // 自动路由。 if (response != null) { //区域切换到cn-beijing。 if (500 == response.getStatusCode() || (response.getBody() != null && 500 == (response.getBody().getCode()))) { // 接入区域和地址请根据实际情况修改。 response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.cn-beijing.aliyuncs.com"); } } // 打印检测结果。 if (response != null) { if (response.getStatusCode() == 200) { VideoModerationResponseBody body = response.getBody(); System.out.println(JSON.toJSONString(body)); System.out.println("requestId = " + body.getRequestId()); System.out.println("code = " + body.getCode()); System.out.println("msg = " + body.getMessage()); Integer code = body.getCode(); if (200 == code) { VideoModerationResponseBody.VideoModerationResponseBodyData data = body.getData(); System.out.println("taskId = [" + data.getTaskId() + "]"); } else { System.out.println("video moderation not success. code:" + code); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } } catch (Exception e) { e.printStackTrace(); } } }
获取视频检测任务代码示例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VideoModerationResultRequest; import com.aliyun.green20220302.models.VideoModerationResultResponse; import com.aliyun.green20220302.models.VideoModerationResultResponseBody; import com.aliyun.teaopenapi.models.Config; public class VideoModerationResultDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); //接入区域和地址请根据实际情况修改。 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); //连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); //读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); //设置http代理。 //config.setHttpProxy("http://10.10.xx.xx:xxxx"); //设置https代理。 //config.setHttpsProxy("https://10.10.xx.xx:xxxx"); Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任务时返回的taskId。 serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****"); VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest(); // 检测类型:videoDetection videoModerationResultRequest.setService("videoDetection"); videoModerationResultRequest.setServiceParameters(serviceParameters.toJSONString()); try { VideoModerationResultResponse response = client.videoModerationResult(videoModerationResultRequest); if (response.getStatusCode() == 200) { VideoModerationResultResponseBody result = response.getBody(); System.out.println("requestId=" + result.getRequestId()); System.out.println("code=" + result.getCode()); System.out.println("msg=" + result.getMessage()); if (200 == result.getCode()) { VideoModerationResultResponseBody.VideoModerationResultResponseBodyData data = result.getData(); System.out.println("dataId = " + data.getDataId()); System.out.println("riskLevel = " + data.getRiskLevel()); System.out.println("audioResult = " + JSON.toJSONString(data.getAudioResult())); System.out.println("frameResult = " + JSON.toJSONString(data.getFrameResult())); } else { System.out.println("video moderation result not success. code:" + result.getCode()); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
取消视频直播流检测任务代码示例
import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VideoModerationCancelRequest; import com.aliyun.green20220302.models.VideoModerationCancelResponse; import com.aliyun.green20220302.models.VideoModerationCancelResponseBody; import com.aliyun.teaopenapi.models.Config; public class VideoModerationCancelDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); //接入区域和地址请根据实际情况修改 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); //连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); //读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); //设置http代理。 //config.setHttpProxy("http://xx.xx.xx.xx:xxxx"); //设置https代理。 //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx"); Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任务时返回的taskId serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****"); VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest(); videoModerationCancelRequest.setService("liveStreamDetection"); videoModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString()); try { VideoModerationCancelResponse response = client.videoModerationCancel(videoModerationCancelRequest); if (response.getStatusCode() == 200) { VideoModerationCancelResponseBody result = response.getBody(); System.out.println("requestId=" + result.getRequestId()); System.out.println("code=" + result.getCode()); System.out.println("msg=" + result.getMessage()); if (200 != result.getCode()) { System.out.println("video moderation cancel not success. code:" + result.getCode()); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
对OSS视频进行检测
使用场景
如果您需要审核的视频文件已经存储在阿里云对象存储OSS中,您可授权创建服务角色,允许内容安全服务访问对象存储OSS。视频审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
在pom.xml中添加如下依赖,就可以在Maven工程中使用SDK。
<dependency> <groupId>com.aliyun</groupId> <artifactId>green20220302</artifactId> <version>2.2.14</version> </dependency>
接入Java SDK。
提交视频检测任务代码示例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VideoModerationRequest; import com.aliyun.green20220302.models.VideoModerationResponse; import com.aliyun.green20220302.models.VideoModerationResponseBody; import com.aliyun.teaopenapi.models.Config; public class VideoModerationDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); //接入区域和地址请根据实际情况修改。 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); //连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); //读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); //设置http代理。 //config.setHttpProxy("http://10.10.xx.xx:xxxx"); //设置https代理。 //config.setHttpsProxy("https://10.10.xx.xx:xxxx"); Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); serviceParameters.put("ossBucketName", "bucket_01"); serviceParameters.put("ossObjectName", "20240307/07/28/test.flv"); serviceParameters.put("ossRegionId", "cn-shanghai"); VideoModerationRequest videoModerationRequest = new VideoModerationRequest(); // 检测类型:videoDetection videoModerationRequest.setService("videoDetection"); videoModerationRequest.setServiceParameters(serviceParameters.toJSONString()); try { VideoModerationResponse response = client.videoModeration(videoModerationRequest); if (response.getStatusCode() == 200) { VideoModerationResponseBody result = response.getBody(); System.out.println(JSON.toJSONString(result)); System.out.println("requestId = " + result.getRequestId()); System.out.println("code = " + result.getCode()); System.out.println("msg = " + result.getMessage()); Integer code = result.getCode(); if (200 == code) { VideoModerationResponseBody.VideoModerationResponseBodyData data = result.getData(); System.out.println("taskId = [" + data.getTaskId() + "]"); } else { System.out.println("video moderation not success. code:" + code); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
获取视频检测任务代码示例
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VideoModerationResultRequest; import com.aliyun.green20220302.models.VideoModerationResultResponse; import com.aliyun.green20220302.models.VideoModerationResultResponseBody; import com.aliyun.teaopenapi.models.Config; public class VideoModerationResultDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); //接入区域和地址请根据实际情况修改。 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); //连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); //读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); //设置http代理。 //config.setHttpProxy("http://10.10.xx.xx:xxxx"); //设置https代理。 //config.setHttpsProxy("https://10.10.xx.xx:xxxx"); Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任务时返回的taskId。 serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****"); VideoModerationResultRequest videoModerationResultRequest = new VideoModerationResultRequest(); // 检测类型:videoDetection videoModerationResultRequest.setService("videoDetection"); videoModerationResultRequest.setServiceParameters(serviceParameters.toJSONString()); try { VideoModerationResultResponse response = client.videoModerationResult(videoModerationResultRequest); if (response.getStatusCode() == 200) { VideoModerationResultResponseBody result = response.getBody(); System.out.println("requestId=" + result.getRequestId()); System.out.println("code=" + result.getCode()); System.out.println("msg=" + result.getMessage()); if (200 == result.getCode()) { VideoModerationResultResponseBody.VideoModerationResultResponseBodyData data = result.getData(); System.out.println("dataId = " + data.getDataId()); System.out.println("riskLevel = " + data.getRiskLevel()); System.out.println("audioResult = " + JSON.toJSONString(data.getAudioResult())); System.out.println("frameResult = " + JSON.toJSONString(data.getFrameResult())); } else { System.out.println("video moderation result not success. code:" + result.getCode()); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
取消视频直播流检测任务代码示例
import com.alibaba.fastjson.JSONObject; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.VideoModerationCancelRequest; import com.aliyun.green20220302.models.VideoModerationCancelResponse; import com.aliyun.green20220302.models.VideoModerationCancelResponseBody; import com.aliyun.teaopenapi.models.Config; public class VideoModerationCancelDemo { public static void main(String[] args) throws Exception { Config config = new Config(); /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 常见获取环境变量方式: * 方式一: * 获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); * 方式二: * 获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID"); config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret"); //接入区域和地址请根据实际情况修改 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); //连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); //读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); //设置http代理。 //config.setHttpProxy("http://xx.xx.xx.xx:xxxx"); //设置https代理。 //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx"); Client client = new Client(config); JSONObject serviceParameters = new JSONObject(); // 提交任务时返回的taskId serviceParameters.put("taskId", "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****"); VideoModerationCancelRequest videoModerationCancelRequest = new VideoModerationCancelRequest(); videoModerationCancelRequest.setService("liveStreamDetection"); videoModerationCancelRequest.setServiceParameters(serviceParameters.toJSONString()); try { VideoModerationCancelResponse response = client.videoModerationCancel(videoModerationCancelRequest); if (response.getStatusCode() == 200) { VideoModerationCancelResponseBody result = response.getBody(); System.out.println("requestId=" + result.getRequestId()); System.out.println("code=" + result.getCode()); System.out.println("msg=" + result.getMessage()); if (200 != result.getCode()) { System.out.println("video moderation cancel not success. code:" + result.getCode()); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
Python SDK
支持Python 3.6及以上版本。
原始代码,请参见Python SDK源码。
支持以下三种类型的视频检测。
对公网可访问视频进行检测
使用场景
当需要审核的视频可通过公网链接访问时,视频审核增强版服务可通过视频URL获取文件后进行审核。
执行如下命令安装pip。
pip install alibabacloud_green20220302==2.2.14
接入Python SDK。
提交视频检测任务代码示例
#encoding:utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接时超时时间,单位毫秒(ms)。 connect_timeout=3000, # 读取时超时时间,单位毫秒(ms)。 read_timeout=6000, # 接入区域和地址请根据实际情况修改。 region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(config) serviceParameters = { 'url': 'https://xxx.oss.aliyuncs.com/xxx.mp4' } videoModerationRequest = models.VideoModerationRequest( # 检测类型:videoDetection service='videoDetection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.video_moderation(videoModerationRequest) if response.status_code == 200: # 调用成功。 # 获取审核结果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
获取视频检测任务结果
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接时超时时间,单位毫秒(ms)。 connect_timeout=3000, # 读取时超时时间,单位毫秒(ms)。 read_timeout=6000, # 接入区域和地址请根据实际情况修改。 region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(config) # 提交任务时返回的taskId。 serviceParameters = { "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****' } videoModerationResultRequest = models.VideoModerationResultRequest( # 检测类型:videoDetection service='videoDetection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.video_moderation_result(videoModerationResultRequest) if response.status_code == 200: # 调用成功。 # 获取审核结果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
取消视频直播流检测任务代码示例
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接超时时间 单位毫秒(ms) connect_timeout=10000, # 读超时时间 单位毫秒(ms) read_timeout=3000, region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(config) # 提交任务时返回的taskId serviceParameters = { "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****' } videoModerationCancelRequest = models.VideoModerationCancelRequest( # 检测类型 service='liveStreamDetection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.video_moderation_cancel(videoModerationCancelRequest) if response.status_code == 200: # 调用成功 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
对本地视频进行检测
使用场景
当您需要审核的视频在本地机器且无公网访问链接,您可以将视频上传到内容安全提供的对象存储OSS Bucket中,视频审核增强版服务可直接访问对象存储OSS,获取到视频内容后进行审核。
执行如下命令安装pip。
pip install alibabacloud_green20220302==2.2.14
安装OSS SDK:
pip install oss2
接入Python SDK。
提交视频检测任务代码示例
from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config from alibabacloud_tea_util.client import Client as UtilClient from alibabacloud_tea_util import models as util_models import json import uuid import oss2 import time configs = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接时超时时间,单位毫秒(ms)。 connect_timeout=10000, # 读取时超时时间,单位毫秒(ms)。 read_timeout=10000, # 接入区域和地址请根据实际情况修改。 region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) # 注意:此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 client = Client(configs) bucket = None upload_token = None def get_oss_client(is_vpc): global upload_token global bucket if (upload_token == None) or int(upload_token.expiration) <= int(time.time()): response = client.describe_upload_token() upload_token = response.body.data auth = oss2.StsAuth(upload_token.access_key_id, upload_token.access_key_secret, upload_token.security_token) end_point = upload_token.oss_internet_end_point if (is_vpc): end_point = upload_token.oss_internal_end_point bucket = oss2.Bucket(auth, end_point, upload_token.bucket_name) def upload_file(file_name, is_vpc): get_oss_client(is_vpc) object_name = upload_token.file_name_prefix + str(uuid.uuid4()) + '.' + file_name.split('.')[-1] bucket.put_object_from_file(object_name, file_name) return object_name def video_moderation_by_local_file(file_path, is_vpc): # 1. 上传文件 object_name = upload_file(file_path, is_vpc) # 2. 视频检测 service_parameters = { 'dataId': str(uuid.uuid4()), 'ossBucketName': upload_token.bucket_name, 'ossObjectName': object_name } video_moderation_request = models.VideoModerationRequest( # 检测类型: videoDetection 。 service='videoDetection', service_parameters=json.dumps(service_parameters) ) # 创建RuntimeObject实例并设置运行参数。 runtime = util_models.RuntimeOptions() runtime.read_timeout = 10000 runtime.connect_timeout = 10000 try: global client response = client.video_moderation_with_options(video_moderation_request, runtime) # 自动路由。 if UtilClient.equal_number(500, response.status_code) or not response or not response.body or 200 != response.body.code: # 服务端错误,区域切换到cn-beijing。 config.region_id = 'cn-beijing' config.endpoint = 'green-cip.cn-beijing.aliyuncs.com' client = Client(configs) response = client.video_moderation_with_options(video_moderation_request, runtime) if response.status_code == 200: # 调用成功。 # 获取审核结果。 result = response.body print('response success. result:{}'.format(result)) if result.code == 200: result_data = result.data print('result: {}'.format(result_data)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err) if __name__ == '__main__': # 本地文件路径 file_path = 'D:/test/video/b652.mp4' # 是否在VPC上部署 is_vpc = False # True video_moderation_by_local_file(file_path, is_vpc)
获取视频检测任务结果
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接时超时时间,单位毫秒(ms)。 connect_timeout=3000, # 读取时超时时间,单位毫秒(ms)。 read_timeout=6000, # 接入区域和地址请根据实际情况修改。 region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(config) # 提交任务时返回的taskId。 serviceParameters = { "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****' } videoModerationResultRequest = models.VideoModerationResultRequest( # 检测类型:videoDetection service='videoDetection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.video_moderation_result(videoModerationResultRequest) if response.status_code == 200: # 调用成功。 # 获取审核结果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
取消视频直播流检测任务代码示例
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接超时时间 单位毫秒(ms) connect_timeout=10000, # 读超时时间 单位毫秒(ms) read_timeout=3000, region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(config) # 提交任务时返回的taskId serviceParameters = { "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****' } videoModerationCancelRequest = models.VideoModerationCancelRequest( # 检测类型 service='liveStreamDetection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.video_moderation_cancel(videoModerationCancelRequest) if response.status_code == 200: # 调用成功 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
对OSS视频进行检测
使用场景
如果您需要审核的视频文件已经存储在阿里云对象存储OSS中,您可授权创建服务角色,允许内容安全服务访问对象存储OSS。视频审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
执行如下命令安装pip。
pip install alibabacloud_green20220302==2.2.14
接入Python SDK。
提交视频检测任务代码示例
#encoding:utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接时超时时间,单位毫秒(ms)。 connect_timeout=3000, # 读取时超时时间,单位毫秒(ms)。 read_timeout=6000, # 接入区域和地址请根据实际情况修改。 region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(config) serviceParameters = { 'ossBucketName': 'bucket_01', 'ossObjectName': '20240307/07/28/test.flv', 'ossRegionId': 'cn-shanghai' } videoModerationRequest = models.VideoModerationRequest( # 检测类型:videoDetection service='videoDetection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.video_moderation(videoModerationRequest) if response.status_code == 200: # 调用成功。 # 获取审核结果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
获取视频检测任务结果
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接时超时时间,单位毫秒(ms)。 connect_timeout=3000, # 读取时超时时间,单位毫秒(ms)。 read_timeout=6000, # 接入区域和地址请根据实际情况修改。 region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(config) # 提交任务时返回的taskId。 serviceParameters = { "taskId": 'vi_f_11w5THcbVYctjdxz2C0Afa-1x****' } videoModerationResultRequest = models.VideoModerationResultRequest( # 检测类型:videoDetection service='videoDetection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.video_moderation_result(videoModerationResultRequest) if response.status_code == 200: # 调用成功。 # 获取审核结果。 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
取消视频直播流检测任务代码示例
# coding=utf-8 # python version >= 3.6 from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config import json config = Config( # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 # 常见获取环境变量方式: # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建议从环境变量中获取RAM用户AccessKey ID', access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret', # 连接超时时间 单位毫秒(ms) connect_timeout=10000, # 读超时时间 单位毫秒(ms) read_timeout=3000, region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(config) # 提交任务时返回的taskId serviceParameters = { "taskId": 'vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****' } videoModerationCancelRequest = models.VideoModerationCancelRequest( # 检测类型 service='liveStreamDetection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.video_moderation_cancel(videoModerationCancelRequest) if response.status_code == 200: # 调用成功 result = response.body print('response success. result:{}'.format(result)) else: print('response not success. status:{} ,result:{}'.format(response.status_code, response)) except Exception as err: print(err)
PHP SDK
支持PHP 5.6及以上版本。
原始代码,请参见PHP SDK源码。
支持以下三种类型的视频检测。
对公网可访问视频进行检测
使用场景
当需要审核的视频可通过公网链接访问时,视频审核增强版服务可通过视频URL获取文件后进行审核。
执行如下命令引入相关依赖。
composer require alibabacloud/green-20220302 2.2.14
接入PHP SDK。
提交视频检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new VideoModerationRequest(); // 检测类型: videoDetection 视频文件检测, liveStreamDetection 视频直播流检测 $request->service = "videoDetection"; $serviceParameters = array("url" => "https://xxx.oss.aliyuncs.com/xxx.mp4"); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->videoModerationWithOptions($request, $runtime); print_r($response->body); if (200 != $response->statusCode) { print_r("response not success. code:" . $response->statusCode); return; } $body = $response->body; print_r("requestId = " . $body->requestId . "\n"); print_r("code = " . $body->code . "\n"); print_r("message = " . $body->message . "\n"); if (200 != $body->code) { print_r("video moderation not success. code:" . $body->code); } $data = $body->data; print_r("taskId = " . $data->taskId); } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
获取视频检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationResultRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new VideoModerationResultRequest(); // 检测类型: videoDetection 视频文件检测, liveStreamDetection 视频直播流检测 $request->service = "videoDetection"; $serviceParameters = array("taskId" => "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****"); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->videoModerationResultWithOptions($request, $runtime); if (200 != $response->statusCode) { print_r("response not success. code:" . $response->statusCode); return; } $body = $response->body; print_r("requestId = " . $body->requestId . "\n"); print_r("code = " . $body->code . "\n"); print_r("message = " . $body->message . "\n"); if (280 == $body->code) { print_r("processing video moderation. code:" . $body->code); return; } if (200 != $body->code) { print_r("video moderation result not success. code:" . $body->code); return; } $data = $body->data; print_r("liveId = " . $data->liveId . "\n"); print_r("dataId = " . $data->dataId . "\n"); print_r("riskLevel = " . $data->RiskLevel . "\n"); print_r("audioResult = " . json_encode($data->audioResult) . "\n"); print_r("frameResult = " . json_encode($data->frameResult) . "\n"); } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
取消视频直播流检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationCancelRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new VideoModerationCancelRequest(); // 检测类型: videoDetection 视频文件检测, liveStreamDetection 视频直播流检测 $request->service = "liveStreamDetection"; $serviceParameters = array('taskId' => 'vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****'); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->videoModerationCancel($request, $runtime); print_r($response->body); if (200 == $response->statusCode) { $body = $response->body; print_r("requestId = " . $body->requestId); print_r("code = " . $body->code); print_r("message = " . $body->message); if (200 != $body->code) { print_r("video moderation cancel not success. code:" . $body->code); } } else { print_r("response not success. code:" . $response->statusCode); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
对本地视频进行检测
使用场景
当您需要审核的视频在本地机器且无公网访问链接,您可以将视频上传到内容安全提供的对象存储OSS Bucket中,视频审核增强版服务可直接访问对象存储OSS,获取到视频内容后进行审核。
执行如下命令引入相关依赖。
composer require alibabacloud/green-20220302 2.2.14
安装OSS SDK:
composer require aliyuncs/oss-sdk-php
接入PHP SDK。
提交视频检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationResponse; use AlibabaCloud\Tea\Utils\Utils; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationRequest; use OSS\OssClient; // 服务是否部署在VPC上 $isVPC = false; // 文件上传token $tokenArray = array(); // 文件上传请求客户端 $ossClient = null; /** * 创建请求客户端 * @param $accessKeyId * @param $accessKeySecret * @param $endpoint * @return Green */ function create_client($accessKeyId, $accessKeySecret, $endpoint): Green { $config = new Config([ "accessKeyId" => $accessKeyId, "accessKeySecret" => $accessKeySecret, // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => $endpoint, ]); return new Green($config); } /** * 创建文件上传客户端 * @param $tokenData * @return void */ function create_upload_client($tokenData): void { global $isVPC; global $ossClient; // 注意:此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 if ($isVPC) { $ossClient = new OssClient($tokenData->accessKeyId, $tokenData->accessKeySecret, $tokenData->ossInternalEndPoint, false, $tokenData->securityToken); } else { $ossClient = new OssClient($tokenData->accessKeyId, $tokenData->accessKeySecret, $tokenData->ossInternetEndPoint, false, $tokenData->securityToken); } } /** * 上传文件 * @param $fileName * @param $tokenData * @return string * @throws \OSS\Core\OssException */ function upload_file($filePath, $tokenData): string { global $ossClient; //初始化OssClient create_upload_client($tokenData); $split = explode(".", $filePath); if (count($split) > 1) { $objectName = $tokenData->fileNamePrefix . uniqid() . "." . explode(".", $filePath)[count($split) - 1]; } else { $objectName = $tokenData->fileNamePrefix . uniqid(); } //上传文件 $ossClient->uploadFile($tokenData->bucketName, $objectName, $filePath); return $objectName; } /** * 提交检测任务 * @param $accessKeyId * @param $accessKeySecret * @param $endpoint * @return VideoModerationResponse * @throws \OSS\Core\OssException */ function invoke($accessKeyId, $accessKeySecret, $endpoint): VideoModerationResponse { global $tokenArray; // 注意:此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = create_client($accessKeyId, $accessKeySecret, $endpoint); // 创建RuntimeObject实例并设置运行参数。 $runtime = new RuntimeOptions([]); // 本地文件的完整路径,例如D:\\localPath\\exampleFile.mp4。 $filePath = "D:\\test\\video\\b652.mp4"; //获取文件上传token if (!isset($tokenArray[$endpoint]) || $tokenArray[$endpoint]->expiration <= time()) { $token = $client->describeUploadToken(); $tokenArray[$endpoint] = $token->body->data; } // 上传文件 $objectName = upload_file($filePath, $tokenArray[$endpoint]); // 检测参数构造。 $request = new VideoModerationRequest(); // 示例:videoDetection $request->service = "videoDetection"; // 待检测文件Oss信息。 $serviceParameters = array( 'ossObjectName' => $objectName, 'ossBucketName' => $tokenArray[$endpoint]->bucketName, 'dataId' => uniqid()); $request->serviceParameters = json_encode($serviceParameters); // 提交检测 return $client->videoModerationWithOptions($request, $runtime); } /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ $accessKeyId = '建议从环境变量中获取RAM用户AccessKey ID'; $accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret'; // 接入区域和地址请根据实际情况修改 $endpoint = "green-cip.cn-shanghai.aliyuncs.com"; try { $response = invoke($accessKeyId, $accessKeySecret, $endpoint); // 自动路由。 if (Utils::equalNumber(500, $response->statusCode) || Utils::equalNumber(500, $response->body->code)) { //区域切换到cn-beijing。 $endpoint = "green-cip.cn-beijing.aliyuncs.com"; $response = invoke($accessKeyId, $accessKeySecret, $endpoint); } print_r(json_encode($response->body, JSON_UNESCAPED_UNICODE)); } catch (Exception $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
获取视频检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationResultRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new VideoModerationResultRequest(); // 检测类型: videoDetection 视频文件检测, liveStreamDetection 视频直播流检测 $request->service = "videoDetection"; $serviceParameters = array("taskId" => "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****"); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->videoModerationResultWithOptions($request, $runtime); if (200 != $response->statusCode) { print_r("response not success. code:" . $response->statusCode); return; } $body = $response->body; print_r("requestId = " . $body->requestId . "\n"); print_r("code = " . $body->code . "\n"); print_r("message = " . $body->message . "\n"); if (280 == $body->code) { print_r("processing video moderation. code:" . $body->code); return; } if (200 != $body->code) { print_r("video moderation result not success. code:" . $body->code); return; } $data = $body->data; print_r("liveId = " . $data->liveId . "\n"); print_r("dataId = " . $data->dataId . "\n"); print_r("riskLevel = " . $data->RiskLevel . "\n"); print_r("audioResult = " . json_encode($data->audioResult) . "\n"); print_r("frameResult = " . json_encode($data->frameResult) . "\n"); } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
取消视频直播流检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationCancelRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new VideoModerationCancelRequest(); // 检测类型: videoDetection 视频文件检测, liveStreamDetection 视频直播流检测 $request->service = "liveStreamDetection"; $serviceParameters = array('taskId' => 'vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****'); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->videoModerationCancel($request, $runtime); print_r($response->body); if (200 == $response->statusCode) { $body = $response->body; print_r("requestId = " . $body->requestId); print_r("code = " . $body->code); print_r("message = " . $body->message); if (200 != $body->code) { print_r("video moderation cancel not success. code:" . $body->code); } } else { print_r("response not success. code:" . $response->statusCode); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
对OSS视频进行检测
使用场景
如果您需要审核的视频文件已经存储在阿里云对象存储OSS中,您可授权创建服务角色,允许内容安全服务访问对象存储OSS。视频审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
执行如下命令引入相关依赖。
composer require alibabacloud/green-20220302 2.2.14
接入PHP SDK。
提交视频检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new VideoModerationRequest(); // 检测类型: videoDetection 视频文件检测, liveStreamDetection 视频直播流检测 $request->service = "videoDetection"; $serviceParameters = array( // 待检测文件。 示例:video/001.mp4 'ossObjectName' => 'video/001.mp4', // 待检测文件所在bucket的区域。 示例:cn-shanghai 'ossRegionId' => 'cn-shanghai', // 待检测文件所在bucket名称。示例:bucket001 'ossBucketName' => 'bucket001', // 数据唯一标识。 'dataId' => uniqid()); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->videoModerationWithOptions($request, $runtime); print_r($response->body); if (200 != $response->statusCode) { print_r("response not success. code:" . $response->statusCode); return; } $body = $response->body; print_r("requestId = " . $body->requestId . "\n"); print_r("code = " . $body->code . "\n"); print_r("message = " . $body->message . "\n"); if (200 != $body->code) { print_r("video moderation not success. code:" . $body->code); } $data = $body->data; print_r("taskId = " . $data->taskId); } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
获取视频检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationResultRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new VideoModerationResultRequest(); // 检测类型: videoDetection 视频文件检测, liveStreamDetection 视频直播流检测 $request->service = "videoDetection"; $serviceParameters = array("taskId" => "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****"); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->videoModerationResultWithOptions($request, $runtime); if (200 != $response->statusCode) { print_r("response not success. code:" . $response->statusCode); return; } $body = $response->body; print_r("requestId = " . $body->requestId . "\n"); print_r("code = " . $body->code . "\n"); print_r("message = " . $body->message . "\n"); if (280 == $body->code) { print_r("processing video moderation. code:" . $body->code); return; } if (200 != $body->code) { print_r("video moderation result not success. code:" . $body->code); return; } $data = $body->data; print_r("liveId = " . $data->liveId . "\n"); print_r("dataId = " . $data->dataId . "\n"); print_r("riskLevel = " . $data->RiskLevel . "\n"); print_r("audioResult = " . json_encode($data->audioResult) . "\n"); print_r("frameResult = " . json_encode($data->frameResult) . "\n"); } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
取消视频直播流检测任务代码示例
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\VideoModerationCancelRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new VideoModerationCancelRequest(); // 检测类型: videoDetection 视频文件检测, liveStreamDetection 视频直播流检测 $request->service = "liveStreamDetection"; $serviceParameters = array('taskId' => 'vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****'); $request->serviceParameters = json_encode($serviceParameters); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->videoModerationCancel($request, $runtime); print_r($response->body); if (200 == $response->statusCode) { $body = $response->body; print_r("requestId = " . $body->requestId); print_r("code = " . $body->code); print_r("message = " . $body->message); if (200 != $body->code) { print_r("video moderation cancel not success. code:" . $body->code); } } else { print_r("response not success. code:" . $response->statusCode); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
Go SDK
支持以下三种类型的视频检测。
对公网可访问视频进行检测
使用场景
当需要审核的视频可通过公网链接访问时,视频审核增强版服务可通过视频URL获取文件后进行审核。
执行如下命令引入相关依赖。
go git clone --branch v2.2.15 github.com/alibabacloud-go/green-20220302/v2
接入Go SDK。
提交视频检测任务代码示例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green20220302 "github.com/alibabacloud-go/green-20220302/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green20220302.NewClient(config) if _err != nil { panic(_err) } // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) runtime.ConnectTimeout = tea.Int(10000) serviceParameters, _ := json.Marshal( map[string]interface{}{ "url": "https://xxx.oss.aliyuncs.com/xxx.mp4", }, ) request := green20220302.VideoModerationRequest{ Service: tea.String("videoDetection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VideoModerationWithOptions(&request, runtime) if _err != nil { panic(_err) } if *result.StatusCode != http.StatusOK { fmt.Printf("response not success. status:%d\n", *result.StatusCode) return } body := result.Body fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message) if *body.Code != http.StatusOK { fmt.Printf("video moderation not success. code:%d\n", *body.Code) return } data := body.Data fmt.Printf("video moderation taskId:%s\n", *data.TaskId) }
获取视频检测任务结果
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green20220302 "github.com/alibabacloud-go/green-20220302/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green20220302.NewClient(config) if _err != nil { panic(_err) } // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) runtime.ConnectTimeout = tea.Int(10000) serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****", }, ) request := green20220302.VideoModerationResultRequest{ Service: tea.String("videoDetection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VideoModerationResultWithOptions(&request, runtime) if _err != nil { panic(_err) } if *result.StatusCode != http.StatusOK { fmt.Printf("response not success. status:%d\n", *result.StatusCode) return } body := result.Body fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message) if *body.Code == 280 { fmt.Printf("processing video moderation. code:%d\n", *body.Code) return } if *body.Code != http.StatusOK { fmt.Printf("video moderation result not success. code:%d\n", *body.Code) return } data := body.Data fmt.Printf("video moderation result:%s\n", data) fmt.Printf("video moderation result audioResult:%s\n", data.AudioResult) fmt.Printf("video moderation result frameResult:%s\n", data.FrameResult) }
取消视频直播流检测任务代码示例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green20220302 "github.com/alibabacloud-go/green-20220302/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green20220302.NewClient(config) if _err != nil { panic(_err) } // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) runtime.ConnectTimeout = tea.Int(10000) serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****", }, ) request := green20220302.VideoModerationCancelRequest{ Service: tea.String("liveStreamDetection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VideoModerationCancelWithOptions(&request, runtime) if _err != nil { panic(_err) } if *result.StatusCode != http.StatusOK { fmt.Printf("response not success. status:%d\n", *result.StatusCode) return } body := result.Body fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message) if *body.Code != http.StatusOK { fmt.Printf("video moderation cancel not success. code:%d\n", *body.Code) } }
对本地视频进行检测
使用场景
当您需要审核的视频在本地机器且无公网访问链接,您可以将视频上传到内容安全提供的对象存储OSS Bucket中,视频审核增强版服务可直接访问对象存储OSS,获取到视频内容后进行审核。
执行如下命令引入相关依赖。
go git clone --branch v2.2.15 github.com/alibabacloud-go/green-20220302/v2
安装OSS SDK:
go get github.com/aliyun/aliyun-oss-go-sdk/oss
接入Go SDK。
提交视频检测任务代码示例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green20220302 "github.com/alibabacloud-go/green-20220302/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/google/uuid" "net/http" "os" "strings" "time" ) //文件上传token var TokenMap =make(map[string]*green20220302.DescribeUploadTokenResponseBodyData) //文件上传客户端 var Bucket *oss.Bucket //服务是否部署在VPC上 var isVPC = false //创建请求客户端 func createClient(accessKeyId string, accessKeySecret string, endpoint string) (*green20220302.Client, error) { config := &openapi.Config{ AccessKeyId: tea.String(accessKeyId), AccessKeySecret: tea.String(accessKeySecret), // 设置HTTP代理。 // HttpProxy: tea.String("http://10.10.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), Endpoint: tea.String(endpoint), } //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 return green20220302.NewClient(config); } //创建上传文件客户端 func createOssClient(tokenData *green20220302.DescribeUploadTokenResponseBodyData) { if isVPC{ ossClient, err := oss.New(tea.StringValue(tokenData.OssInternalEndPoint), tea.StringValue(tokenData.AccessKeyId), tea.StringValue(tokenData.AccessKeySecret), oss.SecurityToken(tea.StringValue(tokenData.SecurityToken))) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } Bucket, _ =ossClient.Bucket(tea.StringValue(tokenData.BucketName)); }else { ossClient, err := oss.New(tea.StringValue(tokenData.OssInternetEndPoint), tea.StringValue(tokenData.AccessKeyId), tea.StringValue(tokenData.AccessKeySecret), oss.SecurityToken(tea.StringValue(tokenData.SecurityToken))) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } Bucket, _ =ossClient.Bucket(tea.StringValue(tokenData.BucketName)); } } //上传文件 func uploadFile(filePath string,tokenData *green20220302.DescribeUploadTokenResponseBodyData) (string,error) { createOssClient(tokenData) objectName := tea.StringValue(tokenData.FileNamePrefix) + uuid.New().String() + "." + strings.Split(filePath, ".")[1] //上传文件 _err := Bucket.PutObjectFromFile(objectName, filePath) if _err != nil { fmt.Println("Error:", _err) os.Exit(-1) } return objectName,_err } func invoke(accessKeyId string, accessKeySecret string, endpoint string) (_result *green20220302.VideoModerationResponse, _err error) { //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 client, _err := createClient(accessKeyId, accessKeySecret, endpoint) if _err != nil { return nil,_err } //运行时参数设置,仅对使用了该运行时参数实例的请求有效 runtime := &util.RuntimeOptions{} //本地文件的完整路径,例如D:\localPath\exampleFile.mp4。 var filePath = "D:\\localPath\\exampleFile.mp4" //获取文件上传临时token tokenData,ok:=TokenMap[endpoint]; if !ok || tea.Int32Value(tokenData.Expiration) <= int32(time.Now().Unix()) { //获取文件上传临时token uploadTokenResponse, _err := client.DescribeUploadToken() if _err != nil { return nil,_err } tokenData = uploadTokenResponse.Body.Data TokenMap[endpoint] = tokenData } var objectName, _ = uploadFile(filePath,TokenMap[endpoint]) //构建检测请求。 serviceParameters, _ := json.Marshal( map[string]interface{}{ "ossBucketName": tea.StringValue(TokenMap[endpoint].BucketName), "ossObjectName": objectName, "dataId": uuid.New().String(), }, ) videoModerationRequest := &green20220302.VideoModerationRequest{ //示例:videoDetection Service: tea.String("videoDetection"), ServiceParameters: tea.String(string(serviceParameters)), } return client.VideoModerationWithOptions(videoModerationRequest, runtime) } func main() { /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ var accessKeyId= "建议从环境变量中获取RAM用户AccessKey ID"; var accessKeySecret= "建议从环境变量中获取RAM用户AccessKey Secret"; //接入区域和地址请根据实际情况修改 var endpoint = "green-cip.cn-shanghai.aliyuncs.com"; response,_err := invoke(accessKeyId,accessKeySecret,endpoint) flag := false if _err != nil { var err = &tea.SDKError{} if _t, ok := _err.(*tea.SDKError); ok { err = _t if *err.StatusCode == 500 { flag = true } } } if response == nil || *response.StatusCode == 500 || *response.Body.Code == 500 { flag = true } //自动路由,区域切换至cn-beijing。 if flag { endpoint = "green-cip.cn-beijing.aliyuncs.com"; response, _err = invoke(accessKeyId,accessKeySecret,endpoint) } if response != nil { statusCode := tea.IntValue(tea.ToInt(response.StatusCode)) body := response.Body videoModerationResponseData := body.Data fmt.Println("requestId:" + tea.StringValue(body.RequestId)) if statusCode == http.StatusOK { fmt.Println("response success. response:" + body.String()) if tea.IntValue(tea.ToInt(body.Code)) == 200 { result := videoModerationResponseData.Result fmt.Println("response dataId:" + tea.StringValue(videoModerationResponseData.DataId)) for i := 0; i < len(result); i++ { fmt.Println("response label:" + tea.StringValue(result[i].Label)) fmt.Println("response confidence:" + tea.ToString(tea.Float32Value(result[i].Confidence))) } } else { fmt.Println("videomoderation not success. status" + tea.ToString(body.Code)) } } else { fmt.Print("response not success. status:" + tea.ToString(statusCode)) } } }
获取视频检测任务结果
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green20220302 "github.com/alibabacloud-go/green-20220302/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green20220302.NewClient(config) if _err != nil { panic(_err) } // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) runtime.ConnectTimeout = tea.Int(10000) serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****", }, ) request := green20220302.VideoModerationResultRequest{ Service: tea.String("videoDetection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VideoModerationResultWithOptions(&request, runtime) if _err != nil { panic(_err) } if *result.StatusCode != http.StatusOK { fmt.Printf("response not success. status:%d\n", *result.StatusCode) return } body := result.Body fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message) if *body.Code == 280 { fmt.Printf("processing video moderation. code:%d\n", *body.Code) return } if *body.Code != http.StatusOK { fmt.Printf("video moderation result not success. code:%d\n", *body.Code) return } data := body.Data fmt.Printf("video moderation result:%s\n", data) fmt.Printf("video moderation result audioResult:%s\n", data.AudioResult) fmt.Printf("video moderation result frameResult:%s\n", data.FrameResult) }
取消视频直播流检测任务代码示例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green20220302 "github.com/alibabacloud-go/green-20220302/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green20220302.NewClient(config) if _err != nil { panic(_err) } // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) runtime.ConnectTimeout = tea.Int(10000) serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****", }, ) request := green20220302.VideoModerationCancelRequest{ Service: tea.String("liveStreamDetection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VideoModerationCancelWithOptions(&request, runtime) if _err != nil { panic(_err) } if *result.StatusCode != http.StatusOK { fmt.Printf("response not success. status:%d\n", *result.StatusCode) return } body := result.Body fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message) if *body.Code != http.StatusOK { fmt.Printf("video moderation cancel not success. code:%d\n", *body.Code) } }
对OSS视频进行检测
使用场景
如果您需要审核的视频文件已经存储在阿里云对象存储OSS中,您可授权创建服务角色,允许内容安全服务访问对象存储OSS。视频审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
执行如下命令引入相关依赖。
go git clone --branch v2.2.15 github.com/alibabacloud-go/green-20220302/v2
接入Go SDK。
提交视频检测任务代码示例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green20220302 "github.com/alibabacloud-go/green-20220302/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green20220302.NewClient(config) if _err != nil { panic(_err) } // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) runtime.ConnectTimeout = tea.Int(10000) serviceParameters, _ := json.Marshal( map[string]interface{}{ "ossBucketName": "bucket_01", "ossObjectName": "conect/xxx.mp4", "ossRegionId": "cn-shanghai", }, ) request := green20220302.VideoModerationRequest{ Service: tea.String("videoDetection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VideoModerationWithOptions(&request, runtime) if _err != nil { panic(_err) } if *result.StatusCode != http.StatusOK { fmt.Printf("response not success. status:%d\n", *result.StatusCode) return } body := result.Body fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message) if *body.Code != http.StatusOK { fmt.Printf("video moderation not success. code:%d\n", *body.Code) return } data := body.Data fmt.Printf("video moderation taskId:%s\n", *data.TaskId) }
获取视频检测任务结果
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green20220302 "github.com/alibabacloud-go/green-20220302/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green20220302.NewClient(config) if _err != nil { panic(_err) } // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) runtime.ConnectTimeout = tea.Int(10000) serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "vi_f_O5z5iaIis3iI0X2oNYj7qa-1x****", }, ) request := green20220302.VideoModerationResultRequest{ Service: tea.String("videoDetection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VideoModerationResultWithOptions(&request, runtime) if _err != nil { panic(_err) } if *result.StatusCode != http.StatusOK { fmt.Printf("response not success. status:%d\n", *result.StatusCode) return } body := result.Body fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message) if *body.Code == 280 { fmt.Printf("processing video moderation. code:%d\n", *body.Code) return } if *body.Code != http.StatusOK { fmt.Printf("video moderation result not success. code:%d\n", *body.Code) return } data := body.Data fmt.Printf("video moderation result:%s\n", data) fmt.Printf("video moderation result audioResult:%s\n", data.AudioResult) fmt.Printf("video moderation result frameResult:%s\n", data.FrameResult) }
取消视频直播流检测任务代码示例
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green20220302 "github.com/alibabacloud-go/green-20220302/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" "net/http" ) func main() { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 config := &openapi.Config{ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), RegionId: tea.String("cn-shanghai"), Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green20220302.NewClient(config) if _err != nil { panic(_err) } // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) runtime.ConnectTimeout = tea.Int(10000) serviceParameters, _ := json.Marshal( map[string]interface{}{ "taskId": "vi_s_lyxBXzWhSsxuJjiNHcpQ0N-*****", }, ) request := green20220302.VideoModerationCancelRequest{ Service: tea.String("liveStreamDetection"), ServiceParameters: tea.String(string(serviceParameters)), } result, _err := client.VideoModerationCancelWithOptions(&request, runtime) if _err != nil { panic(_err) } if *result.StatusCode != http.StatusOK { fmt.Printf("response not success. status:%d\n", *result.StatusCode) return } body := result.Body fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message) if *body.Code != http.StatusOK { fmt.Printf("video moderation cancel not success. code:%d\n", *body.Code) } }
C# SDK
原始代码,请参见C# SDK源码。
支持以下三种类型的视频检测。
对公网可访问视频进行检测
使用场景
当需要审核的视频可通过公网链接访问时,视频审核增强版服务可通过视频URL获取文件后进行审核。
执行如下命令引入相关依赖。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.14
接入C# SDK。
提交视频检测任务代码示例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建检测请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest videoModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest(); // 检测service。 videoModerationRequest.Service="videoDetection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待检测视频链接,公网可访问的URL。 task.Add("url","https://xxxx/xxx/sample.mp4"); videoModerationRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交检测任务。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationResponse response= client.VideoModerationWithOptions(videoModerationRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); } } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
获取视频检测任务结果代码示例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建检测请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest videoModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest(); // 检测service。 videoModerationResultRequest.Service="videoDetection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待查询结果的任务ID。 task.Add("taskId","<待查询结果的任务ID>"); videoModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交检测任务。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultResponse response= client.VideoModerationResultWithOptions(videoModerationResultRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); Console.WriteLine("riskLevel : " + response.Body.Data.RiskLevel); Console.WriteLine("liveId : " + response.Body.Data.LiveId); Console.WriteLine("url : " + response.Body.Data.Url); Console.WriteLine("sliceDetails : " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails)); } } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
取消直播流检测任务代码示例
using Tea; using Newtonsoft.Json; namespace AlibabaCloud.SDK.Sample { public class Sampless { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建取消直播流任务检测请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationCancelRequest videoModerationCancelRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationCancelRequest(); // 检测service。 videoModerationCancelRequest.Service="liveStreamDetection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待取消直播流检测任务ID。 task.Add("taskId","<待取消直播流检测任务ID>"); videoModerationCancelRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交取消检测任务请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationCancelResponse response = client.VideoModerationCancelWithOptions(videoModerationCancelRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
对本地视频进行检测
使用场景
当您需要审核的视频在本地机器且无公网访问链接,您可以将视频上传到内容安全提供的对象存储OSS Bucket中,视频审核增强版服务可直接访问对象存储OSS,获取到视频内容后进行审核。
执行如下命令引入相关依赖。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.14
安装OSS SDK:
NuGet方式安装 1.如果您的Visual Studio没有安装NuGet,请先安装NuGet。 2.在Visual Studio中新建或者打开已有的项目,选择工具 > NuGet程序包管理器 > 管理解决方案的NuGet程序包。 3.搜索aliyun.oss.sdk,在结果中找到Aliyun.OSS.SDK(适用于.NET Framework)或Aliyun.OSS.SDK.NetCore
接入C# SDK。
提交视频检测任务代码示例
// This file is auto-generated, don't edit it. Thanks. using System; using Newtonsoft.Json; using Aliyun.OSS; namespace AlibabaCloud.SDK.Green20220302 { public class VideoModerationAutoRoute { //文件上传token public static Dictionary<String, Models.DescribeUploadTokenResponse> tokenDic = new Dictionary<String, Models.DescribeUploadTokenResponse>(); //文件上传客户端 public static OssClient ossClient = null; //服务是否部署在VPC上 public static Boolean isVPC = false; public static void Main(string[] args) { /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ String accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID"; String accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret"; // 接入区域和地址请根据实际情况修改 String endpoint = "green-cip.cn-shanghai.aliyuncs.com"; Models.VideoModerationResponse response = invoke( accessKeyId, accessKeySecret, endpoint ); //自动路由,区域切换至cn-beijing if ( response is null || response.Body is null || AlibabaCloud.TeaUtil.Common.EqualNumber( 500, AlibabaCloud.TeaUtil.Common.AssertAsNumber(response.StatusCode) ) || AlibabaCloud.TeaUtil.Common.EqualString( "500", Convert.ToString(response.Body.Code) ) ) { endpoint = "green-cip.cn-beijing.aliyuncs.com"; response = invoke(accessKeyId, accessKeySecret, endpoint); ; } Console.WriteLine(response.Body.RequestId); Console.WriteLine(JsonConvert.SerializeObject(response.Body)); } //创建请求客户端 public static Client createClient( String accessKeyId, String accessKeySecret, String endpoint ) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, //设置HTTP代理。 //HttpProxy = "http://10.10.xx.xx:xxxx", //设置HTTPS代理。 //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999", //访问的域名。 Endpoint = endpoint, }; return new Client(config); } //创建文件上传客户端 private static OssClient getOssClient( Models.DescribeUploadTokenResponse tokenResponse, Boolean isVPC ) { var tokenData = tokenResponse.Body.Data; if (isVPC) { return new OssClient( tokenData.OssInternalEndPoint, tokenData.AccessKeyId, tokenData.AccessKeySecret, tokenData.SecurityToken ); } else { return new OssClient( tokenData.OssInternetEndPoint, tokenData.AccessKeyId, tokenData.AccessKeySecret, tokenData.SecurityToken ); } } //上传文件 public static String uploadFile( String filePath, Models.DescribeUploadTokenResponse tokenResponse ) { // 构造OssClient实例。 ossClient = getOssClient(tokenResponse, isVPC); var tokenData = tokenResponse.Body.Data; String objectName = tokenData.FileNamePrefix + Guid.NewGuid().ToString() + "." + filePath.Split(".").GetValue(1); //上传文件 ossClient.PutObject(tokenData.BucketName, objectName, filePath); return objectName; } //提交检测请求 public static Models.VideoModerationResponse invoke( String accessKeyId, String accessKeySecret, String endpoint ) { //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 Client client = createClient(accessKeyId, accessKeySecret, endpoint); //运行时参数设置,仅对使用了该运行时参数实例的请求有效 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); //本地文件的完整路径,例如D:\localPath\exampleFile.mp4。 String filePath = "D:\localPath\exampleFile.mp4"; try { //获取文件上传临时token if ( !tokenDic.ContainsKey(endpoint) || tokenDic[endpoint].Body.Data.Expiration <= DateTimeOffset.Now.ToUnixTimeSeconds() ) { var tokenResponse = client.DescribeUploadToken(); tokenDic[endpoint] = tokenResponse; } //上传文件 String objectName = uploadFile(filePath, tokenDic[endpoint]); //构建检测请求 Models.VideoModerationRequest videoModerationRequest = new Models.VideoModerationRequest(); //service示例:videoDetection videoModerationRequest.Service = "videoDetection"; Dictionary<string, object> task = new Dictionary<string, object>(); //待检测文件信息 task.Add("ossBucketName", tokenDic[endpoint].Body.Data.BucketName); task.Add("ossObjectName", objectName); //待检测数据的ID task.Add("dataId", Guid.NewGuid().ToString()); videoModerationRequest.ServiceParameters = JsonConvert.SerializeObject(task); //调用API获取检测结果 Models.VideoModerationResponse response = client.VideoModerationWithOptions( videoModerationRequest, runtimeOptions ); return response; } catch (Exception _err) { Console.WriteLine(_err); return null; } } } }
获取视频检测任务结果代码示例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建检测请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest videoModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest(); // 检测service。 videoModerationResultRequest.Service="videoDetection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待查询结果的任务ID。 task.Add("taskId","<待查询结果的任务ID>"); videoModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交检测任务。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultResponse response= client.VideoModerationResultWithOptions(videoModerationResultRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); Console.WriteLine("riskLevel : " + response.Body.Data.RiskLevel); Console.WriteLine("liveId : " + response.Body.Data.LiveId); Console.WriteLine("url : " + response.Body.Data.Url); Console.WriteLine("sliceDetails : " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails)); } } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
取消直播流检测任务代码示例
using Tea; using Newtonsoft.Json; namespace AlibabaCloud.SDK.Sample { public class Sampless { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建取消直播流任务检测请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationCancelRequest videoModerationCancelRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationCancelRequest(); // 检测service。 videoModerationCancelRequest.Service="liveStreamDetection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待取消直播流检测任务ID。 task.Add("taskId","<待取消直播流检测任务ID>"); videoModerationCancelRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交取消检测任务请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationCancelResponse response = client.VideoModerationCancelWithOptions(videoModerationCancelRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
对OSS视频进行检测
使用场景
如果您需要审核的视频文件已经存储在阿里云对象存储OSS中,您可授权创建服务角色,允许内容安全服务访问对象存储OSS。视频审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
执行如下命令引入相关依赖。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.14
接入C# SDK。
提交视频检测任务代码示例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建检测请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest videoModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationRequest(); // 检测service。 videoModerationRequest.Service="videoDetection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // OSS文件传参示例。 task.Add("ossBucketName","bucket_01"); task.Add("ossObjectName","test/sample.mp4"); task.Add("ossRegionId","cn-shanghai"); videoModerationRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交检测任务。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationResponse response= client.VideoModerationWithOptions(videoModerationRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); } } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
获取视频检测任务结果代码示例
using Newtonsoft.Json; using Tea; namespace AlibabaCloud.SDK.Sample { public class Sample { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建检测请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest videoModerationResultRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultRequest(); // 检测service。 videoModerationResultRequest.Service="videoDetection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待查询结果的任务ID。 task.Add("taskId","<待查询结果的任务ID>"); videoModerationResultRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交检测任务。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationResultResponse response= client.VideoModerationResultWithOptions(videoModerationResultRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); if(response.Body.Data is not null){ Console.WriteLine("taskId : " + response.Body.Data.TaskId); Console.WriteLine("liveId : " + response.Body.Data.LiveId); Console.WriteLine("riskLevel : " + response.Body.Data.RiskLevel); Console.WriteLine("url : " + response.Body.Data.Url); Console.WriteLine("sliceDetails : " + JsonConvert.SerializeObject(response.Body.Data.SliceDetails)); } } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
取消直播流检测任务代码示例
using Tea; using Newtonsoft.Json; namespace AlibabaCloud.SDK.Sample { public class Sampless { /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Green20220302.Client CreateClient(string accessKeyId, string accessKeySecret) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, }; // 访问的域名。 config.Endpoint = "green-cip.cn-shanghai.aliyuncs.com"; return new AlibabaCloud.SDK.Green20220302.Client(config); } public static void Main(string[] args) { // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。 /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ string accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID", string accessKeySecret = '建议从环境变量中获取RAM用户AccessKey Secret', // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 AlibabaCloud.SDK.Green20220302.Client client = CreateClient(accessKeyId, accessKeySecret); // 构建取消直播流任务检测请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationCancelRequest videoModerationCancelRequest = new AlibabaCloud.SDK.Green20220302.Models.VideoModerationCancelRequest(); // 检测service。 videoModerationCancelRequest.Service="liveStreamDetection"; Dictionary<String,Object> task=new Dictionary<string, object>(); // 待取消直播流检测任务ID。 task.Add("taskId","<待取消直播流检测任务ID>"); videoModerationCancelRequest.ServiceParameters=JsonConvert.SerializeObject(task); // 创建RuntimeObject实例并设置运行参数。 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); runtime.ReadTimeout = 10000; runtime.ConnectTimeout = 10000; try { // 提交取消检测任务请求。 AlibabaCloud.SDK.Green20220302.Models.VideoModerationCancelResponse response = client.VideoModerationCancelWithOptions(videoModerationCancelRequest, runtime); if(response is not null){ Console.WriteLine("response statusCode : "+response.StatusCode); if (response.Body is not null){ Console.WriteLine("requestId : " + response.Body.RequestId); Console.WriteLine("code : " + response.Body.Code); Console.WriteLine("message : " + response.Body.Message); } } } catch (TeaException error) { // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } catch (Exception _error) { TeaException error = new TeaException(new Dictionary<string, object> { { "message", _error.Message } }); // 如有需要,请打印error。 AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message); Console.WriteLine("error : " + error); } } } }
Node.js SDK
原始代码,请参见Node.js SDK源码。
支持以下三种类型的视频检测。
对公网可访问视频进行检测
使用场景
当需要审核的视频可通过公网链接访问时,视频审核增强版服务可通过视频URL获取文件后进行审核。
执行如下命令引入相关依赖。
npm install @alicloud/green20220302@2.2.14
接入Node.js SDK。
提交视频检测任务代码示例
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const videoModerationRequest = new Green20220302.VideoModerationRequest({ "service": "videoDetection", "serviceParameters": JSON.stringify({"url":"http://aliyundoc.com/test.flv"}) }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.videoModerationWithOptions(videoModerationRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
获取视频检测任务结果代码示例
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({ // 视频检测service。 "service": "videoDetection", "serviceParameters": JSON.stringify({"taskId":"<待获取视频检测结果的任务ID>"}) }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.videoModerationResultWithOptions(videoModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
取消直播流检测任务代码示例
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const videoModerationCancelRequest = new Green20220302.VideoModerationCancelRequest({ // 视频检测service。 "service": "liveStreamDetection_global", // 待取消直播流检测任务ID。 "serviceParameters": JSON.stringify({"taskId":"<待取消直播流检测任务ID>"}) }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.videoModerationCancelWithOptions(videoModerationCancelRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
对本地视频进行检测
使用场景
当您需要审核的视频在本地机器且无公网访问链接,您可以将视频上传到内容安全提供的对象存储OSS Bucket中,视频审核增强版服务可直接访问对象存储OSS,获取到视频内容后进行审核。
执行如下命令引入相关依赖。
npm install @alicloud/green20220302@2.2.14
接入Node.js SDK。
提交视频检测任务代码示例
const RPCClient = require("@alicloud/pop-core"); const OSS = require('ali-oss'); const { v4: uuidv4 } = require('uuid'); const path = require("path"); //服务是否部署在VPC上 var isVPC = false; //文件上传token var tokenDic = new Array(); //文件上传客户端 var ossClient; //创建文件上传客户端 function createClient(accessKeyId, accessKeySecret, endpoint) { return new RPCClient({ accessKeyId: accessKeyId, accessKeySecret: accessKeySecret, endpoint: endpoint, apiVersion: '2022-03-02', //设置http代理 //httpProxy: "http://xx.xx.xx.xx:xxxx", //设置https代理 //httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999", }); } //创建文件上传客户端 function getOssClient(tokenData, isVPC) { if (isVPC) { ossClient = new OSS({ accessKeyId: tokenData['AccessKeyId'], accessKeySecret: tokenData['AccessKeySecret'], stsToken: tokenData['SecurityToken'], endpoint: tokenData['OssInternalEndPoint'], bucket: tokenData['BucketName'], }); } else { ossClient = new OSS({ accessKeyId: tokenData['AccessKeyId'], accessKeySecret: tokenData['AccessKeySecret'], stsToken: tokenData['SecurityToken'], endpoint: tokenData['OssInternetEndPoint'], bucket: tokenData['BucketName'], }); } } //提交检测任务 async function invoke(accessKeyId, accessKeySecret, endpoint) { //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 var client = createClient(accessKeyId, accessKeySecret, endpoint); var requestOption = { method: 'POST', formatParams: false, }; //本地文件的完整路径,例如D:\\localPath\\exampleFile.mp4。 var filePath = 'D:\\localPath\\exampleFile.mp4'; //获取上传文件token if (tokenDic[endpoint] == null || tokenDic[endpoint]['Expiration'] <= Date.parse(new Date() / 1000)) { var tokenResponse = await client.request('DescribeUploadToken', '', requestOption) tokenDic[endpoint] = tokenResponse.Data; } //获取上传文件客户端 getOssClient(tokenDic[endpoint], isVPC) var split = filePath.split("."); var objectName; if (split.length > 1) { objectName = tokenDic[endpoint].FileNamePrefix + uuidv4() + "." + split[split.length - 1]; } else { objectName = tokenDic[endpoint].FileNamePrefix + uuidv4(); } //上传文件 const result = await ossClient.put(objectName, path.normalize(filePath)); //通过以下代码创建检测API请求并设置参数。 var params = { //视频检测service示例:videoDetection "Service": "videoDetection", //本地视频上传信息 "ServiceParameters": JSON.stringify({ "ossBucketName": tokenDic[endpoint].BucketName, "ossObjectName": objectName }) } //调用接口获取检测结果 return await client.request('VideoModeration', params, requestOption); } function main() { /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'] * 获取RAM用户AccessKey Secret:process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] */ const accessKeyId: '建议从环境变量中获取RAM用户AccessKey ID' const accessKeySecret: '建议从环境变量中获取RAM用户AccessKey Secret' //接入区域和地址请根据实际情况修改 var endpoint = "https://green-cip.cn-shanghai.aliyuncs.com" try { var response; //调用接口获取检测结果 invoke(accessKeyId, accessKeySecret, endpoint).then(function (response) { //自动路由 if (response.Code == 500) { //区域切换到cn-beijing。 endpoint = "https://green-cip.cn-beijing.aliyuncs.com" invoke(accessKeyId, accessKeySecret, endpoint).then(function (response){ console.log(JSON.stringify(response)) }) }else{ console.log(JSON.stringify(response)) } }) } catch (err) { console.log(err); } } main();
获取视频检测任务结果代码示例
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({ // 视频检测service。 "service": "videoDetection", "serviceParameters": JSON.stringify({"taskId":"<待获取视频检测结果的任务ID>"}) }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.videoModerationResultWithOptions(videoModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
取消直播流检测任务代码示例
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const videoModerationCancelRequest = new Green20220302.VideoModerationCancelRequest({ // 视频检测service。 "service": "liveStreamDetection_global", // 待取消直播流检测任务ID。 "serviceParameters": JSON.stringify({"taskId":"<待取消直播流检测任务ID>"}) }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.videoModerationCancelWithOptions(videoModerationCancelRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
对OSS视频进行检测
使用场景
如果您需要审核的视频文件已经存储在阿里云对象存储OSS中,您可授权创建服务角色,允许内容安全服务访问对象存储OSS。视频审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
执行如下命令引入相关依赖。
npm install @alicloud/green20220302@2.2.14
接入Node.js SDK。
提交视频检测任务代码示例
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const videoModerationRequest = new Green20220302.VideoModerationRequest({ "service": "videoDetection", "serviceParameters": JSON.stringify({ // 待检测文件所在bucket的区域。 示例:cn-shanghai "ossRegionId": "cn-shanghai", // 待检测文件所在bucket名称。示例:bucket001 "ossBucketName": "bucket001", // 待检测文件。 示例:video/001.mp4 "ossObjectName": "video/001.mp4",}) }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.videoModerationWithOptions(videoModerationRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
获取视频检测任务结果代码示例
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const videoModerationResultRequest = new Green20220302.VideoModerationResultRequest({ // 视频检测service。 "service": "videoDetection", "serviceParameters": JSON.stringify({"taskId":"<待获取视频检测结果的任务ID>"}) }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.videoModerationResultWithOptions(videoModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
取消直播流检测任务代码示例
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const videoModerationCancelRequest = new Green20220302.VideoModerationCancelRequest({ // 视频检测service。 "service": "liveStreamDetection_global", // 待取消直播流检测任务ID。 "serviceParameters": JSON.stringify({"taskId":"<待取消直播流检测任务ID>"}) }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.videoModerationCancelWithOptions(videoModerationCancelRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
HTTPS原生调用
调用方式
服务请求地址:https://green-cip.{region}.aliyuncs.com
协议:HTTPS
方式:POST
公共请求参数
语音审核增强版API接口的入参数包含公共请求参数和具体接口请求参数,公共请求参数是指每一个接口都需要使用到的参数,以下表格是公共请求参数的详细介绍。
名称
类型
是否必须
描述
Format
String
是
返回消息的格式。取值:
JSON(默认值)
XML
Version
String
是
API版本号,使用YYYY-MM-DD日期格式,本版本为2022-03-02。
AccessKeyId
String
是
阿里云颁发给用户的访问服务所用的密钥ID。
Signature
String
是
签名结果串,关于签名的计算方法,请参见下方签名方式。
SignatureMethod
String
是
签名方式,目前支持HMAC-SHA1。
Timestamp
String
是
请求的时间戳。日期格式按照ISO8601标准表示,并需要使用UTC时间。
格式为:yyyy-MM-ddTHH:mm:ssZ。
例如,北京时间2022年12月12日09点13分14秒表示为2022-12-12T01:13:14Z。
SignatureVersion
String
是
签名算法版本,取值为1.0。
SignatureNonce
String
是
唯一随机数,用于防止网络重放攻击。不同请求要使用不同的随机数值。
Action
String
是
取值:
VideoModeration
VideoModerationResult
VideoModerationCancel
公共返回参数
您发送的每次接口调用请求,无论成功与否,系统都会返回唯一识别码(RequestId)。其他返回参数会根据您调用的服务不同而返回不同的参数。
{ "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2", "Message":"SUCCESS", "Data":{ "TaskId":"vi_f_O5xxxxxxxxxxxxxxqa-1****" }, "Code":200 }
代码示例
以下返回示例为了便于阅读,做了格式化处理,实际返回结果没有进行换行、缩进等格式化处理。
审核任务代码示例
请求示例
http://green-cip.cn-shanghai.aliyuncs.com/ ?Format=JSON &Version=2022-03-02 &Signature=vpEEL0zFHfxXYzSFV0n7%2FZiFL9o%3D &SignatureMethod=Hmac-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &Action=VideoModeration &AccessKeyId=123****cip &Timestamp=2023-02-03T12:00:00Z &Service=videoDetection &ServiceParameters={"url": "https://xxxxxx.aliyuncs.com/sample/****.mp4"}
正常返回示例
{ "RequestId":"20B935A9-XXXXXXXX-XXXXXXXX0C2", "Message":"SUCCESS", "Data":{ "TaskId":"vi_f_O5xxxxxxxxxxxxxxqa-1x****" }, "Code":200 }
查询任务代码示例
请求示例
http://green-cip.cn-shanghai.aliyuncs.com/ ?Format=JSON &Version=2022-03-02 &Signature=vpEEL0zFHfxXYzSFV0n7%2FZiFL9o%3D &SignatureMethod=Hmac-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &Action=VideoModerationResult &AccessKeyId=123****cip &Timestamp=2023-02-03T12:00:00Z &Service=videoDetection &ServiceParameters={"taskId": "vi_f_O5zxxxxxxxxxxxxxxxx-1x****"}
正常返回示例
{ "Code": 200, "RequestId": "25106421-XXXX-XXXX-XXXX-15DA5AAAC546", "Message": "success finished", "Data": { "DataId": "ABCDEF-TESTDATAID", "TaskId": "vi_f_VnI6BO74NXFIZm7XXXXXXXXXXXXXX", "RiskLevel": "medium", "FrameResult": { "FrameNum": 2, "FrameSummarys": [ { "Label": "violent_explosion", "Description": "疑似含有烟火类内容元素", "LabelSum": 8 }, { "Label": "sexual_cleavage", "Description": "疑似含有包含肢体裸露或性感内容", "LabelSum": 8 } ], "RiskLevel": "medium", "Frames": [ { "Offset": 1, "RiskLevel": "none", "Results": [ { "Result": [ { "Label": "nonLabel", "Description": "未检测出风险" } ], "Service": "baselineCheck" }, { "Result": [ { "Label": "nonLabel" } ], "Service": "baselineCheck_pro" } ], "TempUrl": "http://abc.oss-cn-shanghai.aliyuncs.com/test1.jpg" }, { "Offset": 2, "RiskLevel": "medium", "Results": [ { "Result": [ { "Confidence": 74.1, "Label": "violent_explosion", "Description": "疑似含有烟火类内容元素" } ], "Service": "baselineCheck" }, { "Result": [ { "Confidence": 1, "Label": "sexual_cleavage", "Description": "疑似含有包含肢体裸露或性感内容" } ], "Service": "baselineCheck_pro" } ], "TempUrl": "http://abc.oss-cn-shanghai.aliyuncs.com/test2.jpg" } ] } } }
签名方式
语音审核增强版服务会对每个访问的请求进行身份验证,因此,需要在请求中包含签名(Signature)信息。语音审核增强版服务通过使用AccessKey ID和AccessKey Secret进行对称加密的方法来验证请求的发送者身份。
AccessKey ID和AccessKey Secret由阿里云官方颁发给访问者(可以通过阿里云官方网站申请和管理),其中AccessKey ID用于标识访问者身份;AccessKey Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密,只有阿里云和用户知道。
用户在访问时,按照下面的方法对请求进行签名处理:
使用请求参数构造规范化的请求字符串(Canonicalized Query String)。
按照参数名称的字典顺序对请求中所有的请求参数(包括公共请求参数和给定了的请求接口的自定义参数,但不能包括公共请求参数中提到的Signature参数本身)进行排序。
对相关请求参数的名称和值进行编码。名称和值要使用UTF-8字符集进行URL编码。
说明一般支持URL编码的库(比如Java中的java.net.URLEncoder)都是按照application/x-www-form-urlencoded的MIME类型的规则进行编码的。实现时可以直接使用这类方式进行编码,把编码后的字符串中加号(+)替换成%20、星号(*)替换成%2A、%7E替换回波浪号(~),即可得到上述规则描述的编码字符串。
URL编码的编码规则如下:
对于字符A-Z、a-z、0-9以及字符中划线(-)、下划线(_)、半角句号(.)、波浪线(~)不编码。
对于其它字符编码成
%XY
的格式,其中XY是字符对应ASCII码的16进制表示。比如英文的双引号(")对应的编码就是%22
。对于扩展的UTF-8字符,编码成
%XY%ZA…
的格式。需要说明的是英文空格( )要被编码是
%20
,而不是加号(+)。
对编码后的参数名称和值使用英文等号(=)进行连接。
将英文等号连接得到字符串按参数名称的字典顺序依次使用&符号连接,即得到规范化请求字符串。
使用 a.i 构造的规范化字符串按照下面的规则构造用于计算签名的字符串:
StringToSign= HTTPMethod + "&" + percentEncode("/") + "&" + percentEncode(CanonicalizedQueryString)
说明其中HTTPMethod是提交请求用的HTTP方法,比如POST。percentEncode(/)是按照 a.ii 中描述的URL编码规则对字符(/)进行编码得到的值,即
%2F
。percentEncode(CanonicalQueryString)是对 a.i 中构造的规范化请求字符串按 a.ii 中描述的URL编码规则编码后得到的字符串。按照RFC2104的定义,使用上面的用于签名的字符串计算签名HMAC值。
说明注意计算签名时使用的Key就是用户持有的AccessKey Secret并加上一个
&
字符(ASCII:38),使用的哈希算法是SHA1。按照Base64编码规则把上面的HMAC值编码成字符串,即得到签名值(Signature)。
将得到的签名值作为Signature参数添加到请求参数中,即完成对请求签名的过程。
说明得到的签名值在作为最后的请求参数值提交给内容安全服务器时,要和其他参数一样,按照RFC3986的规则进行URL编码。