LiveControllerApi.java
11.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
package com.cnlive.shenhe.api;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cnlive.shenhe.entity.ShyLive;
import com.cnlive.shenhe.serviceImpl.LiveServiceImpl;
import com.cnlive.shenhe.utils.AntiFraudUtil;
import com.cnlive.shenhe.utils.CommonUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
* @author Administrator
*/
@SuppressWarnings("unused")
@Controller
@RequestMapping("/api/live")
public class LiveControllerApi {
private static Logger logger = LoggerFactory.getLogger(LiveControllerApi.class);
@Autowired
LiveServiceImpl liveService;
@PostMapping("/import")
@ResponseBody
public JSONObject impotVideo(String param) {
JSONObject map = new JSONObject();
JSONObject result = new JSONObject();
//初始化一个请求数据库返回结果
boolean YorN =true;
logger.info("直播入库,param=====" + param);
JSONObject json = JSONObject.parseObject(param);
//获取所有参数
//直播活动id
String activityId = json.getString("activityId");
String activityName = json.getString("activityName");//直播活动名称
Integer activityStatus = Integer.parseInt(json.getString("activityStatus"));//直播活动状态
String channelId = json.getString("channelId");//直播频道id
String live_type = json.getString("liveType");//直播频道id
String mp4Url = json.getString("mp4Url");//rtmp直播流
String hlsUrl = json.getString("hlsUrl");//m3u8直播流
Integer spId = Integer.parseInt(json.getString("spId"));//spid
String callback = json.getString("callback");//回调地址
Integer is_hot = Integer.parseInt(json.getString("priority"));//优先级
String coverImgUrl = json.getString("coverImgUrl");//封面
String activityIntro = json.getString("activityIntro");//活动描述
String playbackUrl = json.getString("playbackUrl");//回放地址
String startTime = json.getString("startTime");//开始时间
Date timestamp_start =null;
if (CommonUtils.isNotEmpty(startTime)) {
timestamp_start = new Timestamp(Long.valueOf(startTime));
}
String endTime = json.getString("endTime");//结束时间
Date timestamp_end =null;
if (CommonUtils.isNotEmpty(endTime)) {
timestamp_end = new Timestamp(Long.valueOf(endTime));
}
String pre_startTime = json.getString("preStartTime");//预计开始时间
Date pre_timestamp_start =null;
if (CommonUtils.isNotEmpty(pre_startTime)) {
pre_timestamp_start = new Timestamp(Long.valueOf(pre_startTime));
}
String pre_endTime = json.getString("preEndTime");//预计结束时间
Date pre_timestamp_end =null;
if (CommonUtils.isNotEmpty(pre_endTime)) {
pre_timestamp_end = new Timestamp(Long.valueOf(pre_endTime));
}
ShyLive shylive1 = new ShyLive();
//得到直播活动id去查询是否已有
shylive1.setActivity_id(activityId);
//查询一下 存在,更新 没有,插入
List<ShyLive> listshyLive = liveService.findshyLive(shylive1);
if (listshyLive.size() > 0) {
ShyLive shyLive = listshyLive.get(0);
//封装数据入库
shyLive.setSp_id(spId);//设置spid
shyLive.setActivity_name(activityName);//设置直播活动名称
shyLive.setActivity_status(activityStatus);//设置直播活动状态
shyLive.setPre_start_time(pre_timestamp_start);
shyLive.setPre_end_time(pre_timestamp_end);
if(activityStatus==3){//发布直播
shyLive.setActivity_start_time(null);
shyLive.setActivity_end_time(null);
shyLive.setIs_hot(2);//是否是热点: 1:不是 ,2: 是
}else if(activityStatus==1){//启动直播
shyLive.setActivity_start_time(timestamp_start);
shyLive.setActivity_end_time(null);
shyLive.setIs_hot(2);//是否是热点: 1:不是 ,2: 是
}else if(activityStatus==2){//停止直播
shyLive.setActivity_start_time(timestamp_start);
shyLive.setActivity_end_time(timestamp_end);
shyLive.setPlayback_url(playbackUrl);//回放地址
shyLive.setShenhe_state(2);//状态 0:未认领 1.已领未审,2:已审
shyLive.setUpdater("自动通过");;//直播完成后自动通过
shyLive.setIs_hot(1);//是否是热点: 1:不是 ,2: 是
}else if(activityStatus==4){//审核强制下线
shyLive.setActivity_start_time(timestamp_start);
shyLive.setActivity_end_time(timestamp_end);
shyLive.setPlayback_url(playbackUrl);//回放地址
shyLive.setIs_hot(1);//是否是热点: 1:不是 ,2: 是
}
shyLive.setActivity_intro(activityIntro);//直播活动简介
shyLive.setLive_type(live_type);
shyLive.setM3u8_url(hlsUrl);//m3u8直播流
shyLive.setRtmp_url(mp4Url);//rtmp直播流
shyLive.setCallback(callback);//回调地址
shyLive.setCover_img_url(coverImgUrl);//封面
shyLive.setShenhe_type(3);//审核类型,1:免审,2:机审,3:人工审
shyLive.setAvsample_state(1);//抽帧状态 1:不抽帧 2:待抽帧 3:抽帧中 4:抽帧完成 5:抽帧失败
if(activityStatus==0){//直播撤销
shyLive.setIs_show(0);//是否显示 0:不显示 1:显示
shyLive.setIs_hot(1);//是否是热点: 1:不是 ,2: 是
}else{
shyLive.setIs_show(1);
}
shyLive.setUpdated_at(CommonUtils.getCurrentTime());//更新时间
YorN = liveService.updateshyLive(shyLive);
}else{
//查了,没有,直接插入数据库
shylive1.setActivity_id(activityId);//设置直播活动id
shylive1.setActivity_name(activityName);//设置直播活动名称
shylive1.setActivity_status(activityStatus);//设置直播活动状态
shylive1.setChannel_id(channelId);//设置直播频道
shylive1.setSp_id(spId);//设置spid
shylive1.setShenhe_state(0); //状态 0:未认领 1.已领未审,2:已审
shylive1.setIs_hot(2);//是否是热点: 1:不是 ,2: 是
shylive1.setPre_start_time(pre_timestamp_start);
shylive1.setPre_end_time(pre_timestamp_end);
if(activityStatus==3){//发布直播
shylive1.setActivity_start_time(null);
shylive1.setActivity_end_time(null);
}else if(activityStatus==1){//启动直播
shylive1.setActivity_start_time(timestamp_start);
shylive1.setActivity_end_time(null);
}else if(activityStatus==2){//停止直播
shylive1.setActivity_start_time(timestamp_start);
shylive1.setActivity_end_time(timestamp_end);
shylive1.setPlayback_url(playbackUrl);//回放地址
shylive1.setShenhe_state(2); //状态 0:未认领 1.已领未审,2:已审
shylive1.setUpdater("自动通过");;//直播完成后自动通过
shylive1.setIs_hot(1);//是否是热点: 1:不是 ,2: 是
}else if(activityStatus==4){//审核强制下线
shylive1.setActivity_start_time(timestamp_start);
shylive1.setActivity_end_time(timestamp_end);
shylive1.setPlayback_url(playbackUrl);//回放地址
shylive1.setShenhe_state(2); //状态 0:未认领 1.已领未审,2:已审
shylive1.setIs_hot(1);//是否是热点: 1:不是 ,2: 是
}
shylive1.setActivity_intro(activityIntro);//直播活动简介
shylive1.setLive_type(live_type);
shylive1.setM3u8_url(hlsUrl);//m3u8直播流
shylive1.setRtmp_url(mp4Url);//rtmp直播流
shylive1.setCallback(callback);//回调地址
shylive1.setCover_img_url(coverImgUrl);//封面
shylive1.setShenhe_type(3);//审核类型,1:免审,2:机审,3:人工审
shylive1.setAvsample_state(1);//抽帧状态 1:不抽帧 2:待抽帧 3:抽帧中 4:抽帧完成 5:抽帧失败
if(activityStatus==0){//直播撤销
shylive1.setIs_show(0);//是否显示 0:不显示 1:显示
shylive1.setIs_hot(1);//是否是热点: 1:不是 ,2: 是
}else{
shylive1.setIs_show(1);
}
shylive1.setCreated_at(CommonUtils.getCurrentTime());//创建时间
shylive1.setUpdated_at(CommonUtils.getCurrentTime());//更新时间
YorN = liveService.impotVideo(shylive1);
}
if (YorN == true) {
result.put("errorCode", "0");
result.put("errorMessage", "直播审核请求收到成功");
map.put("statusCode", "200");
map.put("result", result);
} else {
result.put("errorCode", "-1");
result.put("errorMessage", "直播审核入库失败");
map.put("statusCode", "300");
map.put("result", result);
}
return map;
}
@RequestMapping(value = "callbackLiveResult", method = RequestMethod.POST)
@ResponseBody
public void getFilterVideoResult(@RequestBody String json) {
logger.info("数美视频过滤回调,json:{}", json);
if (StringUtils.isNotEmpty(json)) {
JSONObject jsonObj = JSON.parseObject(json);
JSONObject resultObj = jsonObj.getJSONObject("result");
Integer code = resultObj.getInteger("code");
if (code != null && code == 1100) {
String riskLevel = resultObj.getString("riskLevel");
if ("PASS".equals(riskLevel)) {
}
if ("REJECT".equals(riskLevel)) {
JSONObject detail = resultObj.getJSONObject("detail");
logger.info("数美视频回调--REJECT,detail:{}", detail);
// resultObj.put("desc",
// String.format("(%s-%s)", detail.getString("description"), detail.getString("matchedItem")));
}
if ("REVIEW".equals(riskLevel)) {
}
}else{
//数美请求结果code为失败状态
// jsonObj.put("type", "REJECT");
// jsonObj.put("desc","code:"+code+",message:"+resultObj.getString("message") );
}
}
}
/**
* 测试视频流
* @param videoStream
*/
@RequestMapping(value="ceshiVideo")
@ResponseBody
public void ceshiVideo(String videoStream){
//调用数美接口
JSONObject result = AntiFraudUtil.filterVideoStream(videoStream, UUID.randomUUID().toString(), "测试流的名称", "");
logger.info("code="+result.getString("code"));
logger.info("requestId="+result.getString("requestId"));
logger.error("直播流开始测试,result:{}", result);
}
/**
* 测试视频流
* @param
*/
@RequestMapping(value="ceshiFinishVideo")
@ResponseBody
public void ceshiFinishVideo(String url,String requestId){
//调用数美接口
JSONObject result = AntiFraudUtil.finishVideoStream(url,requestId);
logger.info("code="+result.getString("code"));
logger.info("requestId="+result.getString("requestId"));
logger.error("直播流结束测试,result:{}", result);
}
/**
* 测试视频流
* @param
*/
@RequestMapping(value="queryVideo")
@ResponseBody
public void queryVideo(){
//调用数美接口
JSONObject result = AntiFraudUtil.queryVideoStreamResult();
logger.info("code="+result.getString("code"));
logger.info("requestId="+result.getString("requestId"));
logger.error("直播流查询,result:{}", result);
}
}