PHP关于实现腾讯云直播的推流和拉流
步骤如下
- 注册一个腾讯云账户,搜产品 :云直播,他们应该会送你20G的流量包,测试的时候足够用了;
设置推流域名和播放(拉流)域名;
推流域名腾讯会直接给你分配一个,播放域名需要你自己添加;设置播放域名的时候需要注意一点CNAME配置这块,举个例子:我的域名是在阿里云上买的,就用阿里云的举例吧,假设我有一个域名www.admin.com 登录我的阿里云,找到域名列表,解析域名,点击添加记录
记录类型 选择 CNAME ,主机记录可以随便填下,假设输入个 aaa;解析线路设置为默认,记录值先按照示例随便设置一下就行 然后点击确定;
返回腾讯云,在域名管理这块 点击添加域名,类型选择播放域名,域名就填刚才你解析的域名 aaa.admin.com,点击确定;这个时候你会发现你的列表里有一个播放域名的数据,它的CNAME字段下会有一个红色感叹号的域名链接,你复制这个链接
打开阿里云 --域名解析 找到你刚才解析的那个记录类型为CNAME 的域名,点击修改,把复制的域名链接填到记录值里面就OK了,然后返回你的腾讯云,不过这个不会即时生效 需要等个几分钟;
- 这些准备工作配置好 就可以开始推流工作了,打开腾讯云直播的域名管理,找到那条推流域名,点击管理,推流配置里面有个主KEY,这个要用到;
页面底部有一个示例的demo
/**
* 获取推流地址
* 如果不传key和过期时间,将返回不含防盗链的url
* @param domain 您用来推流的域名
* streamName 您用来区别不同推流地址的唯一流名称(这个你需要通过自己的业务逻辑,看传什么参数,房间号,用户标识ID什么的 都可以)
* key 安全密钥(就是上面说得那个主KEY)
* time 过期时间 sample 2016-11-12 12:00:00
* @return String url
*/
function getPushUrl($domain, $streamName, $key = null, $time = null){
if($key && $time){
$txTime = strtoupper(base_convert(strtotime($time),10,16));
//txSecret = MD5( KEY + streamName + txTime )
$txSecret = md5($key.$streamName.$txTime);
$ext_str = "?".http_build_query(array(
"txSecret"=> $txSecret,
"txTime"=> $txTime
));
}
return "rtmp://".$domain."/live/".$streamName . (isset($ext_str) ? $ext_str : "");
}
你会获得一个rtmp开头的链接, 这个链接就是你的推流地址,把这个提供给客户端就OK了;
拉流:进入腾讯云直播 --域名管理 找到播放域名那条数据 点击管理,点击播放设置,里面会有四条不同类型对应的拉流链接地址,地址里面的StreamName参数 你要对应你设置推流时候那个streamName;
剩下的就是页面展示了,我当时做的是h5打包的App,参考这个
腾讯云的web播放器文档,可以看下