Commit 7e83ebd016ef9320b37cc00034bc50d32c56f8f8

Authored by liwei2917
1 parent 5fa3cb57

测试数美的直播

src/main/java/com/cnlive/shenhe/api/VideoStreamCallbackApi.java 0 → 100644
  1 +package com.cnlive.shenhe.api;
  2 +
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.JSONArray;
  5 +import com.alibaba.fastjson.JSONObject;
  6 +import com.cnlive.shenhe.utils.AntiFraudUtil;
  7 +
  8 +import java.util.UUID;
  9 +
  10 +import org.apache.commons.lang3.StringUtils;
  11 +import org.slf4j.Logger;
  12 +import org.slf4j.LoggerFactory;
  13 +import org.springframework.stereotype.Controller;
  14 +import org.springframework.web.bind.annotation.RequestBody;
  15 +import org.springframework.web.bind.annotation.RequestMapping;
  16 +import org.springframework.web.bind.annotation.RequestMethod;
  17 +import org.springframework.web.bind.annotation.ResponseBody;
  18 +import com.cnlive.shenhe.utils.AntiFraudUtil;
  19 +
  20 +
  21 +@SuppressWarnings("unused")
  22 +@Controller
  23 +@RequestMapping("/api/videoStream")
  24 +public class VideoStreamCallbackApi {
  25 + private static Logger logger = LoggerFactory.getLogger(VideoStreamCallbackApi.class);
  26 +
  27 + @RequestMapping(value = "callbackVideoStreamResult", method = RequestMethod.POST)
  28 + @ResponseBody
  29 + public void getFilterVideoResult(@RequestBody String json) {
  30 + logger.info("数美视频过滤回调,json:{}", json);
  31 + if (StringUtils.isNotEmpty(json)) {
  32 + JSONObject jsonObj = JSON.parseObject(json);
  33 + JSONObject resultObj = jsonObj.getJSONObject("result");
  34 + Integer code = resultObj.getInteger("code");
  35 + if (code != null && code == 1100) {
  36 + String riskLevel = resultObj.getString("riskLevel");
  37 + if ("PASS".equals(riskLevel)) {
  38 +
  39 + }
  40 + if ("REJECT".equals(riskLevel)) {
  41 + JSONArray detail = resultObj.getJSONArray("detail");
  42 + JSONArray addition = resultObj.getJSONArray("addition");
  43 + if (detail == null || detail.size() == 0) {
  44 + if (addition != null || addition.size() > 0) {
  45 + for (int i = 0; i < addition.size(); i++) {
  46 + JSONObject additionObj = (JSONObject) addition.get(i);
  47 + String audio_evidence = additionObj.getString("audio_evidence");
  48 + }
  49 +// resultObj.put("desc",
  50 +// String.format("(%s-%s)", audio_evidence.getString("description"), addition.getString("audio_matchedItem")));
  51 + }
  52 + }
  53 +// resultObj.put("desc",
  54 +// String.format("(%s-%s)", detail.getString("description"), detail.getString("matchedItem")));
  55 + }
  56 +
  57 + if ("REVIEW".equals(riskLevel)) {
  58 + }
  59 + }else{
  60 + //数美请求结果code为失败状态
  61 +// jsonObj.put("type", "REJECT");
  62 +// jsonObj.put("desc","code:"+code+",message:"+resultObj.getString("message") );
  63 + }
  64 + }
  65 + }
  66 +
  67 + /**
  68 + * 测试视频流
  69 + * @param videoStream
  70 + */
  71 + @RequestMapping(value="ceshiVideo")
  72 + @ResponseBody
  73 + public void ceshiVideo(String videoStream){
  74 + //调用数美接口
  75 + JSONObject result = AntiFraudUtil.filterVideoStream(videoStream, UUID.randomUUID().toString(), "测试流的名称", "");
  76 + logger.info("code="+result.getString("code"));
  77 + logger.info("requestId="+result.getString("requestId"));
  78 + logger.error("直播流开始测试,result:{}", result);
  79 + }
  80 +
  81 + /**
  82 + * 测试视频流
  83 + * @param videoStream
  84 + */
  85 + @RequestMapping(value="ceshiFinishVideo")
  86 + @ResponseBody
  87 + public void ceshiFinishVideo(String url,String requestId){
  88 + //调用数美接口
  89 + JSONObject result = AntiFraudUtil.finishVideoStream(url,requestId);
  90 + logger.info("code="+result.getString("code"));
  91 + logger.info("requestId="+result.getString("requestId"));
  92 + logger.error("直播流结束测试,result:{}", result);
  93 + }
  94 +
  95 + /**
  96 + * 测试视频流
  97 + * @param videoStream
  98 + */
  99 + @RequestMapping(value="queryVideo")
  100 + @ResponseBody
  101 + public void queryVideo(){
  102 + //调用数美接口
  103 + JSONObject result = AntiFraudUtil.queryVideoStreamResult();
  104 + logger.info("code="+result.getString("code"));
  105 + logger.info("requestId="+result.getString("requestId"));
  106 + logger.error("直播流查询,result:{}", result);
  107 + }
  108 +
  109 +
  110 +}
