FFmpeg入门详解之129:SRS源码分析之run_directly_or_daemon() 函数

研究 SRS 的源码就是为了看一下 RTMP 服务器端是如何实现的。这是一个目标。

如果茫无目的地看源码,把日志处理,配置加载,等等源码都看一遍,虽然能看完,但是印象会不太深刻。因为没有目标跟需求驱动。

确认了目标是 RTMP 服务器的实现原理之后,后续要做的事情就比较简单了,

首先找到 SRS 的 RTMP 业务的入口,因为 SRS 是多个功能混合的,他支持 RTMP,SRT,webrtc。

在你了解 RTMP 业务入口的同时,其他功能的入口也会找到。

同时,在研究 RTMP 服务器端逻辑的时候,各种 日志处理,配置加载,也会一并了解。

开始寻找 RTMP 服务器的入口。先分析 run_directly_or_daemon() 函数,这个函数的代码比较简单,就不画流程图,直接截图代码。请看下图:

上图代码有几个重点:

1,用了比较多的srs_trace() 函数来记录日志。srs_trace() 函数会往 srs.log 写入一条日志

2,SRS的守护进程没用 setsid() 跟 umask(022) ,也就是当前进程没有脱离 从父进程继承 的 SessionID、进程组ID和打开的终端。

3,调用 run_hybrid_server(),重点就是 run_hybrid_server 函数。

猜你喜欢

转载自blog.csdn.net/teachermei/article/details/129435031