/***
 * 腾讯云 直播
 * 
 *
 */
public class TencentYunVedioUtil {

public static final String bizid = "54852";
    //推流防盗链的key
    public static final String push_key = "cbdaq2bbfqewrb6a446213ba5db84786e";
    //拉流防盗链的key
    public static final String play_key = "u36VZisasfD1THL21C232LIxT997m9x2e";
    //推流地址 例子  bizid:8888      直播码:8888_test_123    防盗链签名  txSecret 过期时间  txTime
    public static final String pushUrl ="rtmp://54852.livepush.myqcloud.com/live/";
    
    //拉流地址 例子 rtmp  只需要将push 改成play即可
    public static final String playUrl_rmpt ="rtmp://live.test.xx.cn/live/";
    public static final String playUrl_flv ="rtmp://live.test.xx.cn/live/";
    public static final String playUrl_hls ="rtmp://live.test.xx.cn/live/";
    
    
    
    
    /**
     * 生成防盗链签名
     * @param key :防盗链key
     * @param stream_id :直播码(或称作流ID)
     * @param txTime :过期时间 16进制的unix时间戳
     * @return
     */
    public static String genSign(String key,String stream_id,String txTime) {
        return     MD5Encode.getMD5Str(key+stream_id+txTime);
    }
    
    /**
     * 生成直播码
     *        直播码 也叫房间号,推荐用随机数字或者用户ID,注意一个合法的直播码需要拼接 BIZID 前缀。
     * @param bizid 
     * @param userId 用户id
     * @return
     */
    public static String genLiveCode(String bizid,String userId) {
        return bizid+"_"+userId;
    }
    
    
    
    /**
     * 将传入的时间转换为 16进制
     * @param date
     * @return
     */
    public static String to16Hex(Date date) {
        Long ab = date.getTime()/1000;
        String a = Long.toHexString(ab);
        return a.toUpperCase();
    }
    
    /**
     * 将当前时间加1天
     */
    public static Date addOneDay() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DAY_OF_MONTH, 1);
        Date date = cal.getTime();
        return date;
    }
    /**
     * 校验是否在线
     * @param urls 拉流地址
     * @return
     */
    public static boolean isPush(String urls) {
        try {
            URL url = new URL(urls);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(1000);
            conn.setReadTimeout(1000);
            conn.setRequestMethod("GET");
            conn.connect();
            return conn.getResponseCode() == 200;
        } catch (Exception e) {
        }
        return false;
    }
    
    
    
    
    /**
     * 生成推流全路径地址
     * @param pushUrl 推流地址 头部
     * @param stream_id 直播码  调用该方法genLiveCode() 生成  
     * @param push_key 推流鉴权
     * @return
     */
    public static String createPushUrl(String pushUrlHead,String stream_id,String push_key) {
        //过期时间 16进制的unix时间戳
        String txTime = to16Hex(addOneDay());
        StringBuffer sb = new StringBuffer();
        sb.append(pushUrlHead)
            .append(stream_id)
            .append("?")
            .append("txSecret=")
            .append(genSign(push_key, stream_id,txTime))
            .append("&")
            .append("txTime=")
            .append(txTime);
        return sb.toString();
    }

/**
     * 生成拉流全路径地址
     * @param playUrlHead  拉流的头地址
     * @param stream_id  直播码  调用该方法genLiveCode() 生成  
     * @param play_key  拉流鉴权
     * @param end 如 .flv结尾
     * @return
     */
    public static String createPlayUrl(String playUrlHead,String stream_id
            ,String play_key,String end) {
        //过期时间 16进制的unix时间戳
        String txTime = to16Hex(addOneDay());
        StringBuffer sb = new StringBuffer();
        sb.append(playUrlHead)
        .append(stream_id)
        .append("?")
        .append("txSecret=")
        .append(genSign(play_key, stream_id,txTime))
        .append("&")
        .append("txTime=")
        .append(txTime)
        .append(end);
        return sb.toString();
    }
    
    
    
    
    
    
    
    public static void main(String[] args) {

//生成推流地址
        System.out.println(createPushUrl(pushUrl,"test",push_key));

//生成拉流地址
        System.out.println(createPlayUrl(playUrl_rmpt,"test",play_key,""));
    }
    
    
}

public class MD5Encode {

private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
    
    public static String getMD5Str(String str) {
        String resStr = "";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            resStr = byteArrayToHexString(md.digest(str.getBytes()));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return resStr;
    }
    
    /**
     * 转换字节数组为16进制字串
     * 
     * @param b
     *            字节数组
     * @return 16进制字串
     */

private static String byteArrayToHexString(byte[] b) {
        StringBuffer resSb = new StringBuffer();
        for (int i = 0; i < b.length; i++) {
            resSb.append(byteToHexString(b[i]));
        }
        return resSb.toString();
    }

private static String byteToHexString(byte b) {
        int n = b;
        if (n < 0)
            n = 256 + n;
        int d1 = n / 16;
        int d2 = n % 16;
        return hexDigits[d1] + hexDigits[d2];
    }
    
}

