searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

SRS源码阅读(二)

2023-08-22 09:13:30
14
0

接SRS源码阅读(一)

7、如果后台运行写进程pid到文件

if ((err = svr->acquire_pid_file()) != srs_success) {
    return srs_error_wrap(err, "acquire pid file");
}

8、监听连接:

Listen()函数里面包含了对各个部分的监听,主要包含如下部分:

if ((err = svr->listen()) != srs_success ) {
    return srs_error_wrap(err, "listen");
}

8.1 listen_rtmp: rtmp推流或拉流连接

if ((err = svr->listen——rtmp()) != srs_success ) {
    return srs_error_wrap(err, "rtmp listen");
}

8.2 listen_http_api: api请求连接

if ((err = svr->listen_http_api()) != srs_success ) {
    return srs_error_wrap(err, "http api listen");
}

8.3 listen_http_stream: http拉流连接,http-flv,http-ts,http-aac,http-mp3

if ((err = svr->listen_http_stream()) != srs_success ) {
    return srs_error_wrap(err, "http stream listen");
}

8.4 listen_stream_caster: 接收MpegTSOverUdp流请求,rtsp推流请求,http-flv推流请求

if ((err = svr->listen_http_stream()) != srs_success ) {
    return srs_error_wrap(err, "stream caster listen");
}

9、初始化http_ api接口处理

if ((err = svr->http_handle()) != srs_success ) {
    return srs_error_wrap(err, "http handle");
}

10、启动ingest协程,使用ffmpeg,拉取文件或流转发到本服务

if ((err = svr->ingest()) != srs_success ) {
    return srs_error_wrap(err, "ingest");
}

跳转至函数ingest(),里面会有一个start()函数,进入该函数里面的clear_engines()函数,里面就是一些关于FFmpeg的操作。

11、启动主线程

if ((err = svr->cycle()) != srs_success ) {
    return srs_error_wrap(err, "main cycle");
}

主要是重新加载配置,更新时 间缓冲,更新CPU,内存,网络,磁盘使用情况,更新RTMP服务器状态网络流量,发送http心跳等等。

0条评论
0 / 1000
范****林
3文章数
0粉丝数
范****林
3 文章 | 0 粉丝
范****林
3文章数
0粉丝数
范****林
3 文章 | 0 粉丝
原创

SRS源码阅读(二)

2023-08-22 09:13:30
14
0

接SRS源码阅读(一)

7、如果后台运行写进程pid到文件

if ((err = svr->acquire_pid_file()) != srs_success) {
    return srs_error_wrap(err, "acquire pid file");
}

8、监听连接:

Listen()函数里面包含了对各个部分的监听,主要包含如下部分:

if ((err = svr->listen()) != srs_success ) {
    return srs_error_wrap(err, "listen");
}

8.1 listen_rtmp: rtmp推流或拉流连接

if ((err = svr->listen——rtmp()) != srs_success ) {
    return srs_error_wrap(err, "rtmp listen");
}

8.2 listen_http_api: api请求连接

if ((err = svr->listen_http_api()) != srs_success ) {
    return srs_error_wrap(err, "http api listen");
}

8.3 listen_http_stream: http拉流连接,http-flv,http-ts,http-aac,http-mp3

if ((err = svr->listen_http_stream()) != srs_success ) {
    return srs_error_wrap(err, "http stream listen");
}

8.4 listen_stream_caster: 接收MpegTSOverUdp流请求,rtsp推流请求,http-flv推流请求

if ((err = svr->listen_http_stream()) != srs_success ) {
    return srs_error_wrap(err, "stream caster listen");
}

9、初始化http_ api接口处理

if ((err = svr->http_handle()) != srs_success ) {
    return srs_error_wrap(err, "http handle");
}

10、启动ingest协程,使用ffmpeg,拉取文件或流转发到本服务

if ((err = svr->ingest()) != srs_success ) {
    return srs_error_wrap(err, "ingest");
}

跳转至函数ingest(),里面会有一个start()函数,进入该函数里面的clear_engines()函数,里面就是一些关于FFmpeg的操作。

11、启动主线程

if ((err = svr->cycle()) != srs_success ) {
    return srs_error_wrap(err, "main cycle");
}

主要是重新加载配置,更新时 间缓冲,更新CPU,内存,网络,磁盘使用情况,更新RTMP服务器状态网络流量,发送http心跳等等。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0