轉【性能測試】:視頻直播平台性能測試


1、直播測試涉及的專業術語:

秒開:指直播頁面的首屏快速的展現出來(1S左右)。 
分辨率:影響圖像大小,與圖像大小成正比;分辨率越高,圖像越大;分辨率越低,圖像越小。

碼率: 把每秒顯示的圖片進行壓縮后的數據量,單位為 bps(Bit Per Second)。影響體積,與體積成正比;碼率越大,體積越大;碼率越小,體積越小。

幀率:所謂的測量單位為每秒顯示幀數(Frames per Second,簡稱:FPS)或“赫茲”(Hz)。影響畫面流暢度,與畫面流暢度成正比:幀率越大,畫面越流暢;幀率越小,畫面越有跳動感。

清晰度:清晰度指影像上各細部影紋及其邊界的清晰程度,現階段對直播清晰度的考量還是主要通過人眼觀察。

分辨率:可以從顯示分辨率與圖像分辨率兩個方向來分類。顯示分辨率(屏幕分辨率)是屏幕圖像的精密度,是指顯示器所能顯示的像素有多少。圖像分辨率則是單位英寸中所包含的像素點數,其定義更趨近於分辨率本身的定義。分辨率影響圖像大小,與圖像大小成正比:分辨率越高,圖像越大;分辨率越低,圖像越小。

RTMP:即Real Time Messaging Protocol,基於flash無法在iOS的瀏覽器里播放,實時性較好。所以一般使用這種協議來上傳視頻流,也就是視頻流推送到服務器。

HLS:即Http Live Streaming,是由蘋果提出基於HTTP的流媒體傳輸協議。HLS有一個非常大的優點就是HTML5可以直接打開播放,但是延遲較大。

2、測試所涉及的關鍵點:

1)播放:正常播放、快進、倍速、拖拽進行播放,查看播放的流暢性、加載速度及其卡頓情況;

2)不同網絡下面的(2G\3G\4G|Wifi等網絡環境下的播放情況)的播放和加載情況;

3)播放的延遲情況,對於直播,要求延遲再3秒內,最好是1秒;

4)播放過程中切換課件、切換麥克、切換視頻等;

5)播放過程中,橫屏、豎屏、互動、評價等是否正常;

6)播放開始和結束時(橫豎屏)是否正常;

7)播放過程中上課、下課、退出、進入等是否正常;

8)播放過程中被外界打斷,如電話來電、按home鍵等;

9)播放過程中網絡切換,2G、3G、4G、Wifi之間網絡切換,或者相同網絡的信號的強弱,播放是否正常、斷開后網絡恢復能否繼續播放;

10)播放回放、緩存下載、下載完成播放、下載暫停繼續下載;下載后刪除再次下載;下載后重復下載等;下載后相同賬號登錄不同的機器后,再次下載和播放是否正常;


2、直播技術


一般來說,我們常把視頻直播的流程可以分為如下幾步:

采集 —>處理—>編碼和封裝—>傳輸(推流到服務器、服務器流分發)—>播放器流播放

 

簡單描述起來就是:主播端把音視頻數據采集編碼后通過網絡傳送到觀眾端,觀眾進行觀看。視頻直播就相當於是把圖像數據打包,從一個地方運輸到另一個地方。我們本次關注的就是流媒體的性能測試。

    網絡直播面向對象在全國各地,在網絡傳輸方面全部自己來做基本不現實,找提供推流服務的CDN服務商提供解決方案是最好的選擇,但是我們這次測試的直播系統主要針對公司內部員工,走的內部網絡,所已就不需要使用CDN技術。

在開始之前,我先把流媒體服務中的雙端關系說一下。在一個完整的流媒體服務框架中,角色就是"兩端加一服"。推流端、拉流端加上媒體服務器。同時按照應用場景的不同,協議又分推流協議和拉流協議

 

下面介紹一下主要的直播技術,國內的面向大眾的直播平台都是采用的rtmp、httpflv和hls技術:

httpflv:這種直播傳輸實際上就是利用的flv文件的特點,只需要一個matedata和音視頻各自header,后面的音視頻數據就可以隨意按照時間戳傳輸,當然視頻得按照gop段來傳輸,這種直播數據實際上就是一個無限大的http傳輸的flv文件,視頻地址類似:http://live.iflytek.com/live.flv,客戶端利用flv特性,可以一邊接受數據邊解碼播放。

 

rtmp:rtmp是adobe研發的開放協議,rtmp其實實質上也是傳輸的flv格式的數據,同樣是flv tag,只不過rtmp在傳輸上封裝了一層,比如rtmp不僅可以直播,也可以推流。rtmp的直播原理同樣也是利用了flv文件的特性,只需要一些頭信息,后面就可以隨意傳輸音視頻數據,達到邊傳輸邊播放。

 

