视频直播生成推流和播放地址的Java代码示例

视频直播生成推流和播放地址的Java示例代码如下所示。

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.lang3.*;
public class Create_Live_Url {

/**

  • 计算md5
  • @param param
  • @return
    */
    public static String md5(String param) {
    if(param == null || param.length() == 0) {
    return null;
    }
    try {
    MessageDigest md5 = MessageDigest.getInstance(“MD5”);
    md5.update(param.getBytes());
    byte[] byteArray = md5.digest();

BigInteger bigInt = new BigInteger(1, byteArray);
// 参数16表示16进制
String result = bigInt.toString(16);
// 不足32位高位补零
while(result.length() < 32) {
result = “0” + result;
}
return result;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
/**
* 生成推流地址
* @param pushDomain 推流域名
* @param pushKey 推流域名配置的鉴权Key
* @param appName 推流AppName
* @param streamName 推流StreamName
* @param expireTime 过期时间(单位是秒)
/
public static void generate_push_url(String pushDomain,String pushKey,String appName,String streamName,long expireTime) {
String pushUrl = “”;
//推流域名未开启鉴权功能的情况下
if(pushKey=="") {
pushUrl = “rtmp://”+pushDomain+"/"+appName+"/"+streamName;
}else {
long timeStamp = System.currentTimeMillis()/1000L + expireTime;
String stringToMd5 = “/”+appName+"/"+streamName+"-"+Long.toString(timeStamp)+"-0-0-"+pushKey;
String authKey = md5(stringToMd5);
pushUrl = “rtmp://”+pushDomain+"/"+appName+"/"+streamName+"?auth_key="+Long.toString(timeStamp)+"-0-0-"+authKey;
}
System.out.println("推流地址是: "+pushUrl);
}
/
*

  • 生成播放地址
  • @param pullDomain 播放域名
  • @param pullKey 播放鉴权Key
  • @param appName 播放appName(同推流appName)
  • @param streamName 播放streamName (同推流streamName)
  • @param expireTime 过期时间(单位是秒
    */
    public static void general_pull_url(String pullDomain,String pullKey,String appName,String streamName,long expireTime) {
    String rtmpUrl = “”; //rtmp的拉流地址
    String hlsUrl = “”; //m3u8的拉流地址
    String flvUrl = “”; //flv的拉流地址
    //播放域名未配置鉴权Key的情况下
    if(pullKey == “”) {
    rtmpUrl = “rtmp://”+pullDomain+"/"+appName+"/"+streamName;
    hlsUrl = “http://”+pullDomain+"/"+appName+"/"+streamName+".m3u8";
    flvUrl = “http://”+pullDomain+"/"+appName+"/"+streamName+".flv";
    }else {
    long timeStamp = System.currentTimeMillis()/1000L + expireTime;
    String rtmpToMd5 = “/”+appName+"/"+streamName+"-"+Long.toString(timeStamp)+"-0-0-"+pullKey;
    String rtmpAuthKey = md5(rtmpToMd5);
    rtmpUrl = “rtmp://”+pullDomain+"/"+appName+"/"+streamName+"?auth_key="+Long.toString(timeStamp)+"-0-0-"+rtmpAuthKey;

String hlsToMd5 = “/”+appName+"/"+streamName+".m3u8-"+Long.toString(timeStamp)+"-0-0-"+pullKey;
String hlsAuthKey = md5(hlsToMd5);
hlsUrl = “http://”+pullDomain+"/"+appName+"/"+streamName+".m3u8"+"?auth_key="+Long.toString(timeStamp)+"-0-0-"+hlsAuthKey;

String flvToMd5 = “/”+appName+"/"+streamName+".flv-"+Long.toString(timeStamp)+"-0-0-"+pullKey;
String flvAuthKey = md5(flvToMd5);
flvUrl = “http://”+pullDomain+"/"+appName+"/"+streamName+".flv"+"?auth_key="+Long.toString(timeStamp)+"-0-0-"+flvAuthKey;
}
System.out.println("RTMP播放地址为: "+rtmpUrl);
System.out.println("m3u8播放地址为: "+hlsUrl);
System.out.println("flv播放地址为: "+flvUrl);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//生成长度为5的随机字符串作为appName和streamName(字母和数字组合)
String appName = RandomStringUtils.randomAlphanumeric(5);;
String streamName = RandomStringUtils.randomAlphanumeric(5);;

long expireTime = 3600L;
String pullDomain = “mxl-pull.pier39.cn”;
String pullKey = “querty1234”;

 String pushDomain = "mxl-push.pier39.cn";

String pushKey = “querty123”;
Create_Live_Url.general_pull_url(pullDomain, pullKey, appName, streamName, expireTime);
Create_Live_Url.generate_push_url(pushDomain, pushKey, appName, streamName, expireTime);
}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值