本文采用的 SRS 版本是 4.0-b8 , 下载地址:github


本文主要对前面的文章做下总结。

《SRS4.0源码分析-main》,《SRS4.0源码分析-RTMP入口》,《SRS4.0源码分析-创建RTMP协程》,《SRS4.0源码分析-SrsRtmpConn::cycle》,《SRS4.0源码分析-SrsRtmpConn::stream_service_cycle》,《SRS4.0源码分析-SrsRecvThread::cycle》。

上面 7 篇 文章从 RTMP 入口,一直追踪到 推流数据保存,已经把推流大部分的逻辑 跑完了,所以需要画一张整体的流程图,协程函数 用颜色标注起来了,如下:

对上面的流程做下简单的总结。

1,SRS 服务器启动之后,会开启一个协程 (SrsTcpListener::cycle) 来 监听 1935 的RTMP端口,不断 accept 客户端请求。

2,始祖协程 利用 wg.wait() 等等其他的服务结束,其他服务是指 RTMP服务,SRT服务,RTC 服务。

3,有RTMP推流客户端请求来了,新开一个协程DSrsRtmpConn::cycle) 来处理 请求,包括RTMP握手,传输音视频数据前的交互。处理完前期的交互工作之后,发现客户端是一个推流客户端,就会再开一个协程 E SrsRecvThread::cycle)来处理推过来的音视频数据流。之前的协程D 会阻塞不断循环统计一些信息。


由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。

SRS4.0源码分析-推流总结相关推荐

  1. SRS4.0源码分析-SrsRecvThread::cycle

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 从<SRS4.0源码分析-SrsRtmpConn::stream_service_cycle> 得知 ,真正接受客户端 ...

  2. SRS4.0源码分析-CMake

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github <SRS4.0源码分析-调试环境搭建> 讲了 SRS 在 Clion 里面的调试,本文主要讲解 srs-4.0-b8\ ...

  3. SRS4.0源码分析-序言

    <SRS4.0源码分析>专栏,会从 configure(配置),makefile(编译规则),main (入口函数), 带你一步一步了解 SRS 的主干代码逻辑. 这里分享一个本人阅读开源 ...

  4. SRS4.0源码分析-main

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 本文开始讲解 SRS 的入口文件.SRS 源码里 其实有 3 个 main() 函数,分别在 srs_main_ingest_hl ...

  5. SRS4.0源码分析-RTMP入口

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 上篇文章 <SRS4.0源码分析-main> 讲解了 SRS main 函数的基本流程,但是可能有些朋友还是比较懵逼. ...

  6. SRS4.0源码分析-state-thread

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 由于 SRS 主要使用的 是 state-thread 协程库,这个库是 8年前的, <state-thread 官网文档& ...

  7. SRS4.0源码分析-调试环境搭建

    本本文采用的 SRS 版本是 4.0-b8 , 下载地址:github SRS4.0 可以很方便地在 clion 软件下面断点调试,查看函数调用,堆栈. SRS的作者杨成立很贴心,在源码里放置了一个 ...

  8. SRS4.0源码分析-RTMP延迟

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 本文主要对 SRS RTMP 直播做延迟测试,然后介绍如何优化 RTMP 的延迟.为了不嵌套界面,介绍一下 ffmpeg 如何抓取 ...

  9. 《MapReduce 2.0源码分析与编程实战》一第1章 HBase介绍

    本节书摘来异步社区<MapReduce 2.0源码分析与编程实战>一书中的第1章,作者: 王晓华 责编: 陈冀康,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

最新文章

  1. python基础:购物车的简单实现
  2. codeforces732D Exams(二分)
  3. Flex数据绑定陷阱(一)
  4. java中输出时间12小时制转换为24小时制显示
  5. java轻功游戏,会轻功又可以飞的游戏(3d大型游戏)
  6. mysql sql高级应用程序_mysql-sql高级应用
  7. 深入解析:Row Movement 的原理和性能影响与关联
  8. FastDfs之TrackerServer的详细配置介绍
  9. 嵌入式系统功能需求分析_机械管理系统如何物料需求分析
  10. 读《微波工程(第三版)》笔记 (9:传输线模型)
  11. 这个高颜值的开源第三方网易云音乐播放器你值得拥有
  12. MATLAB程序设计-1.MATLAB简介
  13. android rar文件怎么打开方式,rar文件手机上怎么打开 手机怎么打开zip文件
  14. 算法竞赛命题指南(命题流程、Polygon的使用等)
  15. 壁纸|锁屏和桌面套图壁纸,一套的,给手机来个套餐
  16. iOS手机自带浏览器Safari无法长按保存图片
  17. DSP TMS320F28377D与TMS320F28335硬件资源对比
  18. 模拟cmos集成电路(3)
  19. 计算机软件基础-数据结构与算法
  20. 关于学习vue.js前端遇到的问题总结

热门文章

  1. 本“徕”就美,Xiaomi 12S 系列原生双画质的修炼秘籍
  2. Swagger使用配置
  3. 自媒体全新赛道:三农领域怎么做?
  4. ros robot_localization
  5. ERP管理软件在我国的现状(转)
  6. Java 类和对象——抽象类、接口、Object类
  7. Debian开启ssh服务
  8. 升级jenkins 导致jenkins启动失败_升级Jenkins:发布和代理 VUE 项目
  9. Vue路由的使用方法
  10. mysql数据库事务日志