hls:hls是蘋果公司開發的協議,http輪詢傳輸,該協議主要的數據格式是ts視頻文件,大致就是將裸流h264和音頻直播數據,切片封裝成ts段,形成無數的ts小文件,客戶端先請求一個m3u8文件,該文件內部會有一列ts文件的地址,客戶端按照順序依次播放ts,以此類推,hls地址類似:http:// live.iflytek.com /live.m3u8,hls在大部分的瀏覽器利用html5 video是可以直接播放的。

 

它的工作原理簡單來說就是把一段視頻流,分成一個個小的基於HTTP的文件來下載。當媒體流正在播放時,客戶端可以根據當前網絡環境,方便地在不同的碼率流中做切換,以實現更好的觀影體驗HLS的出現是為了解決蘋果原生環境中的流媒體播放,這個協議可以方便地讓Mac和iPhone播放視頻流,不依賴Adobe,

 

RTMP HLS HTTP-FLV三者的關系使用場景所依賴的插件延時在下表中給出

3、測試方法
上面說了那么多是為了下面的測試方法做鋪墊,視頻直播性能測試可以拆分為兩種測試,流媒體測試和普通的網頁測試。頁面就是我們平常進行web頁面性能測試使用的方法,不需要過多的闡述,當然還是推薦使用loadrunner進行測試。視頻直播也會存在交互界面,主持人與用戶的互動,這個性能測試過程中需要注意並進行測試,下面主要講述性能測試工具和方法


3.1、RTMP和HLS壓力測試工具配置安裝和使用

我們使用的測試環境是centos6.5,首先在環境中安裝依賴軟件包,使用git下載最新版本st-load源碼包

[root@localhost ~]# yum install git unzip patch gcc gcc-c++ make

[root@localhost ~]# git clone https://github.com/winlinvip/st-load.git

 

執行配置和編譯

[root@localhost st-load]# ./configure

 [root@localhost st-load]# make

 

查看生成的文件和目錄

[root@localhost st-load]# ls objs/

 http-parser-2.1 src st_hls_load st_rtmp_load st_rtmp_publish

 Makefile st-1.9 st_http_load st_rtmp_load_fast

 [root@localhost st-load]#

 

模擬RTMP用戶

./st_rtmp_load -c 1 -r rtmp://127.0.0.1:1935/live/livestream

 

模擬HLS直播用戶

./st_hls_load -c 1 -r http://127.0.0.1:3080/hls/hls.m3u8

 

模擬HSL點播用戶

./st_hls_load -c 10000 -o -r http://127.0.0.1:3080/hls/hls.m3u8

 

模擬RTMP推流用戶

./st_rtmp_publish -i doc/source.200kbps.768x320.flv -c 1 -r rtmp://127.0.0.1:1935/live/livestream

 

模擬RTMP多路推流用戶

./st_rtmp_publish -i doc/source.200kbps.768x320.flv -c 1000 -r rtmp://127.0.0.1:1935/live/livestream_{i}

 

支持RTMP流播放測試,一個進程支持5k並發
支持RTMP流推流測試,一個進程支持500個並發。

那么多並發前提是我們的壓力機能夠滿足,壓力機達不到要求建議使用較少的並發,較多的壓力機。

 

3.2、HTTP傳輸測試測試
LR腳本原理:測試工具服務器會一直從服務器端下載推流數據,我們使用壓力機進行壓力測試,當然我們設置的事物不會成功,我們不需要擔心,我們測試的是網絡寬帶流量。

 

測試代碼

Action()

{

//lr_think_time(3);

lr_start_transaction("load");

web_url("mp4",

"URL=http://127.0.0.1:5021/live/2",

"Resource=0",

"RecContentType=application/octet-stream",

"Referer=http:/127.0.0.1:5021/live/2",

"Snapshot=t6.inf",

"Mode=HTML",

LAST);

lr_end_transaction("load",LR_AUTO);

return 0;

}

 

測試直播流的性能其實就是測試視頻下載速度, rtmp hls 和http這些數據傳輸速度是我們所關注的點,我們做的是性能測試,功能測試關注點和性能測試所關注的有所不同。性能測試之前首先要確認測試環境的網絡帶寬,直播服務器推流的碼率,幀數,交換機的帶寬等一系列數據,獲取這些數據后我們可以推算在此網絡下我們能支持的並發數量,滿足多少用戶能夠觀看視頻直播。

 

壓力工具准備,我們這次要滿足5000路並發觀看720p視頻,數據會以1mb/s速度傳輸,網絡環境是萬兆網絡雙萬兆網卡,粗略估算能夠滿足並發數據傳輸。傳輸速度達到5000mb/s,這當當然是相當大的數據量。一般的網絡和壓力機是承載不了的,我們需要較多的壓力機進行負載,同時測試一台壓力機的負載量。根據單台壓力機的壓力量進行分配壓機機,比如我們單台壓力機最多能達到1000mb/s,我們至少需要5台壓力機。流量監控工具linux推薦使用iftop,windows使用自帶監控,壓測方法使用上述的方法。希望上述方法能夠幫助大家了解視頻直播和性能測試。

 

原文:https://blog.csdn.net/itest_2016/article/details/80383090

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM