Java对接腾讯云直播示例

news2024/10/5 17:21:43

首先是官网的文档地址 云直播 新手指南

在这里插入图片描述

可以发现它这个主要是按流量和功能收费的 价格总览
流量这里还只收下行的费用,就是只收观看消耗的流量费
其它的收费就是一些增值业务费 (包括直播转码、直播录制、直播截图、直播审核、智能鉴黄、实时监播、移动直播连麦、直播时移、拉流转推、延时播放),这些不用就不收费

在这里插入图片描述

好了我们来看下怎么用
首先我们需要申请一个账号,有账号的直接登录没有的注册一个

在这里插入图片描述

登录成功后进控制台

在这里插入图片描述

直接搜云直播

在这里插入图片描述

选域名管理,注意这里需要两个域名,一般申请两个二级域名就可以了,比如拉流域名pull.test.com和推流域名push.test.com,大家自己申请,也可以申请试用域名(找客服帮你弄就可以了)
推流地址就是指录制视频的地址
拉流地址就是观看视频的地址

在这里插入图片描述

注意有任何不懂的看右下角有个客服头标,顾客是上帝,他们基本能解决你使用上的所有问题

在这里插入图片描述

域名配置好后点后面的管理

在这里插入图片描述
我这是拉流地址的配置,主要就是访问控制这一块,就是配置你视频观看地址安全的,你可以根据需要选择配置,这块都是免费的放心配没关系,特别是第一项Key鉴权,就是俗称的防盗链,为了防止有人恶意使用地址建议配置选上,记录下面那个key,后面会用到

在这里插入图片描述

这里也可以直接生成播放地址的

在这里插入图片描述

然后是推流地址配置,一样的我们把鉴权配置开启,也是为了防止有人盗用地址等问题

在这里插入图片描述
这里也可以直接生成推流地址的

在这里插入图片描述

注意:只要StreamName一样那么推流和拉流就是同一个视频,如果推流的时候两个流都往一个StreamName上推只会显示第一个流的视频

我们先测试一下刚才生成的地址,大家刚才没有保存没关系,重新生成一个就好了,地址生成没有使用不收费,因为没有产生流量
注意我们尽量用webrtc流,据文档写的这个速度快支持更大的并发

我们去常用工具测试推流地址(就是用刚才上面生成的推流地址放到3所示位置),点开始推流

在这里插入图片描述

我们再把刚才的拉流地址放到下面这个页面里点播放 (注意拉流地址的StreamName要和推流地址一样) 视频播放器

在这里插入图片描述

可以看到画面就说明刚才生成的推流地址和拉流地址可用
当然这是在控制台操作,我们需要把这个功能对接到系统里面才行,不过也很简单,就是简单的字符串拼接
直接上代码

import lombok.extern.log4j.Log4j2;
import lombok.extern.slf4j.Slf4j;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@Slf4j
@Log4j2
public class TencentYunLiveUtil {


    //========================推流配置
    /**
     * 推流防盗链的key 控制台获取
     */
    public static final String PUSH_KEY = "111111111111111111111111111111111";

    /**
     * 推流地址 控制台配置
     */
    public static final String PUSH_URL = "webrtc://push.test.co";


    //========================拉流配置
    /**
     * 拉流防盗链的key 控制台获取
     */
    public static final String PLAY_KEY = "1111111111111111111111";

    /**
     * 拉流地址 控制台配置
     * 可将rtmp切换为webrtc,这个更快支持高并发
     */
    public static final String PLAY_URL = "webrtc://pull.test.co";

    /**
     * APP名称 自定义的,默认为live
    */
    public static final String APP_NAME = "123";


    public static String getPushUrl(String streamName, Date time) {
        StringBuffer urlSB = new StringBuffer();
        urlSB.append(PUSH_URL);
        urlSB.append("/");
        urlSB.append(APP_NAME);
        urlSB.append("/");
        urlSB.append(streamName);
        urlSB.append("?");
        urlSB.append("txSecret=");
        urlSB.append(MD5Util.getMD5Str(PUSH_KEY + streamName + to16Hex(time)));
        urlSB.append("&");
        urlSB.append("txTime=");
        urlSB.append(to16Hex(time));

        return urlSB.toString();
    }

