接入腾讯云直播相关操作以及概念

一、直播中必知的rtmp协议推流拉流相关概念

1、关于rtmp协议
rtmp

RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。RTMP与HTTP一样,都属于TCP/IP四层模型的应用层。

多种变种:

  • RTMP工作在TCP之上,默认使用端口1935
  • RTMPE在RTMP的基础上增加了加密功能
  • RTMPT封装在HTTP请求之上,可穿透防火墙
  • RTMPS类似RTMPT,增加了TLS/SSL的安全功能

2、拉流和推流

接入腾讯云直播相关操作以及概念_第1张图片
接一个直播必须理解拉流推流概念。

  • 推流:比如,你在斧牙开了一个直播,摄像头一直对着人或屏幕进行录制,在这个过程中,就是往服务端里进行推流。

  • 拉流:和推流相反,拉流就是你在看别人直播的过程中,页面上播放的视频就是从服务端进行的拉流。

二、举个栗子

下面举个例子来说明一下推流和分流的相关概念:

看下斧牙直播的直播类型:

1、PC端推流:

捕捉屏幕推流直播:

接入腾讯云直播相关操作以及概念_第2张图片

摄像头推流直播:

接入腾讯云直播相关操作以及概念_第3张图片

2、安卓和IOS推流

接入腾讯云直播相关操作以及概念_第4张图片

下面再看下拉流的几种形式:

3、web端拉流

接入腾讯云直播相关操作以及概念_第5张图片
4、Android端拉流

接入腾讯云直播相关操作以及概念_第6张图片
接入腾讯云直播相关操作以及概念_第7张图片

三、腾讯云拉流推流实战操作

腾讯云有免费的40G流量供我们玩耍,搜索云直播并进入。需要添加一个推流域名拉流域名。推流域名会给我们提供,我们只需要配置一个拉流域名即可。

推流域名直接添加即可,下面操作下拉流域名的配置:

1、进入到域名管理

接入腾讯云直播相关操作以及概念_第8张图片
2、选择播放域名,添加一个自己已经备案好的域名。

接入腾讯云直播相关操作以及概念_第9张图片
3、复制cname

添加好后有个感叹号,将里面的cname复制到你的域名供应商。
在这里插入图片描述

4、打开你供应商平台(阿里云、腾讯云、百度云等)的域名解析列表,将cname配置到指定域名的记录值中即可。
在这里插入图片描述
5、稍等十分钟左右,就会变绿了

在这里插入图片描述


这时候,推流域名和播放域名(拉流域名)就配置好了,下一步就是来生成推流域名拉流域名提供给客户端就行啦

生成推流域名和拉流域名

接入腾讯云直播相关操作以及概念_第10张图片
腾讯云直播域名配置管理界面也提供了生成方式,直接填入StreamName即可生成!

或者也可以使用官方提供了一个php版本的生成方式:

			                        			
/**
   * 获取推流地址
   * 如果不传key和过期时间,将返回不含防盗链的url
   * @param domain 您用来推流的域名
   *        streamName 您用来区别不同推流地址的唯一流名称
   *        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 : "");
}

echo getPushUrl("123.test.com","123456","69e0daf7234b01f257a7adb9f807ae9f","2016-09-11 20:08:07");
			
特别提醒:播放地址的StreamName和推流地址的StreamName必须一致。

至此,推流地址播放地址就能生成了,我们将这俩地址提供给客户端即可!

四、进行直播测试

由于博主经济条件有限,只有一个手机,只能通过手机推流,电脑拉流来进行测试。
接入腾讯云直播相关操作以及概念_第11张图片
首先测推流,我用uniapp组件里的一个推流demo实现了推流:

接入腾讯云直播相关操作以及概念_第12张图片
推流成功后,开始拉流,提供一个线上的拉流平台,这样,用一个手机就能测了。

接入腾讯云直播相关操作以及概念_第13张图片
至此,推流拉流的工作就实现啦。剩下的都是一些逻辑处理了,开房间,弹幕,刷礼物等……

五、总结

推荐一个php方面的七牛云和腾讯云直播sdk,里面封装了一些东西还是比较方便的。

接入腾讯云直播相关操作以及概念_第14张图片

你可能感兴趣的:(腾讯云)