上一篇给牛奶做直播之二 主要讲用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编码。

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

然后点击开始推流。
2、播放端
用VCL播放器,OPEN NETWORK输入拉流地址 rtmp://118.31.5.244/live进行播放。
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协议等其它的一些概念。