流媒體壓力測試工具—推拉流
為方便流媒體服務端的壓力測試,向大家推薦一套流媒體的壓力測試工具(St-load),希望對從事流媒體測試或者對流媒體感興趣的同學有所幫助~
St-load
1.支援RTMP推流測試,一個程序支援500個併發。執行程式:./objs/sb_rtmp_publish
2.支援RTMP拉流測試,一個程序支援5k併發。執行程式:./objs/sb_rtmp_load
3.支援HTTP負載測試,所有併發重複下載一個HTTP檔案。執行程式:./objs/sb_http_load
4.支援HLS解析和測試,下載ts片後等待一個切片長度,模擬客戶端。支援HLS點播和直播。執行程式:./objs/sb_hls_load
安裝篇
1.在linux環境下載St-load原始碼包
[[email protected] /]# git clone https://github.com/rzrobert/st-load-master.git
2.對原始碼進行編譯
[[email protected] /]#cd st-load-master/
[[email protected] /st-load-master]#./configure
[[email protected] /st-load-master]#make
編譯完成後在objs目錄下生成可執行檔案
推流篇
1.推流前準備工作,編輯nginx.conf的RTMP層
2.模擬單路RTMP推流
./sb_rtmp_publish -i /usr/local/ffmpeg/cnlzd.flv -c 1 -r rtmp://127.0.0.1/live/livestream
3.模擬多路RTMP推流
./sb_rtmp_publish -i /usr/local/ffmpeg/cnlzd.flv -c 10 -r rtmp://127.0.0.1/live/livestream_{i}
常用引數說明:
-i 設定輸入流
-c 負載個數,預設:1
-r 後面接每個測試的url地址,等同於 --url URL
-s 執行緒啟動時間 defaut:5.00 0表示沒有延遲
注意:sb_rtmp_publish只可以推送.flv格式的視訊
拉流篇
1.RTMP
RTMP是Real Time Messaging Protocol(實時訊息傳輸協議)的首字母縮寫。RTMP是一種設計用來進行實時資料通訊的網路協議,主要用來在Flash/AIR平臺和支援RTMP協議的流媒體/互動伺服器之間進行音視訊和資料通訊。
拉流:
./sb_rtmp_load -c 1 -r rtmp://127.0.0.1:1935/live/livestream
2.HTTP
HTTP是一個屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。在最新一代的超文字標識語言HTML5中,視訊檔案的點播,同樣也採用了HTTP作為其承載協議。
拉流:
./sb_http_load -c 1 -r http://127.0.0.1:8081/live/livestream
3.HLS
HLS (HTTP Live Streaming),Apple的動態位元速率自適應技術。主要用於PC和Apple終端的音視訊服務。包括一個m3u(8)的索引檔案和TS媒體分片檔案。
分段策略:
HLS的分段策略,基本上推薦是10秒一個分片,當然,具體時間還要根據切片的實際時長做標註。通常來說,為了快取等方面的原因,在索引檔案中會保留最新的三個分片地址,以類似“滑動視窗”的形式,進行更新。
m3u8檔案:
m3u8是HTTP Live Streaming直播的索引檔案。m3u8基本上可以認為就是.m3u格式檔案,區別在於,m3u8檔案使用UTF-8字元編碼。
#EXTM3U m3u檔案頭,必須放在第一行
#EXT-X-MEDIA-SEQUENCE:7 第一個TS分片的序列號
#EXT-X-TARGETDURATION:15 每個分片TS最大時長
#EXTINF:15.099 extra info分片TS的資訊
HLS拉流:
./sb_hls_load -c 1 -r http://127.0.0.1:8081/hls/livestream/index.m3u8