    public static String getPlayUrl(String streamName, Date time) {
        StringBuffer urlSB = new StringBuffer();
        urlSB.append(PLAY_URL);
        urlSB.append("/");
        urlSB.append(APP_NAME);
        urlSB.append("/");
        urlSB.append(streamName);
        urlSB.append("?");
        urlSB.append("txSecret=");
        urlSB.append(MD5Util.getMD5Str(PLAY_KEY + streamName + to16Hex(time)));
        urlSB.append("&");
        urlSB.append("txTime=");
        urlSB.append(to16Hex(time));

        return urlSB.toString();
    }

    /**
     * 将传入的时间转换为 16进制
     *
     * @param date
     * @return
     */
    public static String to16Hex(Date date) {
        Long aLong = date.getTime() / 1000;
        String hexString = Long.toHexString(aLong);
        return hexString.toUpperCase();
    }

    public static void main(String[] args) {
        // 将字符串日期转换成date
        String str = "2024-03-09 12:00:00";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        String pushUrl = null;
        try {
            pushUrl = getPushUrl("456", sdf.parse(str));
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        System.out.println(pushUrl);
        String playUrl = null;
        try {
            playUrl = getPlayUrl("456", sdf.parse(str));
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        System.out.println(playUrl);
    }

}

运行一下
可以看到我们在生成的地址中加了个日期,这个日期就是当前这个链接的有效期,过了这个时间那么这个链接就会失效,但是要注意的是如果推流不结束是不会中断的

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1500380.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试面试200问(附100W字文档)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 软件测试面试题:项目 1、简单介绍下最近做过的项目…

centos7 python3.12.1 报错 No module named _ssl

https://blog.csdn.net/Amio_/article/details/126716818 安装python cd /usr/local/src wget https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz tar -zxvf Python-3.12.1.tgz cd Python-3.12.1/ ./configure -C --enable-shared --with-openssl/usr/local/opens…

问题解决 | vscode无法连接服务器而ssh和sftp可以

解决步骤 进入家目录删除.vscode-server rm -rf .vscode-server 然后再次用vscode连接服务器时,会重新安装,这时可能报出一些缺少依赖的错 需要联系管理员安装相关依赖,比如 sudo apt-get install libstdc6 至此问题解决

Vulnhub内网渗透Jangow01靶场通关

详细请见个人博客 靶场下载地址。 下载下来后是 .vmdk 格式,vm直接导入。 M1请使用UTM进行搭建,教程见此。该靶场可能出现网络问题,解决方案见此 信息搜集 arp-scan -l # 主机发现ip为 192.168.168.15 nmap -sV -A -p- 192.168.168.15 # 端…

多功能线缆光纤验证器-AEM CV-100

TestPro CV100 多功能电缆验证器 屡获殊荣的 TestPro CV100 多功能电缆验证器专为当今的现代智能建筑网络基础设施而设计。 它提供了当今可用的功能最丰富的测试平台,以及允许定制所需的确切测试套件的基于模块化的平台。 智能建筑测试套件(K60 和 K61…

BUUCTF-Misc3

LSB1 1.打开附件 得到一张图片,像是某个大学的校徽 2.Stegsolve工具 根据标题LSB,可能是LSB隐写 放到Stegsolve中,点Analyse在点Data Extract 数据提取 因为是LSB隐写,发现含以.png结尾的图片 3.保存图片 4.得到flag 扫描二维…

蓝桥杯-最长递增

思路及代码详解:(此题为容易题) #include <iostream> using namespace std; int main() {int a[1000]{0};int n,temp;int num0;int count0;cin>>n;for(int i0;i<n;i){cin>>a[i];}//输入数据tempa[0];//设置一个临时比较的存储变量for(int i1;i<n;i){i…

性别和年龄的视频实时监测项目

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 性别和年龄检测 Python 项目 首先介绍性别和年龄检测的高级Python项目中使用的专业术语 什么是计算机视觉&#xff1f; 计算机视觉是使计算机能…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:DataPanel)

数据面板组件&#xff0c;用于将多个数据占比情况使用占比图进行展示。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 DataPanel(options: DataPanelOptions) 从API version …

MySQL基础-----约束

目录 前言 一、概述 二、约束演示 三、外键约束 1.介绍 2.语法 四、删除/更新行为 1.CASCADE 2.SET NULL 前言 本期我们开始MySQL约束的学习&#xff0c;约束一般是只数据键对本条数据的约束&#xff0c;通过约束我们可以保证数据库中数据的正确、有效性和完整性。 下面…

仿牛客项目Day1

SpringMVC 架构 spring的前端控制器是DispatcherServlet 模板引擎Thymeleaf 这个还不知道干嘛的 mvc演示 get请求 RequestMapping&#xff1a;声明访问路径和http方法get或set什么的 ResponseBody&#xff1a;java对象转为json格式的数据&#xff0c;表示该方法的返回结…

原创+顶级SCI优化!23年新算法PSA优化CNN-LSTM-Attention一键实现多变量回归预测!

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 效果展示 数据介绍 创新点 模型流程 部…

7款前端实战型项目特效分享(附在线预览)

分享7款实用性的前端动画特效 其中有canvas特效、css动画、svg动画等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 CSS春节灯笼特效 基于CSS实现的灯笼特效 灯笼会朝左右两个方向来回的摆动着 以下效果图只能体现…

调用Mybatis plus中的saveBatch方法报找不到表的问题

1.问题现象 在用Mybatis plus开发的项目中&#xff0c;用自带的API批量保存的方法saveBatch操作时&#xff0c;发现报没有找到表的错误。 错误日志截图如下&#xff1a; 表实际是存在的&#xff0c;且发现其他的方法都没有问题&#xff0c;包括save、update等单个的方法&…

Linux基础命令[13]-nl

文章目录 1. nl 命令说明2. nl 命令语法3. nl 命令示例3.1 不加参数3.2 -b&#xff08;依据样式显示行号&#xff09;3.3 -n&#xff08;格式化行号&#xff09;3.4 -w&#xff08;占位数长度&#xff09;3.5 -i&#xff08;依据数值增长行号&#xff09;3.6 -v&#xff08;定义…

【数据库】数据库学习使用总结

一、数据库介绍 二、数据库系统 1、DB——>存储数据的 2、DBMS——>用来管理数据的 DBMS&#xff1a; 1、DCL 用&#xff1b;用来创建和维护用户账户 2、DDL 数据定义语言 3、DML 用来操作数据 三、DDL 1、操作数据库&#xff08;创建和删除&#xff09; create d…

基于sprinbgoot的火锅店管理系统(程序+数据库+文档)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…

vue 在线预览word

1 mammoth 先找的是mammoth这个插件yarn add mammoth,版本是1,7.0 参考网上的示例使用如下&#xff1a; import mammoth from "mammoth"; const vHtml ref("") const readExcelFromRemoteFile (url) >{var xhr new XMLHttpRequest();xhr.open("…

2024年新版CMS内容管理使用,不用回退老版本 使用最新小程序云开发cms内容模型

一&#xff0c;问题描述 最近越来越多的同学找石头哥&#xff0c;说cms用不了&#xff0c;其实是小程序官方最近又搞大动作了&#xff0c;偷偷的升级的云开发cms&#xff08;内容管理&#xff09;以下都称cms&#xff0c;不升级不要紧&#xff0c;这一升级&#xff0c;就导致我…

浅谈去耦电容的作用、选择、布局及其它电容的区别!

在一些文章资料中&#xff0c;去耦电容器被认为是旁路电容器。在其他资料中&#xff0c;去耦电容和旁路电容的区别在于&#xff1a;“旁路电容以输入信号中的干扰为滤波对象&#xff0c;而去耦电容以输出信号的干扰为滤波对象&#xff0c;防止干扰信号返回到输出端。”力量。”…