您当前位置: 首页 » 12 月 2019
按日期归档: 12 月 2019

srs-bench代码整理及理解

废话不多说,直接上图,以下是对srs-bench主要模块的一个梳理:

srs-bench支持对srs进行压测,其支持的范围有:

rtmp推流

rtmp拉流

hls拉流

http请求

hls拉流:

hls的拉流是,先产生一个http请求并拉去m3u8文件,解析后并顺序请求ts文件,当请求完毕后,下载任务挂起,一般挂起时长为当前模拟播放的ts文件的duration大小。

等挂起被唤醒后,再次请求m3u8文件,并更新未下载的ts文件列表后,开始请求ts文件。若本次更新的m3u8没有发生变化,那么将进行再次挂起,挂起时长不大于当前模拟播放的ts的duration。

http请求:

首先对某个url进行请求,请求之后将会产生挂起,挂起时长主要有进程启动时的入参决定。

rtmp推流:

rtmp推流进程启动时,首先会和srs在rtmp协议上进行协商,协商完成后,会读取入参时指定的flv文件。并按照当前flv tag和下一个flv tag的时间差挂起数据发送任务。

但这里需要注意的是,如果rtmp推流的压测里指定了2个以上的并发,但又由于srs-bench只支持一个flv文件输入,那么文件打开的次数会很多次,并且读取的flv数据在协程中未共享的,因此在该测试中,这一块可以改经一下,毕竟单线程的任务来说,不存在加锁问题,因此也就可以考虑是否做到一次性将数据读到内存里,所有协程共享数据发送;以此来提高测试程序的执行效率。

毕竟协程在io上不是强项。

rtmp拉流(非fast):

对于非fast的rtmp拉流,其整个协议过程是完整的rtmp client。只不过对拉下来的流不做解码等处理,仅仅是针对协议上做一些校验和处理而已。

rtmp拉流(fast):

类似非fast的流程来说,只是收到的数据不再做rtmp协议的校验了。

2019-12-12 | | SRS, 音视频_图像相关

srs-bench代码整理及理解已关闭评论