視頻審核增強版SDK及接入指南
視頻審核增強版支持SDK方式調(diào)用和原生HTTPS方式調(diào)用。推薦您使用SDK接入,可免去簽名驗證以及Body格式構建等細節(jié)步驟。本文介紹視頻審核增強版接入的方式。
步驟一:開通服務
訪問開通內(nèi)容審核增強版服務頁面,開通視頻審核增強版服務。接口接入使用后系統(tǒng)會按使用量自動出賬,具體信息,請參見計費說明。您也可以購買按量抵扣資源包,資源包相較于后付費存在一定階梯折扣,適合使用量級可預期和較大的用戶。
開通視頻審核增強版服務后,默認付費方式是按量后付費,且按照實際用量結算當日費用,不調(diào)用服務不收費。
步驟二:為RAM用戶授權
在接入SDK或者API之前,您需要為RAM用戶授權。您可以為RAM用戶創(chuàng)建一個訪問密鑰(AccessKey)。在調(diào)用阿里云API時您需要使用AccessKey完成身份驗證。獲取方式,請參見獲取AccessKey。
使用RAM管理員登錄RAM控制臺。
- 創(chuàng)建RAM用戶。
具體操作,請參見創(chuàng)建RAM用戶。
- 向RAM用戶授權系統(tǒng)策略權限:
AliyunYundunGreenWebFullAccess
。具體操作,請參見為RAM用戶授權。
完成以上配置后,您可以使用RAM用戶調(diào)用內(nèi)容安全API。
步驟三:安裝并接入視頻審核服務
目前支持的接入地域為:
地域 | 外網(wǎng)接入地址 | 內(nèi)網(wǎng)接入地址 | 支持的服務 |
華東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 開發(fā)者門戶在線調(diào)試工具調(diào)試API接口,該工具會自動生成相應API的SDK調(diào)用示例代碼。在線調(diào)試API接口如下:
阿里云SDK代碼通過定義ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
環(huán)境變量來創(chuàng)建默認的訪問憑證。調(diào)用接口時,程序直接訪問憑證,讀取您的訪問密鑰(即AccessKey)并自動完成鑒權。您在接入SDK代碼示例之前,請先配置環(huán)境變量。具體操作,請參見身份驗證配置。
API接口字段說明請參考視頻文件審核增強版API和視頻直播流審核增強版API。
Java SDK
在pom.xml中加入相應依賴,就可以在Maven工程中使用SDK。
在dependencies中添加如下依賴:
<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訪問或日常運維。 * 常見獲取環(huán)境變量方式: * 方式一: * 獲取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("建議從環(huán)境變量中獲取RAM用戶AccessKey ID"); config.setAccessKeySecret("建議從環(huán)境變量中獲取RAM用戶AccessKey Secret"); //接入?yún)^(qū)域和地址請根據(jù)實際情況修改。 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訪問或日常運維。 * 常見獲取環(huán)境變量方式: * 方式一: * 獲取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("建議從環(huán)境變量中獲取RAM用戶AccessKey ID"); config.setAccessKeySecret("建議從環(huán)境變量中獲取RAM用戶AccessKey Secret"); //接入?yún)^(qū)域和地址請根據(jù)實際情況修改。 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("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訪問或日常運維。 * 常見獲取環(huán)境變量方式: * 方式一: * 獲取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("建議從環(huán)境變量中獲取RAM用戶AccessKey ID"); config.setAccessKeySecret("建議從環(huán)境變量中獲取RAM用戶AccessKey Secret"); //接入?yún)^(qū)域和地址請根據(jù)實際情況修改 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及以上版本。
執(zhí)行如下命令安裝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泄露,威脅您賬號下所有資源的安全。 # 常見獲取環(huán)境變量方式: # 獲取RAM用戶AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 獲取RAM用戶AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建議從環(huán)境變量中獲取RAM用戶AccessKey ID', access_key_secret='建議從環(huán)境變量中獲取RAM用戶AccessKey Secret', # 連接時超時時間,單位毫秒(ms)。 connect_timeout=3000, # 讀取時超時時間,單位毫秒(ms)。 read_timeout=6000, # 接入?yún)^(qū)域和地址請根據(jù)實際情況修改。 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: # 調(diào)用成功。 # 獲取審核結果。 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泄露,威脅您賬號下所有資源的安全。 # 常見獲取環(huán)境變量方式: # 獲取RAM用戶AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 獲取RAM用戶AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建議從環(huán)境變量中獲取RAM用戶AccessKey ID', access_key_secret='建議從環(huán)境變量中獲取RAM用戶AccessKey Secret', # 連接時超時時間,單位毫秒(ms)。 connect_timeout=3000, # 讀取時超時時間,單位毫秒(ms)。 read_timeout=6000, # 接入?yún)^(qū)域和地址請根據(jù)實際情況修改。 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: # 調(diào)用成功。 # 獲取審核結果。 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泄露,威脅您賬號下所有資源的安全。 # 常見獲取環(huán)境變量方式: # 獲取RAM用戶AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] # 獲取RAM用戶AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] access_key_id='建議從環(huán)境變量中獲取RAM用戶AccessKey ID', access_key_secret='建議從環(huán)境變量中獲取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: # 調(diào)用成功 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及以上版本。
執(zhí)行如下命令引入相關依賴。
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泄露,威脅您賬號下所有資源的安全。 * 常見獲取環(huán)境變量方式: * 獲取RAM用戶AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 獲取RAM用戶AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建議從環(huán)境變量中獲取RAM用戶AccessKey ID', "accessKeySecret" => '建議從環(huán)境變量中獲取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泄露,威脅您賬號下所有資源的安全。 * 常見獲取環(huán)境變量方式: * 獲取RAM用戶AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 獲取RAM用戶AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建議從環(huán)境變量中獲取RAM用戶AccessKey ID', "accessKeySecret" => '建議從環(huán)境變量中獲取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("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泄露,威脅您賬號下所有資源的安全。 * 常見獲取環(huán)境變量方式: * 獲取RAM用戶AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 獲取RAM用戶AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建議從環(huán)境變量中獲取RAM用戶AccessKey ID', "accessKeySecret" => '建議從環(huán)境變量中獲取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
執(zhí)行如下命令引入相關依賴。
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泄露,威脅您賬號下所有資源的安全。 * 常見獲取環(huán)境變量方式: * 獲取RAM用戶AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 獲取RAM用戶AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建議從環(huán)境變量中獲取RAM用戶AccessKey ID"), AccessKeySecret: tea.String("建議從環(huán)境變量中獲取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) } // 創(chuàng)建RuntimeObject實例并設置運行參數(shù)。 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泄露,威脅您賬號下所有資源的安全。 * 常見獲取環(huán)境變量方式: * 獲取RAM用戶AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 獲取RAM用戶AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建議從環(huán)境變量中獲取RAM用戶AccessKey ID"), AccessKeySecret: tea.String("建議從環(huán)境變量中獲取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) } // 創(chuàng)建RuntimeObject實例并設置運行參數(shù)。 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泄露,威脅您賬號下所有資源的安全。 * 常見獲取環(huán)境變量方式: * 獲取RAM用戶AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") * 獲取RAM用戶AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ AccessKeyId: tea.String("建議從環(huán)境變量中獲取RAM用戶AccessKey ID"), AccessKeySecret: tea.String("建議從環(huán)境變量中獲取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) } // 創(chuàng)建RuntimeObject實例并設置運行參數(shù)。 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) } }