flazr针对rtmp进行批量直播测试
来源:互联网 发布:水木年华知乎 编辑:程序博客网 时间:2024/05/22 02:08
前两天想用python写个脚本,批量访问rtmp服务器,达到并发直播的效果,在网络上搜了下,有个python-librtmp的库可以用,但是这个库死活装不上来,不想浪费太多时间,然后放弃了(后面再研究)。
随后用度娘细搜了下,发现了flazr这个工具,支持rtmp并发直播的功能,完全可以用来进行并发直播的压力测试,立马下载并投入使用。
这个工具支持在win和linux下使用,分别执行.bat和.sh脚本就行了,如下:
client.sh rtmp://ip:port/path -load 200 ----->表示200个并发请求
这个工具是用java开发的,使用之前需要设置一下jvm,否则容易出现java head 的错误。
直接打开.sh脚本,根据自身情况设置jvm的MEM,如下:
这段时间一直在进行基于srs的视频直播业务的压力测试,目前在进行的是并发推流的测试场景。
视频直播服务器采用的是rtmp(Real Time Messaging Protocol)协议,推流的目标地址也是类似于“rtmp://0.0.0.1/path”,就测试情况来看,没有比较合适的进行压力测试工具。最终决定使用python来开发能够执行并发推流的脚本。最初的时候,在网上找到一个支持rtmp协议的python第三方模块rtmpy,不过该模块一直未能安装成功。后来在同事处了解到了ffmpeg(一套多媒体编解码框架),这是一个非常强大的编解码工具,有众多的参数可用,刚好满足我进行推流和直播的测试需求。
在进一步熟悉了一下ffmpeg后,就开始考虑将ffmpeg与python结合使用,在linux环境下,可以使用python中的os.popen() 方法来执行ffmpeg命令,那么对于推流场景就可以实现如下方法:
def fun():
os.popen(“ffmpeg -re -i xxx.mp4 -c copy -f flv rtmp://0.0.0.0:1935/path 2>/dev/null”)
当然,上面只是一个简单的使用ffmpeg来执行视频流推送的实现方法,要达到并发推送的目的,那么就必须使用多进程并发,在这里最好的方式是使用python的进程池来实现,就是使用multiprocessing模块的Pool,如:
poo = multilprocessing.Pool(process = 5)
for x in rtmpAddrList:
pool.apply_async(fun,(x,))#”x“就是传入方法fun中的参数,可以将fun中的ffmpeg命令参数化,这样就可以实现对不同的rtmp地址执行推流操作
pool.close()
pool.join()
对视频直播服务器的压力测试有三个比较重要的场景,并发直播、并发推流、并发直播+并发推流,这三个场景都可以使用上面的方式实现压力测试,当然不能在一台测试机器运行太多并发进程,最好是准备多台测试机器,将并发进程平均分配到每台测试机器,然后让各测试机器间隔一定的时间启动脚本,这样的话不但可以实现压力测试,还可以测试视频直播服务器在并发数逐渐增长的情况下cpu、memory、io的性能指标变化曲线。
转自:http://blog.csdn.net/u011881908/article/details/45147535- flazr针对rtmp进行批量直播测试
- flazr针对rtmp进行批量直播测试
- flazr针对rtmp进行批量直播测试
- RTMP 协议的一个 Java 实现:Flazr
- 使用FMS进行HDS,RTMP,HLS直播
- 开发rtmp直播流测试地址
- 基于nginx-rtmp-module直播测试
- 针对批量插入如何提高性能的问题进行的测试过程
- EasyRTMP推送RTSP视频源进行RTMP直播
- CrtmpServer进行RTMP直播遇到的_checkbw问题
- caffemodel进行批量测试
- 单虚拟机nginx-rtmp-module直播带宽测试
- FLV格式文件如何组RTMP包发送给RTMP服务器进行直播
- EasyRTMP实现Demux解析MP4文件进行rtmp推送实现RTMP直播功能
- 洋铭 NVS-25 网络编码器推送RTMP直播流至流媒体系统进行网络直播
- EasyRTMP手机直播推流到EasyDSS进行RTMP直播过程中分辨率反复切换崩溃问题解决
- rtmp直播协议介绍
- RTMP流媒体直播资料
- LeetCode-38.Count and Say
- 断言测试
- PCA算法实现
- 语音关键词检索实验小结
- 热门IOS 第三方库
- flazr针对rtmp进行批量直播测试
- Android 学习笔记 1
- 用java实现谷歌PageRank的算法
- 伸展树
- hibernate5(7)操纵对象入门[2]四大对象状态分析
- Light OJ 1264 Grouping Friends (DP+枚举子集)
- iOS证书和.p12文件
- python内建函数sorted方法概述
- poj 2723 Get Luffy Out 2-SAT