... ...
src/main/java/com/cnlive/shenhe/utils/AntiFraudUtil.java
... ... @@ -23,6 +23,9 @@ public class AntiFraudUtil {
23 23 private static final String REQUEST_URL_IMG = "http://img-api-bj.fengkongcloud.com/v2/saas/anti_fraud/imgs";
24 24 private static final String REQUEST_URL_VIDEO = "http://video-api-bj.fengkongcloud.com/v2/saas/anti_fraud/video";
25 25 private static final String RESPONSE_URL_VIDEO = "http://video-api-bj.fengkongcloud.com/v2/saas/anti_fraud/query_video";
  26 + private static final String REQUEST_URL_VIDEOSTREAM = "http://video-api.fengkongcloud.com/v2/saas/anti_fraud/videostream";
  27 + private static final String RESPONSE_URL_VIDEOSTREAM = "http://video-api.fengkongcloud.com/v2/saas/anti_fraud/query_videostream";
  28 + private static final String FINISH_URL_VIDEOSTREAM = "http://video-api.fengkongcloud.com/v2/saas/anti_fraud/finish_videostream";
26 29 public static void main(String[] args) {
27 30 String jsonArray = "[{\"imageUrl\":\"http://ffyl.ys2.cnliveimg.com/223/img/2018/0820/ff80808164a7163a016555c9a6ac0208/000002.jpg?imageView2/1/w/704/h/396\"},\n" +
28 31 "{\"imageUrl\":\"https://wjj.ys1.cnliveimg.com/769/img/2018/0129/fitnessPhotos.jpg\"},{\"imageUrl\":\"http://ffyl.ys2.cnliveimg.com/223/img/2018/0820/ff80808164a7163a016555c9a6ac0208/000002.jpg?imageView2/1/w/704/h/396\"},{\"imageUrl\":\"http://yweb3.cnliveimg.com/828/img/2018/0802/180802161358328_692.jpg\"},{\"imageUrl\":\"http://ffyl.ys2.cnliveimg.com/223/img/2018/0820/ff80808164a7163a016555c9a6ac0208/000002.jpg?imageView2/1/w/704/h/396\"},\n" +
... ... @@ -211,6 +214,68 @@ public class AntiFraudUtil {
211 214 return null;
212 215 }
213 216 }
  217 +
  218 + /**
  219 + * 智能视频流过滤(直播)
  220 + *
  221 + * @param url 需要过滤的视频的url
  222 + * @param uuid 需要过滤的视频的唯一标识
  223 + * @return 通过:PASS 拒绝:REJECT 异常:null
  224 + */
  225 + public static JSONObject filterVideoStream(String url,String uuid,String videoName, String channel) {
  226 + try {
  227 + JSONObject result = reqVideoFilterStream(url, uuid,videoName, channel);
  228 + /**
  229 + * 接口会返回code, code=1100 时说明请求成功,根据不同的 riskLevel 风险级别进行业务处理
  230 + * 当 code!=1100 时,如果是 1902 错误,需要检查参数配置
  231 + * 其余情况需要根据错误码进行重试或者其它异常处理
  232 + */
  233 + return result;
  234 + } catch (Exception e) {
  235 + return null;
  236 + }
  237 + }
  238 +
  239 + /**
  240 + * 智能视频流过滤(直播)
  241 + *
  242 + * @param uuid 需要查看的视频的唯一标识
  243 + * @return 通过:PASS 拒绝:REJECT 异常:null
  244 + */
  245 + public static JSONObject queryVideoStreamResult() {
  246 + try {
  247 + JSONObject userData = new JSONObject();
  248 + userData.put("accessKey", ACCESSKEY);
  249 + JSONObject result = HttpClientUtils.httpPost(RESPONSE_URL_VIDEOSTREAM, userData,false);
  250 + System.out.println("响应:" + result);
  251 + return result;
  252 + } catch (Exception e) {
  253 + System.out.println("...................接口请求失败:");
  254 + e.printStackTrace();
  255 + return null;
  256 + }
  257 + }
  258 +
  259 + /**
  260 + * 视频流关闭(直播--关闭)
  261 + *
  262 + * @param url 关闭的视频流的地址
  263 + * @param requestId 关闭的视频流的requestId
  264 + * @return 通过:PASS 拒绝:REJECT 异常:null
  265 + */
  266 + public static JSONObject finishVideoStream(String url,String requestId) {
  267 + try {
  268 + JSONObject result = reqFinishVideoStream(url, requestId);
  269 + /**
  270 + * 接口会返回code, code=1100 时说明请求成功,根据不同的 riskLevel 风险级别进行业务处理
  271 + * 当 code!=1100 时,如果是 1902 错误,需要检查参数配置
  272 + * 其余情况需要根据错误码进行重试或者其它异常处理
  273 + */
  274 + return result;
  275 + } catch (Exception e) {
  276 + return null;
  277 + }
  278 + }
214 279  
215 280  
216 281  
... ... @@ -260,6 +325,35 @@ public class AntiFraudUtil {
260 325  
261 326 return HttpClientUtils.httpPost(REQUEST_URL_VIDEO, userData,false);
262 327 }
  328 +
  329 + private static JSONObject reqVideoFilterStream(String url,String uuid,String videoName, String channel) throws Exception {
  330 + JSONObject userData = new JSONObject();
  331 + userData.put("accessKey", ACCESSKEY);
  332 +// userData.put("btId", uuid);
  333 + userData.put("callback","http://test.shen.cnlive.com/api/videoStream/callbackVideoStreamResult");
  334 + userData.put("type", "DEFAULT");
  335 +
  336 +
  337 + JSONObject data = new JSONObject();
  338 + data.put("url", url);
  339 + data.put("VideoName", videoName);
  340 + data.put("callbackLevel", true);//true表示返回所有图片的审核结果,false表示只返回非pass的审核结果
  341 + data.put("detectFrequency",10);//视频流截帧频率范围:0.5-60(0.5秒一帧-60秒一帧),默认为5
  342 + data.put("tokenId", uuid);//客户端用户账号唯一标识,用于用户行为分析,建议传入用户UID;
  343 + data.put("channel", StringUtils.isNotEmpty(channel) ? channel : "COMMENT");
  344 + userData.put("data", data);
  345 +
  346 + return HttpClientUtils.httpPost(REQUEST_URL_VIDEOSTREAM, userData,false);
  347 + }
  348 +
  349 + private static JSONObject reqFinishVideoStream(String url,String requestId) throws Exception {
  350 + JSONObject userData = new JSONObject();
  351 + userData.put("accessKey", ACCESSKEY);
  352 + userData.put("requestId",requestId);
  353 + userData.put("url", url);
  354 +
  355 + return HttpClientUtils.httpPost(FINISH_URL_VIDEOSTREAM, userData,false);
  356 + }
263 357  
264 358 private static JSONObject reqArticleFilter(String tokenId,String contents ,String channel) throws Exception {
265 359 JSONObject userData = new JSONObject();
... ...