腾讯云直播、云点播的配置及简单使用

829 阅读2分钟

最近要做一个直播回放,于是摸索了一下腾讯云直播,做一个学习记录,方便后期的使用

准备工作

  1. 注册腾讯云账号并实名认证,进入控制台开通云直播服务
  2. 开通的时候他会给你生成一个推流域名,在云直播>域名管理里可以添加配置自己的推流播流域名,添加好之后,把他给到的CNAME拿到域名解析里配置一下
  3. 如果有录制需要,可以开通云点播,但是这个服务是收费的,开通之后在控制台>云直播>功能配置>直播录制里创建录制模版,录制的文件格式可以多选,我这里为了方便,只选了mp4,创建好之后绑定推流域名
  4. 如果想在停止推流后,获取直播的相关信息,可以在云直播>事件中心>直播回调里配置,我按需求使用了录制回调

如图

添加推流播流域名

image.png

域名解析

image.png

录制配置(需先开通云点播服务)

image.png

回调配置

image.png 在配置回调模版的时候,需要绑定一个回调地址,这个是需要结合自己的直播项目事先准备好的,停止推流后,他会通过POST请求向这个回调地址发送相关数据

生成推流播流地址

image.png

image.png

推流的key他给定的,播流的鉴权可以自己设置开启情况,地址生成有代码示例,可以在编译器里根据自己的逻辑封装 (我的命名不太规范,请忽略哈哈)

public static function getPushUrl($pushDomain, $streamName, $appName, $pushKey, $expireTime){

    if($pushKey && $expireTime){

        $txTime = strtoupper(base_convert(strtotime($expireTime),10,16));
        //txSecret = MD5( KEY + streamName + txTime )
        $txSecret = md5($pushKey.$streamName.$txTime);

        $ext_str = "?".http_build_query(array(

                "txSecret"=> $txSecret,

                "txTime"=> $txTime
            ));
    }

    $liveName = "rtmp://".$pushDomain."/$appName/";//推流地址

    $liveKey = $streamName . (isset($ext_str) ? $ext_str : "");//推流密钥

    return ['name' => $liveName,'key'=> $liveKey];
}
public static function getplayUrl($playDomain, $streamName,$appName, $playKey, $expireTime)
{
    //未开启鉴权Key的情况下
    if ($playKey == '') {
        $rtmp_play_url = 'rtmp://' . $playDomain . '/' . $appName . '/' . $streamName;
        $flv_play_url = 'http://' . $playDomain . '/' . $appName . '/' . $streamName . '.flv';
        $hls_play_url = 'http://' . $playDomain . '/' . $appName . '/' . $streamName . '.m3u8';
    } else {
        $timeStamp = time() + strtotime($expireTime);//转时间戳
        $rtmp_sstring = '/' . $appName . '/' . $streamName . '-' . $timeStamp . '-0-0-' . $playKey;
        $rtmp_md5hash = md5($rtmp_sstring);
        $rtmp_play_url = 'rtmp://' . $playDomain . '/' . $appName . '/' . $streamName . '?auth_key=' . $timeStamp . '-0-0-' . $rtmp_md5hash;

        $flv_sstring = '/' . $appName . '/' . $streamName . '.flv-' . $timeStamp . '-0-0-' . $playKey;
        $flv_md5hash = md5($flv_sstring);
        $flv_play_url = 'http://' . $playDomain . '/' . $appName . '/' . $streamName . '.flv?auth_key=' . $timeStamp . '-0-0-' . $flv_md5hash;

        $hls_sstring = '/' . $appName . '/' . $streamName . '.m3u8-' . $timeStamp . '-0-0-' . $playKey;
        $hls_md5hash = md5($hls_sstring);
        $hls_play_url = 'http://' . $playDomain . '/' . $appName . '/' . $streamName . '.m3u8?auth_key=' . $timeStamp . '-0-0-' . $hls_md5hash;
    }
    return ['rtmp' => $rtmp_play_url, 'flv' => $flv_play_url, 'hls' => $hls_play_url];
}

测试

根据规则生成自己的直播间,同一个直播推流和播流的streamName需要是一致的 image.png 生成自己的播流地址渲染到播放器上 image.png image.png

打开推流软件进行推流测试,这里用的是OBS image.png

进入直播间观看 image.png

停止推流后,获取回调的数据 image.png

我们拿到appid和file_id使用腾讯云的超级播放器就可以播放录制的视频了,或者拿到video_url直接播放

在腾讯云的云点播里也可以进行视频管理 image.png

注意: 如果云直播绑定了录制模版,就不需要再去请求录制接口创建录制工作了,否则会生成多个视频,有的时候会返m3u8格式的video_url,不能直接拿过来使用了