Nginx rtmp 推流(publish) 解析

系列文章:
Nginx rtmp 拉流播放(play)_fdsafwagdagadg6576的专栏-CSDN博客
Nginx rtmp 拉流(转发pull)_fdsafwagdagadg6576的专栏-CSDN博客
Nginx rtmp 转推_fdsafwagdagadg6576的专栏-CSDN博客
Nginx rtmp 点播流程_fdsafwagdagadg6576的专栏-CSDN博客

1 整体结构图:

send streaming

先建立信令,然后接收媒体

2 流程图

image

3 阶段

  • 1 handshake
  • 2 connect
  • 3 createStream
  • 4 publish
  • 5 接收av
  • 6 转推

4 源码分析:

**ngx_rtmp_relay_publish(ngx_rtmp_session_t s, ngx_rtmp_publish_t v)

**s->relay **

    //b) //s->relay无论是转推还是relay ;init is 0,转推,relay 一次之后变成1.直接next
    if (ctx && s->relay) {
        goto next;
    }

**接收流媒体 **

    /*从ngx_rtmp_relay_create_local_ctx函数返回后,就一直返回到ngx_rtmp_relay_publish函数中.
        接着执行 next_publish的下一个函数.这里为 ngx_rtmp_live_publish。*/
    //因为是next,所以不是ngx_rtmp_relay_publish,而是 ngx_rtmp_live_publish(relay先于live)
    //ngx_rtmp_live_publish;ngx_rtmp_live_join as publish
    return next_publish(s, v);

如果对您有所帮助,请随手点赞,谢谢

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容