java实现腾讯云直播
云直播官方文档:https://cloud.tencent.com/document/product/267
云直播在线生成api:https://console.cloud.tencent.com/api/explorer?Product=live&Version=2018-08-01&Action=UpdateLiveWatermark&SignVersion=
对云直播api调用的主要目的是用来对直播进行一些操作,大部分操作需要购买,后面有部分对接,这些其实都是官方能够生成的:
需要在域名管理处生成推流域名和播放域名:https://console.cloud.tencent.com/live/domainmanage
我这用的rtmp推流(可用腾讯视频云小程序->点击RTMP推流,进行测试),flv文件播放(flv在线播放:https://imgcache.qq.com/open/qcloud/video/player/demo/player.html)
封装的帮助类:
@Data
@Component
public class TencentLiveInfo {// 推流域名@Value("${live.push.pushDomain}")private String pushDomain;// 播放域名@Value("${live.play.playDomain}")private String playDomain;// 应用名称@Value("${live.push.appName}")private String appName;// key 推流域名那能看到@Value("${live.push.masterKey}")private String masterKey;// 访问腾讯api的secretId@Value("${live.secretId}")private String secretId;// 访问腾讯api的secretKey@Value("${live.secretKey}")private String secretKey;// 腾讯api访问域名@Value("${live.url}")private String url;
}
生成推流地址(可生成多种推流方式,具体见官方文档):
/*** 获取视频推送流地址* @param streamName 流名称* @param txTime 过期时间* @return*/public static String getPushUrl(String streamName, long txTime) {String input = new StringBuilder().append(tencentLiveInfo.getMasterKey()).append(streamName).append(Long.toHexString(txTime).toUpperCase()).toString();String txSecret = null;try {MessageDigest messageDigest = MessageDigest.getInstance("MD5");txSecret = byteArrayToHexString(messageDigest.digest(input.getBytes("UTF-8")));} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}//视频推送urlString pushUrl = new StringBuilder().append("rtmp://").append(tencentLiveInfo.getPushDomain()).append("/").append(tencentLiveInfo.getAppName()).append("/").append(streamName).append("?txSecret=").append(txSecret).append("&txTime=").append(Long.toHexString(txTime).toUpperCase()).toString();return pushUrl;}/*** 转码-byte转hexString* @param data* @return*/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);}
生成播放路径(可生成多种播放方式,具体见官方文档):
/*** 获取播放地址* @param streamName 流名称* @param txTime 过期时间* @return*/public static String getPlayUrl(String streamName,long txTime){String playUrl = new StringBuilder().append("http://").append(tencentLiveInfo.getPlayDomain()).append("/").append(tencentLiveInfo.getAppName()).append("/").append(streamName).append(".flv").toString();return playUrl;}
tips:两处的流名称必须一致
我这接了部分api:
/*** 初始化腾讯文档api调用配置* @return*/private static LiveClient initTencent(){Credential cred = new Credential(tencentLiveInfo.getSecretId(), tencentLiveInfo.getSecretKey());HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint(tencentLiveInfo.getUrl());ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);LiveClient client = new LiveClient(cred, "", clientProfile);return client;}/*** 停止推流-暂停直播* @return*/public static String stopPush(String streamName){try{LiveClient client = initTencent();DropLiveStreamRequest req = new DropLiveStreamRequest();req.setStreamName(streamName);req.setDomainName(tencentLiveInfo.getPushDomain());req.setAppName(tencentLiveInfo.getAppName());DropLiveStreamResponse resp = client.DropLiveStream(req);return DropLiveStreamResponse.toJsonString(resp);} catch (TencentCloudSDKException e) {return e.toString();}}/*** 开始推流-重新直播* @param streamName* @return*/public static String startPush(String streamName){try{LiveClient client = initTencent();ResumeLiveStreamRequest req = new ResumeLiveStreamRequest();req.setAppName(tencentLiveInfo.getAppName());req.setDomainName(tencentLiveInfo.getPushDomain());req.setStreamName(streamName);ResumeLiveStreamResponse resp = client.ResumeLiveStream(req);return ResumeLiveStreamResponse.toJsonString(resp);} catch (TencentCloudSDKException e) {System.out.println(e.getMessage());return e.toString();}}
其他都差不多,都有生成的
java实现腾讯云直播相关推荐
- 腾讯直播与 JAVA整合_JAVA对接腾讯云直播如何实现 JAVA对接腾讯云直播实现代码...
JAVA对接腾讯云直播如何实现?本篇文章小编给大家分享一下JAVA对接腾讯云直播实现代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 签名授权 public static ...
- Java实现腾讯云直播生成推流地址和播放地址
最近在做小程序直播,用到了腾讯云直播,下面为相关文档和程序 URL规则:https://cloud.tencent.com/document/product/267/13457 防盗链计算:https ...
- java 采用腾讯云直播实现多方视频录制并每路画面添加相应的水印
这是我第一篇文章,本人也是菜鸟,如果有什么不对,也请大神多多指点 话不多说,进入正题. 首先录制视频的前提是推流和拉流同时是连接上才能进行录制工作.否则腾讯云不会给你返回录制的视频地址. 如果你不知道 ...
- 腾讯云直播代码 java_JAVA 对接腾讯云直播的实现
签名授权 public static T TecentDoPostJsonV3(String url,String key,String secretId, TecentPublicParams he ...
- 推流地址 java_Java实现腾讯云直播生成推流地址和播放地址
最近在做小程序直播,用到了腾讯云直播,下面为相关文档和程序 URL规则:https://cloud.tencent.com/document/product/267/13457 防盗链计算:https ...
- 友盟多渠道打包+混淆+腾讯云直播的推/拉流
一. 友盟多渠道打包 各种下载应用的软件网址,叫渠道分发商,如腾讯应用宝,百度,Google Play,多渠道打包通过了解下载量,有针对性的打广告 多渠道打包意义: 可以用这个APK,放上一段业务逻辑 ...
- 腾讯云直播答题方案解析
2019独角兽企业重金招聘Python工程师标准>>> 欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者: 腾讯视频云 进入2018年最火的新鲜事物无疑就是" ...
- 一文带你深度解析腾讯云直播答题方案
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯视频云 进入2018年最火的新鲜事物无疑就是"直播答题"了,动辄上百万的奖金更是吸引了大量用户的参与.一场直播动辄 ...
- 腾讯云直播-开启互动直播
项目背景:基于腾讯云直播开发项目,直播交友平台1+6模式 ps : 记录自己的日常 一.申请腾讯视频权限(官方链接) 首先在流管理添加一个域名 类型为播放域名域名地址为 推流域名的域名前缀+你的域名生 ...
最新文章
- 如何给“物联网小白”讲清楚什么是无线通信模块?很简单,会打电话就行~
- vmware-tools安装说明
- springframework包下的RequestContextHolder类和ServletRequestAttributes类的源码和使用
- 计划任务中allow和deny的优先级
- SAP Fiori和Vue的结合会给企业级应用软件的UI开发带来什么?
- 计算机网络层实验路由表苏州科技,苏州科技大学计算机网络实验报告课案.docx...
- Web Service security UserNameToken 使用
- Can‘t start server : Bind on unix socket: Address already in use
- 简单理解盘索引地址的表示原理
- Apollo添加新的can通信接口的GPS设备
- IT成长中的龟兔赛跑
- 四轴飞行器基本组成及其飞行原理详解
- 通过高阶DMD对地铁的实时短时OD预测
- hp linux 禁用u盘启动不了,u盘启动禁用旧版启动模式并启用UEFI
- 边境的悍匪—Kaggle—泰坦尼克号生还预测详细教程
- JAVA架构演变过程
- Win11电脑一边耳机没声音怎么解决
- UE4换装系统(合并骨骼模型)
- 辞职两年:自由的代价
- w ndows11如何设置电源选项,2018年度巨献(4):11款650W全模组80Plus金牌+电源横评