腾讯云直播生成 推流地址 拉流地址相关推荐

  1. PHP关于实现腾讯云直播的推流和拉流

    PHP关于实现腾讯云直播的推流和拉流 步骤如下 注册一个腾讯云账户,搜产品 :云直播,他们应该会送你20G的流量包,测试的时候足够用了: 设置推流域名和播放(拉流)域名: 推流域名腾讯会直接给你分配一 ...

  2. 推流地址 java_Java实现腾讯云直播生成推流地址和播放地址

    最近在做小程序直播,用到了腾讯云直播,下面为相关文档和程序 URL规则:https://cloud.tencent.com/document/product/267/13457 防盗链计算:https ...

  3. Java实现腾讯云直播生成推流地址和播放地址

    最近在做小程序直播,用到了腾讯云直播,下面为相关文档和程序 URL规则:https://cloud.tencent.com/document/product/267/13457 防盗链计算:https ...

  4. java 阿里云直播配置及推拉流地址获取

    一.开通阿里云直播 首先进入阿里云直播产品主页:https://www.aliyun.com/product/live . 点击下方的"立即开通". 如果是还未注册的用户请按照页面 ...

  5. 腾讯云 直播 OBS 在线推流

    步骤一:设置推流地址 打开 OBS,您可通过底部工具栏的[控件]>[设置]按钮进入设置界面. 2.单击[推流]进入流设置页签,选择服务类型为自定义流媒体服务器. 下载obs直播软件 3.将获取所 ...

  6. 直播推流 ffmpeg 拉流二次转发 记录

    因 前两天老大给我发了个任务,说让我做一个flask 服务器接口,接收请求,在请求参数中获取 直播拉流地址和 推流地址,然后调用 ffmpeg 到拉流地址上进行拉流 将拉到的流媒体数据推到另一个直播服 ...

  7. 推流和拉流的概念以及RTMP和HLS协议

    https://www.bbsmax.com/A/x9J2wZM56o/ 推流为将直播内容推送至服务器的过程:拉流为服务器已有直播内容,用指定地址进行拉取的过程. rtmp rtmp是Real Tim ...

  8. 腾讯云直播、生成腾讯推拉流

    一.背景 最近公司用到推拉流,经过一番比较后决定使用腾讯云.但是腾讯云的文档确实有点一言难尽,去网上搜索一下例子,结果就是把腾讯云的demo粘贴过去,还必须得是会员才能看,坑啊!!所以把自己做的小de ...

  9. JAVA生成阿里云直播推流和拉流

    import cn.hutool.crypto.digest.DigestUtil; import org.apache.commons.lang.StringUtils;import java.ut ...

  10. 不止直播:腾讯云直播MLVB 插件除了推流/拉流还有哪些亮眼功能

    在之前几篇的文章中,我们介绍了腾讯云移动直播插件MLVB的一些基础概念()以及移动直播控件可以拓展的直播场景(),今天就来分享MLVB插件除了直播的基础推拉流功能以外还有哪些功能来帮助直播APP和小程 ...

最新文章

  1. 猪心移植人体背后竟有个川妹子!36岁哈佛女学霸敲除猪致病基因,获赞「基因剪刀手」...
  2. 低调的苹果罕见发表论文,揭开自动驾驶汽车技术的冰山一角
  3. CF Educational Round 23 F.MEX Queries
  4. java常见的异常类型_Java几种常见的异常类型
  5. python列表list的基本性质
  6. (转载)python多行注释
  7. 【转载】这次拆库 应是微服务化的拆分方式
  8. 曼昆经济学原理(微经部分)笔记整理
  9. python多元线性回归实例_关于多元线性回归分析——PythonSPSS
  10. udp聊天?使用udp+python实现多人聊天室
  11. 文件流操作,报“because it is being used by another process. ”错误解决
  12. 阿里云云计算 31在线实验--弹性伸缩(AS)初体验
  13. ubuntu16.04便捷使用(常用工具、常用快捷键、常用使用教程)
  14. 基于JAVAEE公共自行车租赁系统
  15. Windows 2008 R2 终端服务器授权安装配置
  16. 应付模块的R12 TRACE 和 FND Debug 文件 / FND 日志 调试
  17. 数据中台,我还能爱你吗(文末送书)
  18. layui复选框,设置部分可选
  19. 根据json 动态生成页面——问卷页面
  20. 今天是2012年9月20日

热门文章

  1. NetVLAD: CNN architecture for weakly supervised place recognition 翻译
  2. 2060显卡驱动最新版本_如何更新你的显卡驱动程序
  3. windows 内网域电脑无法ntp时间同步
  4. 我国5G现状:今年底或发放5G牌照
  5. 25匹马,5个跑道,不用外界工具怎样选出最快的5匹,要次数最短
  6. waves效果器_waves效果器:《我不是药神》配乐炼成记—Waves访时俊峰黄超
  7. PanGu-Coder:函数级的代码生成模型
  8. 计算机原理 · 全加器
  9. Java一个汉字占几个字节(详解与原理)(转载)
  10. VBox下频繁出现0x00000000指令引用的0x00000000内存,该内存不能为written:解决方案(附文件)