系列文章:
Nginx rtmp 拉流播放(play)_fdsafwagdagadg6576的專欄-CSDN博客
Nginx rtmp 拉流(轉(zhuǎn)發(fā)pull)_fdsafwagdagadg6576的專欄-CSDN博客
Nginx rtmp 轉(zhuǎn)推_fdsafwagdagadg6576的專欄-CSDN博客
Nginx rtmp 點(diǎn)播流程_fdsafwagdagadg6576的專欄-CSDN博客
1 整體結(jié)構(gòu)圖:
send streaming
先建立信令,然后接收媒體
2 流程圖
image
3 階段
- 1 handshake
- 2 connect
- 3 createStream
- 4 publish
- 5 接收av
- 6 轉(zhuǎn)推
4 源碼分析:
**ngx_rtmp_relay_publish(ngx_rtmp_session_t s, ngx_rtmp_publish_t v)
**s->relay **
//b) //s->relay無(wú)論是轉(zhuǎn)推還是relay ;init is 0,轉(zhuǎn)推,relay 一次之后變成1.直接next
if (ctx && s->relay) {
goto next;
}
**接收流媒體 **
/*從ngx_rtmp_relay_create_local_ctx函數(shù)返回后,就一直返回到ngx_rtmp_relay_publish函數(shù)中.
接著執(zhí)行 next_publish的下一個(gè)函數(shù).這里為 ngx_rtmp_live_publish。*/
//因?yàn)槭莕ext,所以不是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);