视频推流地址生成工具类AliPlayAndPushUtils.class
public class AliPlayAndPushUtils {
private static final String appName = " ";
private static final String key = " ";
public static String CreatePushUrl(String streamName, long time,String rand,String pushDomain) {
String strpush = "/" + appName + "/" + streamName + "-" + time + "-"+rand+"-0-" + key;
String pushUrl = "rtmp://" + pushDomain + "/" + appName + "/" + streamName + "?auth_key=" + time + "-"+rand+"-0-"+MD5Util.md5(strpush);
return pushUrl;
}
public static String GetPlayUrl(String streamName, long time,String rand,String pullDomain) {
String strviewrtmp1 = null;
String strviewflv1 = null;
String strviewm3u81 = null;
String rtmpurl1 = null;
String flvurl1 = null;
String m3u8url1 = null;
strviewrtmp1 = "/" + appName + "/" + streamName + "-" + time + "-"+rand+"-0-" + key;
strviewflv1 = "/" + appName + "/" + streamName + ".flv-" + time + "-"+rand+"-0-" + key;
strviewm3u81 = "/" + appName + "/" + streamName + ".m3u8-" + time + "-"+rand+"-0-" + key;
rtmpurl1 = "rtmp://" + pullDomain + "/" + appName + "/" + streamName + "?auth_key=" + time + "-"+rand+"-0-" +MD5Util.md5(strviewrtmp1);
flvurl1 = "http://" + pullDomain + "/" + appName + "/" + streamName + ".flv?auth_key=" + time + "-"+rand+"-0-" + MD5Util.md5(strviewflv1);
m3u8url1 = "http://" + pullDomain + "/" + appName + "/" + streamName + ".m3u8?auth_key=" + time + "-"+rand+"-0-" + MD5Util.md5(strviewm3u81);
Map<String, String> resultMap = new HashMap<>(5);
resultMap.put("rtmp", rtmpurl1);
resultMap.put("flv", flvurl1);
resultMap.put("m3u8", m3u8url1);
return JSONObject.toJSONString(resultMap);
}
}
signature加密工具类AliSignatureUtils.calss
public class AliSignatureUtils {
private static Logger logger = LoggerFactory.getLogger(AliSignatureUtils.class);
public static final String ISO8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
public static final String ALGORITHM = "HmacSHA1";
public static final String ENCODING = "UTF-8";
public static final String FORMAT_JSON = "JSON";
public static final String FORMAT_XML = "XML";
public static final String AccessKeyId = "";
public static final String AccessKeySecret = "";
public static final String SignatureMethod = "HMAC-SHA1";
public static final String SignatureVersion = "1.0";
public static String getSignature(Map<String, String> parameters) {
String signature = "";
try {
String[] sortedKeys = (String[]) parameters.keySet().toArray(new String[]{});
Arrays.sort(sortedKeys);
String SEPARATOR = "&";
StringBuilder stringToSign = new StringBuilder();
stringToSign.append("GET").append(SEPARATOR);
stringToSign.append(percentEncode("/")).append(SEPARATOR);
StringBuilder canonicalizedQueryString = new StringBuilder();
for (String key : sortedKeys) {
canonicalizedQueryString.append("&").append(percentEncode(key))
.append("=").append(percentEncode((String) parameters.get(key)));
}
stringToSign.append(percentEncode(canonicalizedQueryString.toString()
.substring(1)));
String key = AccessKeySecret + "&";
Mac mac = Mac.getInstance(ALGORITHM);
mac.init(new SecretKeySpec(key.getBytes(ENCODING), ALGORITHM));
byte[] signData = mac.doFinal(stringToSign.toString().getBytes(ENCODING));
signature = new String(new BASE64Encoder().encode(signData));
signature = percentEncode(signature);
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
}
return signature;
}
private static String percentEncode(String value) throws UnsupportedEncodingException {
return value != null ? URLEncoder.encode(value, "utf-8").replace("+", "%20").replace("*", "%2A").replace("%7E", "~") : null;
}
public static String getTimeStamp(Date date) {
SimpleDateFormat df = new SimpleDateFormat(ISO8601_DATE_FORMAT);
df.setTimeZone(new SimpleTimeZone(0, "GMT"));
return df.format(date);
}
}
视频直播录制工具类AliLiveUtils.class
import com.sun.org.apache.xerces.internal.xs.datatypes.ObjectList;
import com.xm.redis.RedisClient;
import org.apache.commons.collections.MapUtils;
import org.apache.log4j.Logger;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
public class AliLiveUtils {
private static Logger logger = Logger.getLogger(AliLiveUtils.class);
private static final char[] DIGITS_LOWER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
private static final String PUSH_ADR_TEMPLATE = "rtmp://video-center.alivecdn.com/%s/%s?vhost=%s&auth_key=%s";
private static final String PLAY_ADR_TEMPLATE = "%s://live.xiameikeji.com/%s/%s?auth_key=%s";
private static final String KEY = "juyp6sG2I4";
private static final String LIVE_HOST = " ";
private static final String APP_NAME = "live";
private static final String RTMP_PREFIX = "rtmp";
private static final String FLV_PREFIX = "http";
private static final String FLV_SUFFIX = ".flv";
private static final String M3U8_PREFIX = "http";
private static final String M3U8_SUFFIX = ".m3u8";
public static final String LIVE_SERVER_HOST = "https://live.aliyuncs.com/";
public static final String LIVE_VERSION = "2016-11-01";
public static final String LIVE_OnlineUserNumAction = "DescribeLiveStreamOnlineUserNum";
public static final String LIVE_RecordContent = "DescribeLiveStreamRecordContent";
public static final String LIVE_ForbidLiveStream = "ForbidLiveStream";
public static final String LIVE_ResumeLiveStream = "ResumeLiveStream";
public static final String LIVE_RecordIndexFiles = "DescribeLiveStreamRecordIndexFiles";
public static final String RECORD_PREFIX = "https://xiameilive.oss-cn-shanghai.aliyuncs.com/";
private static String getAuthKey(String channel, long time) {
String input = new StringBuilder()
.append("/")
.append(APP_NAME)
.append("/")
.append(channel)
.append("-")
.append(time)
.append("-")
.append("0")
.append("-")
.append("0")
.append("-")
.append(KEY)
.toString();
String authKey = null;
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
authKey = byteArrayToHexString(
messageDigest.digest(input.getBytes("UTF-8")));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
authKey = authKey == null ? "" :
new StringBuilder()
.append(time)
.append("-")
.append("0")
.append("-")
.append("0")
.append("-")
.append(authKey).
toString();
return authKey;
}
private static String byteArrayToHexString(byte[] data) {
char[] out = new char[data.length << 1];
for (int i = 0, j = 0; i < data.length; i++) {
out[j++] = DIGITS_LOWER[(0xF0 & data[i]) >>> 4];
out[j++] = DIGITS_LOWER[0x0F & data[i]];
}
return new String(out);
}
public static String getPushAdr(String channel) {
String authKey = getAuthKey(channel, new Date().getTime() / 1000);
return String.format(PUSH_ADR_TEMPLATE, APP_NAME, channel, LIVE_HOST, authKey);
}
public static String getPlayAdr(String channel, Integer type) {
String prefix = null;
if (type == 0) {
prefix = RTMP_PREFIX;
} else if (type == 1) {
channel += FLV_SUFFIX;
prefix = FLV_PREFIX;
} else if (type == 2) {
channel += M3U8_SUFFIX;
prefix = M3U8_PREFIX;
}
long time = new Date().getTime() / 1000;
String authKey = getAuthKey(channel, time);
String playAdr = String.format(PLAY_ADR_TEMPLATE, prefix, APP_NAME, channel, authKey);
return playAdr;
}
public static Integer getOnlineNum(String channel) {
return getOnlineNumByRandom(channel);
}
public static void forbidLiveStream(String channel) {
try {
StringBuffer params = new StringBuffer();
String signatureNonce = AliSignatureUtils.getSignatureNonce();
String UTCTimeStr = AliSignatureUtils.getTimeStamp(new Date());
Map parameters = new HashMap();
parameters.put("Format", AliSignatureUtils.FORMAT_JSON);
parameters.put("Version", LIVE_VERSION);
parameters.put("AccessKeyId", AliSignatureUtils.AccessKeyId);
parameters.put("SignatureMethod", AliSignatureUtils.SignatureMethod);
parameters.put("SignatureVersion", AliSignatureUtils.SignatureVersion);
parameters.put("SignatureNonce", signatureNonce);
parameters.put("Timestamp", UTCTimeStr);
parameters.put("Action", LIVE_ForbidLiveStream);
parameters.put("DomainName", LIVE_HOST);
parameters.put("AppName", APP_NAME);
parameters.put("LiveStreamType", "publisher");
parameters.put("StreamName", channel);
String signature = AliSignatureUtils.getSignature(parameters);
params.append("Format=" + AliSignatureUtils.FORMAT_JSON)
.append("&Version=" + LIVE_VERSION)
.append("&AccessKeyId=" + AliSignatureUtils.AccessKeyId)
.append("&SignatureMethod=" + AliSignatureUtils.SignatureMethod)
.append("&SignatureVersion=" + AliSignatureUtils.SignatureVersion)
.append("&SignatureNonce=" + signatureNonce)
.append("&Timestamp=" + UTCTimeStr)
.append("&Action=" + LIVE_ForbidLiveStream)
.append("&DomainName=" + LIVE_HOST)
.append("&AppName=" + APP_NAME)
.append("&LiveStreamType=" + "publisher")
.append("&StreamName=" + channel)
.append("&Signature=" + signature);
logger.info("url===" + LIVE_SERVER_HOST + "?" + params.toString());
String resJson = HttpRequestUtils.sendGet(LIVE_SERVER_HOST, params.toString());
Map<String, Object> resMap = JsonUtils.json2Map(resJson);
logger.info("result==>" + resJson);
clearOnlineNum(channel);
} catch (Exception e) {
logger.error("禁止直播流推送", e);
}
}
public static void resumeLiveStream(String channel) {
try {
StringBuffer params = new StringBuffer();
String signatureNonce = AliSignatureUtils.getSignatureNonce();
String UTCTimeStr = AliSignatureUtils.getTimeStamp(new Date());
Map parameters = new HashMap();
parameters.put("Format", AliSignatureUtils.FORMAT_JSON);
parameters.put("Version", LIVE_VERSION);
parameters.put("AccessKeyId", AliSignatureUtils.AccessKeyId);
parameters.put("SignatureMethod", AliSignatureUtils.SignatureMethod);
parameters.put("SignatureVersion", AliSignatureUtils.SignatureVersion);
parameters.put("SignatureNonce", signatureNonce);
parameters.put("Timestamp", UTCTimeStr);
parameters.put("Action", LIVE_ResumeLiveStream);
parameters.put("DomainName", LIVE_HOST);
parameters.put("AppName", APP_NAME);
parameters.put("LiveStreamType", "publisher");
parameters.put("StreamName", channel);
String signature = AliSignatureUtils.getSignature(parameters);
params.append("Format=" + AliSignatureUtils.FORMAT_JSON)
.append("&Version=" + LIVE_VERSION)
.append("&AccessKeyId=" + AliSignatureUtils.AccessKeyId)
.append("&SignatureMethod=" + AliSignatureUtils.SignatureMethod)
.append("&SignatureVersion=" + AliSignatureUtils.SignatureVersion)
.append("&SignatureNonce=" + signatureNonce)
.append("&Timestamp=" + UTCTimeStr)
.append("&Action=" + LIVE_ResumeLiveStream)
.append("&DomainName=" + LIVE_HOST)
.append("&AppName=" + APP_NAME)
.append("&LiveStreamType=" + "publisher")
.append("&StreamName=" + channel)
.append("&Signature=" + signature);
logger.info("url===" + LIVE_SERVER_HOST + "?" + params.toString());
String resJson = HttpRequestUtils.sendGet(LIVE_SERVER_HOST, params.toString());
Map<String, Object> resMap = JsonUtils.json2Map(resJson);
logger.info("result==>" + resJson);
} catch (Exception e) {
logger.error("恢复直播推流失败", e);
}
}
public static List<Map<String, Object>> getFileListByLiveApi(String channel, Date actualStartTime) {
try {
List<Map<String, Object>> resultList = new ArrayList<>();
if (actualStartTime == null) {
return resultList;
}
StringBuffer params = new StringBuffer();
String signatureNonce = AliSignatureUtils.getSignatureNonce();
String UTCTimeStr = AliSignatureUtils.getTimeStamp(new Date());
String startTime = AliSignatureUtils.getTimeStamp(actualStartTime);
Calendar c = Calendar.getInstance();
c.setTime(actualStartTime);
c.add(Calendar.DAY_OF_YEAR, 3);
String endTime = AliSignatureUtils.getTimeStamp(c.getTime());
Map parameters = new HashMap();
parameters.put("Format", AliSignatureUtils.FORMAT_JSON);
parameters.put("Version", LIVE_VERSION);
parameters.put("AccessKeyId", AliSignatureUtils.AccessKeyId);
parameters.put("SignatureMethod", AliSignatureUtils.SignatureMethod);
parameters.put("SignatureVersion", AliSignatureUtils.SignatureVersion);
parameters.put("SignatureNonce", signatureNonce);
parameters.put("Timestamp", UTCTimeStr);
parameters.put("Action", LIVE_RecordIndexFiles);
parameters.put("DomainName", LIVE_HOST);
parameters.put("AppName", APP_NAME);
parameters.put("StreamName", channel);
parameters.put("StartTime", startTime);
parameters.put("EndTime", endTime);
String signature = AliSignatureUtils.getSignature(parameters);
params.append("Format=" + AliSignatureUtils.FORMAT_JSON)
.append("&Version=" + LIVE_VERSION)
.append("&AccessKeyId=" + AliSignatureUtils.AccessKeyId)
.append("&SignatureMethod=" + AliSignatureUtils.SignatureMethod)
.append("&SignatureVersion=" + AliSignatureUtils.SignatureVersion)
.append("&SignatureNonce=" + signatureNonce)
.append("&Timestamp=" + UTCTimeStr)
.append("&Action=" + LIVE_RecordIndexFiles)
.append("&DomainName=" + LIVE_HOST)
.append("&AppName=" + APP_NAME)
.append("&StreamName=" + channel)
.append("&StartTime=" + startTime)
.append("&EndTime=" + endTime)
.append("&Signature=" + signature);
logger.info("url===" + LIVE_SERVER_HOST + "?" + params.toString());
String resJson = HttpRequestUtils.sendGet(LIVE_SERVER_HOST, params.toString());
logger.info("result==>" + resJson);
Map<String, Object> resMap = JsonUtils.json2Map(resJson);
if (resMap != null) {
Map<String, Object> recordIndexInfoList = MapUtils.getMap(resMap, "RecordIndexInfoList");
List<Map<String, Object>> recordIndexInfo = (List<Map<String, Object>>) recordIndexInfoList.get("RecordIndexInfo");
for (Map<String, Object> map : recordIndexInfo) {
Map<String, Object> temp = new HashMap<>();
temp.put("fileName", MapUtils.getString(map, "RecordUrl"));
Date ISOStartTime = DateUtiles.stringToDate(MapUtils.getString(map, "StartTime"), Constant.ISO8601_DATE_FORMAT);
temp.put("startTime", DateUtiles.dateToString(ISOStartTime, Constant.TIME_FORMAT));
Date ISOEndTime = DateUtiles.stringToDate(MapUtils.getString(map, "EndTime"), Constant.ISO8601_DATE_FORMAT);
temp.put("endTime", DateUtiles.dateToString(ISOEndTime, Constant.TIME_FORMAT));
temp.put("duration", MapUtils.getObject(map, "Duration") + "");
resultList.add(temp);
}
}
resMap = null;
return resultList;
} catch (Exception e) {
logger.error("恢复直播推流失败", e);
}
return null;
}
private static void addLiveRecordNotifyConfig() {
try {
StringBuffer params = new StringBuffer();
String signatureNonce = AliSignatureUtils.getSignatureNonce();
String UTCTimeStr = AliSignatureUtils.getTimeStamp(new Date());
String action = "AddLiveRecordNotifyConfig";
Map parameters = new HashMap();
parameters.put("Format", AliSignatureUtils.FORMAT_JSON);
parameters.put("Version", LIVE_VERSION);
parameters.put("AccessKeyId", AliSignatureUtils.AccessKeyId);
parameters.put("SignatureMethod", AliSignatureUtils.SignatureMethod);
parameters.put("SignatureVersion", AliSignatureUtils.SignatureVersion);
parameters.put("SignatureNonce", signatureNonce);
parameters.put("Timestamp", UTCTimeStr);
parameters.put("Action", action);
parameters.put("DomainName", LIVE_HOST);
parameters.put("NotifyUrl", Constant.DOMAIN_NAME + "/ali/live/record.json");
parameters.put("NeedStatusNotify", "false");
String signature = AliSignatureUtils.getSignature(parameters);
params.append("Format=" + AliSignatureUtils.FORMAT_JSON)
.append("&Version=" + LIVE_VERSION)
.append("&AccessKeyId=" + AliSignatureUtils.AccessKeyId)
.append("&SignatureMethod=" + AliSignatureUtils.SignatureMethod)
.append("&SignatureVersion=" + AliSignatureUtils.SignatureVersion)
.append("&SignatureNonce=" + signatureNonce)
.append("&Timestamp=" + UTCTimeStr)
.append("&Action=" + action)
.append("&DomainName=" + LIVE_HOST)
.append("&NotifyUrl=" + Constant.DOMAIN_NAME + "/ali/live/record.json")
.append("&NeedStatusNotify=" + "false")
.append("&Signature=" + signature);
logger.info("url===" + LIVE_SERVER_HOST + "?" + params.toString());
String resJson = HttpRequestUtils.sendGet(LIVE_SERVER_HOST, params.toString());
Map<String, Object> resMap = JsonUtils.json2Map(resJson);
logger.info("result==>" + resJson);
} catch (Exception e) {
logger.error("添加录制回调配置", e);
}
}
private static void deleteLiveRecordNotifyConfig() {
try {
StringBuffer params = new StringBuffer();
String signatureNonce = AliSignatureUtils.getSignatureNonce();
String UTCTimeStr = AliSignatureUtils.getTimeStamp(new Date());
String action = "DeleteLiveRecordNotifyConfig";
Map parameters = new HashMap();
parameters.put("Format", AliSignatureUtils.FORMAT_JSON);
parameters.put("Version", LIVE_VERSION);
parameters.put("AccessKeyId", AliSignatureUtils.AccessKeyId);
parameters.put("SignatureMethod", AliSignatureUtils.SignatureMethod);
parameters.put("SignatureVersion", AliSignatureUtils.SignatureVersion);
parameters.put("SignatureNonce", signatureNonce);
parameters.put("Timestamp", UTCTimeStr);
parameters.put("Action", action);
parameters.put("DomainName", LIVE_HOST);
String signature = AliSignatureUtils.getSignature(parameters);
params.append("Format=" + AliSignatureUtils.FORMAT_JSON)
.append("&Version=" + LIVE_VERSION)
.append("&AccessKeyId=" + AliSignatureUtils.AccessKeyId)
.append("&SignatureMethod=" + AliSignatureUtils.SignatureMethod)
.append("&SignatureVersion=" + AliSignatureUtils.SignatureVersion)
.append("&SignatureNonce=" + signatureNonce)
.append("&Timestamp=" + UTCTimeStr)
.append("&Action=" + action)
.append("&DomainName=" + LIVE_HOST)
.append("&Signature=" + signature);
logger.info("url===" + LIVE_SERVER_HOST + "?" + params.toString());
String resJson = HttpRequestUtils.sendGet(LIVE_SERVER_HOST, params.toString());
Map<String, Object> resMap = JsonUtils.json2Map(resJson);
logger.info("result==>" + resJson);
} catch (Exception e) {
logger.error("删除录制回调配置", e);
}
}
private static void getLiveRecordNotifyConfig() {
try {
StringBuffer params = new StringBuffer();
String signatureNonce = AliSignatureUtils.getSignatureNonce();
String UTCTimeStr = AliSignatureUtils.getTimeStamp(new Date());
String action = "DescribeLiveRecordNotifyConfig";
Map parameters = new HashMap();
parameters.put("Format", AliSignatureUtils.FORMAT_JSON);
parameters.put("Version", LIVE_VERSION);
parameters.put("AccessKeyId", AliSignatureUtils.AccessKeyId);
parameters.put("SignatureMethod", AliSignatureUtils.SignatureMethod);
parameters.put("SignatureVersion", AliSignatureUtils.SignatureVersion);
parameters.put("SignatureNonce", signatureNonce);
parameters.put("Timestamp", UTCTimeStr);
parameters.put("Action", action);
parameters.put("DomainName", LIVE_HOST);
String signature = AliSignatureUtils.getSignature(parameters);
params.append("Format=" + AliSignatureUtils.FORMAT_JSON)
.append("&Version=" + LIVE_VERSION)
.append("&AccessKeyId=" + AliSignatureUtils.AccessKeyId)
.append("&SignatureMethod=" + AliSignatureUtils.SignatureMethod)
.append("&SignatureVersion=" + AliSignatureUtils.SignatureVersion)
.append("&SignatureNonce=" + signatureNonce)
.append("&Timestamp=" + UTCTimeStr)
.append("&Action=" + action)
.append("&DomainName=" + LIVE_HOST)
.append("&Signature=" + signature);
logger.info("url===" + LIVE_SERVER_HOST + "?" + params.toString());
String resJson = HttpRequestUtils.sendGet(LIVE_SERVER_HOST, params.toString());
Map<String, Object> resMap = JsonUtils.json2Map(resJson);
logger.info("result==>" + resJson);
} catch (Exception e) {
logger.error("删除录制回调配置", e);
}
}
private static void updateLiveRecordNotifyConfig() {
try {
StringBuffer params = new StringBuffer();
String signatureNonce = AliSignatureUtils.getSignatureNonce();
String UTCTimeStr = AliSignatureUtils.getTimeStamp(new Date());
String action = "UpdateLiveRecordNotifyConfig";
Map parameters = new HashMap();
parameters.put("Format", AliSignatureUtils.FORMAT_JSON);
parameters.put("Version", LIVE_VERSION);
parameters.put("AccessKeyId", AliSignatureUtils.AccessKeyId);
parameters.put("SignatureMethod", AliSignatureUtils.SignatureMethod);
parameters.put("SignatureVersion", AliSignatureUtils.SignatureVersion);
parameters.put("SignatureNonce", signatureNonce);
parameters.put("Timestamp", UTCTimeStr);
parameters.put("Action", action);
parameters.put("DomainName", LIVE_HOST);
parameters.put("AppName", APP_NAME);
parameters.put("NotifyUrl", Constant.DOMAIN_NAME + "/ali/live/recordSuccess.json");
parameters.put("NeedStatusNotify", "false");
String signature = AliSignatureUtils.getSignature(parameters);
params.append("Format=" + AliSignatureUtils.FORMAT_JSON)
.append("&Version=" + LIVE_VERSION)
.append("&AccessKeyId=" + AliSignatureUtils.AccessKeyId)
.append("&SignatureMethod=" + AliSignatureUtils.SignatureMethod)
.append("&SignatureVersion=" + AliSignatureUtils.SignatureVersion)
.append("&SignatureNonce=" + signatureNonce)
.append("&Timestamp=" + UTCTimeStr)
.append("&Action=" + action)
.append("&DomainName=" + LIVE_HOST)
.append("&AppName=" + APP_NAME)
.append("&NotifyUrl=" + Constant.DOMAIN_NAME + "/ali/live/recordSuccess.json")
.append("&NeedStatusNotify=" + "false")
.append("&Signature=" + signature);
logger.info("url===" + LIVE_SERVER_HOST + "?" + params.toString());
String resJson = HttpRequestUtils.sendGet(LIVE_SERVER_HOST, params.toString());
Map<String, Object> resMap = JsonUtils.json2Map(resJson);
logger.info("result==>" + resJson);
} catch (Exception e) {
logger.error("删除录制回调配置", e);
}
}
private static int getOnlineNumByRandom(String channel) {
Integer num = 0;
String redisKey = Constant.REDIS_KEY_LIVE_ONLINE_NUM + channel;
int random = new Random().nextInt(4) + 1;
String temp = RedisClient.get(redisKey);
if (temp != null) {
num = Integer.valueOf(temp) + random;
} else {
num = random;
}
RedisClient.set(redisKey, num + "", 60 * 60);
return num;
}
private static void clearOnlineNum(String channel) {
RedisClient.del(Constant.REDIS_KEY_LIVE_ONLINE_NUM + channel);
}
public static void main(String[] args) throws Exception {
String channel = "123456";
forbidLiveStream(channel);
}
}