• 给奶牛做直播之三


    ​一、前言

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

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

    二、Nginx RTMP直播服务器配置

    增加application live的配置

    1. rtmp{
    2. server{
    3. listen 1935;
    4. chunk_size 4096;
    5. application vod{
    6. play /opt/vod;
    7. }
    8. application live{
    9. live on;
    10. }
    11. }
    12. }

    http server加上

    1. location /stat{
    2. rtmp_stat all;
    3. rtmp_stat_stylesheet stat.xsl;
    4. }
    5. location /stat.xsl{
    6. root /opt/nginx-rtmp-module-master/;
    7. }

    重启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进行播放。

    四、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协议等其它的一些概念。

  • 相关阅读:
    智能网联-最全术语
    day26stream流和方法引用
    视觉slam论文、代码汇总
    java 阿里云上传照片
    Cadence Allegro PCB设计88问解析(十九) 之 Allegro中文字大小设置
    用于人类复杂疾病成药性评估的R包:DREAM包
    AI人工智能大模型业务到底有多烧钱?
    RapidSSL的便宜单域名https证书
    罗克韦尔AB PLC Logix5000中如何创建标签并使用标签进行编程?
    React组件渲染和更新的过程
  • 原文地址:https://blog.csdn.net/2301_76787421/article/details/133443345