
srs
文章平均质量分 68
ddr77
我就是ddr77,知道的人自然知道啦。
展开
-
srs代码学习(3)-链接管理
上次谈到端口侦听后,如果有连接上来,会一直回调到server的accept_client函数里。下面来一步一步分析这个函数。并分析下srs的连接框架int max_connections = _srs_config->get_max_connections(); if ((int)conns.size() >= max_connections) { srs_error(原创 2016-08-26 10:34:55 · 2622 阅读 · 0 评论 -
srs 如何集成rannet
编译的问题上一篇已经解决了。这篇主要解决如何在代码层面来整合。只是大概的框架。还没有完全成熟。1)增加属于udp的listener类代码为:struct IRakListenerHandler{ IRakListenerHandler(); ~IRakListenerHandler(); virtual int on_udp_connect(RakNetGUID guid原创 2016-10-19 15:19:06 · 935 阅读 · 1 评论 -
srs 日志分析---spark
原文地址: 点击打开链接拷贝黏贴Spark分析SRS日志 本文描述了如何使用Spark分析SRS的日志,环境搭建参考HDFS和Spark,下载SRS实例日志。Cluster HDFS和Spark的URI是hdfs://hdfs.winlin.cn:9000和spark://hdfs.winlin.cn:7077,集群的配置如下:S转载 2016-11-04 10:27:45 · 2327 阅读 · 0 评论 -
如何把raknet的库编译到srs里面
1)头文件的包括在需要的头文件里添加如下文件#include "RakPeerInterface.h"#include "RakPeerInterface.h"#include "RakNetTypes.h"#include "GetTime.h"#include "BitStream.h"修改./obj/Make文件,CORE_MODULE_INCS = -Isrc/co原创 2016-10-13 15:41:46 · 886 阅读 · 0 评论 -
在网络不好的情况下如何通过rtmp命令自适应
主要考虑以下两种情况1)上传端网络波动比较大。2)收听端网络比较大。当主播网络波动到低点时,可以重新修改编解码参数到一个比较低的码率值,此时需要注意的是修改过对于的音视频数据的metadata,基头两-三个字节。但收听端网络不佳的时候,可以通知服务,只发关键帧或者干脆不发视频帧,只发音频帧,因为在视频会议中,音频的优先级别要大于视频的优先级别,不过。rtmp协议本身并不支持原创 2016-10-11 10:43:20 · 1480 阅读 · 0 评论 -
srs中对tcp底层的nodelay的优化
在srs代码中,对于tcp优化有这么一段代码void SrsRtmpConn::set_sock_options(){ bool nvalue = _srs_config->get_tcp_nodelay(req->vhost); if (nvalue != tcp_nodelay) { tcp_nodelay = nvalue;#ifdef SRS_PER转载 2016-10-10 11:21:45 · 2162 阅读 · 0 评论 -
srs代码学习(7)--消息接收过程
通过前几篇的分析。我们发现,如果一份数据推上来的话,有点时候需要转发多路出去,比如forward,多路forward,或者多个edge的出现,这时候的消息如果每一路都复制一份的话,内存开销会非常的打。那么srs怎么处理呢?首先看看消息的结构原创 2016-09-06 15:16:58 · 4839 阅读 · 3 评论 -
srs代码学习(6)--如何实现edge
sre集群的方式有两种一种是forword类型的。一种是edge-origin类型的。后者比前者要复杂的多。就从比较难的开始分析。有实现edge,首先得在配置文件中做配置。配置方式如下这个配置里配置了实时模式,边缘模式(remote)那么这个配置到了代码中是如何生效的呢?这里面核心的类还是SrsSource,如果服务设置为边缘模式,这个类的角色,经历了从服务到客户端原创 2016-09-06 10:51:10 · 4675 阅读 · 0 评论 -
srs代码学习(2)- 线程模型
代码阅读到现在。发现srs有两大类线程。一个是主线程的逻辑。一个是监听线程簇。结构图如下一定还有第三种线程模型,负责底层的多路分发。今天还没有发现。原创 2016-08-25 17:09:04 · 2809 阅读 · 1 评论 -
srs服务压力测试
原文链接为 点击打开链接[root@localhost ~]# yum install git unzip patch gcc gcc-c++ make[root@localhost ~]# git clone https://github.com/winlinvip/st-load.git[root@localhost st-load]# ./configur转载 2016-08-25 22:19:50 · 4421 阅读 · 0 评论 -
srs代码学习(1)--listen建立过程
srs的服务侦听的建立过程。以rtmp服务为例 srs服务侦听的建立依靠从上到下的三个类。分别是SrsServer SrsStreamListener SrsTcpListener端口侦听过程为1)main函数中调用全局变量_srs_server的 listen()函数if ((ret = _srs_server->listen()) != ERROR原创 2016-08-25 15:19:44 · 4015 阅读 · 2 评论 -
srs代码学习(8)--rtmp发送
今天分析下发送过程以及其中的数据流变化。发送相对简单点。原创 2016-09-08 10:00:09 · 1432 阅读 · 5 评论 -
srs代码学习(9)----http_api处理流程
srs提供http相关功能。包括http_server http_api查询功能和http_heartbeat ,http_callback等。首先分析http_api,这个提供一系列的http的接口,可以用来查询服务器的状态,但它的重要性并不只限于http查询,更重要的是在将来上线运营中,随着机器部署的增加。在需要在线修改机器配置的时候,也可以用这个接口。下面来分析下一个http原创 2016-09-13 11:06:28 · 9654 阅读 · 1 评论 -
srs编译遇到的问题
编译配置如下 ./configure --disable-all --with-ssl --with-http-api --with-http-callback --with-ffmpeg --with-transcode提示安装cherrypy需要管理员权限。提示为"install CherryPy-3.2.4" require sudoer failed. ret=1原创 2016-09-12 14:07:11 · 5474 阅读 · 0 评论 -
srs代码学习(5)--一些与运营相关的技术点
和大规模运营相关的技术点。我想到的有下面四个1)vhost2) edge 3) forword4) log trace 5)reload下面来一个一个具体分析原创 2016-08-31 10:33:51 · 3272 阅读 · 1 评论 -
多实例srs:srs-srs-dolphin
原文地址:https://github.com/ossrs/srs-dolphin复制黏贴用法srs-dolphinThe dolphin is a MultipleProcess SRS SRS container, which start multiple SRS in edge mode in seperate process.Abou转载 2016-08-31 10:38:43 · 1664 阅读 · 0 评论 -
srs代码学习(4)-怎么转发流
publish的流和play的流怎么连接呢?这个恐怕是最绕的地方了。看了一上午的代码,淹没于各种数据结构与流程之中后,俺终于发现了连接publish和play的关键连个类是SrsSourceSrsConsumer复杂连接着连个类实例的是SrsRtmpConn 下面我们详细讲解连接过程上片我们说到。在底层客户端连接上来后,会经过一系列处理,最后绕到SrsR原创 2016-08-30 15:21:57 · 5627 阅读 · 1 评论 -
如何通过抓包抓出rtmp的完整留地址
1)首先t通过connect命令,抓到流id前面的部分。如图在connet命令里,tcurl就是前面的一部分。2)通过Play命令获取流id play的参数就是流id然后把这两个合起来就可以。原创 2016-11-10 15:12:24 · 21141 阅读 · 0 评论