给奶牛做直播之三

​一、前言

上一篇给牛奶做直播之二  主要讲用RTMP搭建点播服务器,整了半天直播还没上场,今天不讲太多理论的玩意,奶牛今天放假了也不出场,就由本人亲自上场来个直播首秀,见下图,如果有兴趣的话,可以联系我,我会把直播打开,和你吹吹牛。

给奶牛做直播之三_第1张图片

图中左侧是在录制,右侧是在播放。接下来一起来看一下自已怎么来搭建一套直播服务。

二、Nginx RTMP直播服务器配置

增加application live的配置

rtmp{
  server{
    listen 1935;
    chunk_size 4096;
    application vod{
      play /opt/vod;
    }
    application live{
      live on;
    }
  }
}

http server加上

location /stat{
  rtmp_stat all;
  rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl{
    root /opt/nginx-rtmp-module-master/;
}

重启Nginx,输入http://118.31.5.244/stat,该页面可以监测直播一些参数数据,如果有Live就表示你配置成功了,在图上也可以看到Video和Audio是分开的,音频流是用AACLC编码,而视频流就是用我们 给奶牛做直播之一 讲到的H264编码。

给奶牛做直播之三_第2张图片

注:配置时注意一下,nginx-rtmp-module-master nginx指向的地址不要放在root目录下,否则权限会有问题,上一篇直播视频文件也同样不要放在root下。

三、数据采集端与播放

1、在Mac上安装了OBS直播软件,设置一下推流的地址

然后点击开始推流。

2、播放端

用VCL播放器,OPEN NETWORK输入拉流地址 rtmp://118.31.5.244/live进行播放。

四、RTMP协议一些概念

1、RTMP是应用层协议,默认使用1935端口号,网络层依赖于TCP来保证可靠传输。

2、RTMP需要客户端和服务器通过握手来建立连接,大致握手过程如下

  • client--> server   : 发送一个创建流的请求  (C0、C1)

  • server--> client   : 返回一个流的索引号 (S0、S1、S2)

  • client--> server   : 开始发送 (C2)

  • client--> server   : 发送音视频数据

握手完成后消息分块传输,每个消息块有一个ID,一个消息块发送完成才能发送下一下消息块,服务器接收完成基于消息块ID组合成消息,一般消息块大小为128字节。所以使用RTMP协议一般加载有3,4秒的延迟。

注:协议原理还是比较复杂,简单了解一下不再深入了,今天实验开始是想用手机端做推流的,找了个工具不行,下次有时间自己用Android搞个推流工具(刚买了Android手机),后续再介绍一下HLS协议等其它的一些概念。

你可能感兴趣的:(杂项,音视频)