赞
踩
首先是官网的文档地址 云直播 新手指南
可以发现它这个主要是按流量和功能收费的 价格总览
流量这里还只收下行的费用,就是只收观看消耗的流量费
其它的收费就是一些增值业务费 (包括直播转码、直播录制、直播截图、直播审核、智能鉴黄、实时监播、移动直播连麦、直播时移、拉流转推、延时播放),这些不用就不收费
好了我们来看下怎么用
首先我们需要申请一个账号,有账号的直接登录没有的注册一个
登录成功后进控制台
直接搜云直播
选域名管理,注意这里需要两个域名,一般申请两个二级域名就可以了,比如拉流域名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); } }
运行一下
可以看到我们在生成的地址中加了个日期,这个日期就是当前这个链接的有效期,过了这个时间那么这个链接就会失效,但是要注意的是如果推流不结束是不会中断的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。