加密工具类

public class Md5Utils {
    public static String getMD5(String str) {
        try {
            // 生成一个MD5加密计算摘要
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算md5函数
            md.update(str.getBytes());
            // digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
            // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
            String md5=new BigInteger(1, md.digest()).toString(16);
            //BigInteger会把0省略掉,需补全至32位
            return fillMD5(md5);
        } catch (Exception e) {
            throw new RuntimeException("MD5加密错误:"+e.getMessage(),e);
        }
    }
    private static String fillMD5(String md5){
        return md5.length()==32?md5:fillMD5("0"+md5);
    }
}

拼接推流和播流地址

import com.alibaba.nacos.common.util.UuidUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.RandomStringUtils;

import java.text.ParseException;
import java.util.HashMap;
import java.util.Map;

/**
 * 创建时间 2018/11/12
 *
 * @author plani
 */
@Slf4j
public class PlayAndPushUtils {
    /**
     * @param appName    控制台上面的app名称
     * @param streamName 流的名称
     * @param time       十位数的时间戳
     * @param rand       随机数,建议使用UUID(不能包含中划线“-”,例如: 477b3bbc253f467b8def6711128c7bec 格式)
     * @param key        鉴权key
     * @param liveDomain 推流域名
     * @return 推流的地址
     */
    public static String CreatePushUrl(String appName, String streamName, String time,String rand, String key, String liveDomain) {
/*        Objects.requireNonNull(appName);
        Objects.requireNonNull(streamName);
        Objects.requireNonNull(time);
        Objects.requireNonNull(key);
        Objects.requireNonNull(liveDomain);*/
        String strpush = "/" + appName + "/" + streamName + "-" + time + "-0-0-" + key;
        String pushurl = "rtmp://"+liveDomain+"/" + appName + "/" + streamName + "?auth_key=" + time + "-0-0-" + Md5Utils.getMD5(strpush);
        return pushurl;
    }


    /**
     * @param appName    控制台上面的app名称
     * @param streamName 流的名称
     * @param time       十位数的时间戳
     * @param rand       这是用来标识的 否则同一个时间戳 生成的地址总是相同的  随机数,建议使用UUID(不能包含中划线“-”,例如: 477b3bbc253f467b8def6711128c7bec 格式)
     * @param key        鉴权key
     * @param liveDomain 推流域名
     * @param templateId 无用 传入null就行
     * @return 播放流的地址 默认是flv  也可以更改此代码
     */
    public static Map<String, String> GetPlayUrl(String appName, String streamName, String time, String rand, String key, String liveDomain, String templateId) {
        String strviewrtmp1 = null;
        String strviewflv1 = null;
        String strviewm3u81 = null;

        String rtmpurl1 = null;
        String flvurl1 = null;
        String m3u8url1 = null;
        Map<String,String> map = new HashMap<>();
        if (templateId == null) {
            strviewrtmp1 = "/" + appName + "/" + streamName + "-" + time + "-0-0-" + key;
            strviewflv1 = "/" + appName + "/" + streamName + ".flv-" + time + "-0-0-" + key;
            strviewm3u81 = "/" + appName + "/" + streamName + ".m3u8-" + time + "-0-0-" + key;
            rtmpurl1 = "rtmp://" + liveDomain + "/" + appName + "/" + streamName + "?auth_key=" + time + "-0-0-" + Md5Utils.getMD5(strviewrtmp1);
            flvurl1 = "http://" + liveDomain + "/" + appName + "/" + streamName + ".flv?auth_key=" + time + "-0-0-" + Md5Utils.getMD5(strviewflv1);
            m3u8url1 = "http://" + liveDomain + "/" + appName + "/" + streamName + ".m3u8?auth_key=" + time + "-0-0-" + Md5Utils.getMD5(strviewm3u81);
            map.put("rtmpurl",rtmpurl1);
            map.put("flvurl",flvurl1);
            map.put("m3u8url",m3u8url1);
        } else {
            strviewrtmp1 = "/" + appName + "/" + streamName + "_" + templateId + "-" + time + "-"+rand+"-0-" + key;
            strviewflv1 = "/" + appName + "/" + streamName + "_" + templateId + ".flv-" + time + "-"+rand+"-0-" + key;
            strviewm3u81 = "/" + appName + "/" + streamName + "_" + templateId + ".m3u8-" + time + "-"+rand+"-0-" + key;
            rtmpurl1 = "rtmp://" + liveDomain + "/" + appName + "/" + streamName + "_" + templateId + "?auth_key=" + time + "-"+rand+"-0-" + Md5Utils.getMD5(strviewrtmp1);
            flvurl1 = "http://" + liveDomain + "/" + appName + "/" + streamName + "_" + templateId + ".flv?auth_key=" + time + "-"+rand+"-0-" + Md5Utils.getMD5(strviewflv1);
            m3u8url1 = "http://" + liveDomain + "/" + appName + "/" + streamName + "_" + templateId + ".m3u8?auth_key=" + time + "-"+rand+"-0-" + Md5Utils.getMD5(strviewm3u81);
            map.put("rtmpurl",rtmpurl1);
            map.put("flvurl",flvurl1);
            map.put("m3u8url",m3u8url1);
        }


        return map;
    }
}
01-05 15:43