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

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

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

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

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

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

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

RTMP:即Real Time Messaging Protocol,基於flash沒法在iOS的瀏覽器裏播放,實時性較好。因此通常使用這種協議來上傳視頻流,也就是視頻流推送到服務器。web

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

二、測試所涉及的關鍵點:centos

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

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

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

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

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

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

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

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

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

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


二、直播技術


通常來講,咱們常把視頻直播的流程能夠分爲以下幾步:

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

 

簡單描述起來就是:主播端把音視頻數據採集編碼後經過網絡傳送到觀衆端,觀衆進行觀看。視頻直播就至關因而把圖像數據打包,從一個地方運輸到另外一個地方。咱們本次關注的就是流媒體的性能測試。

    網絡直播面向對象在全國各地,在網絡傳輸方面所有本身來作基本不現實,找提供推流服務的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三者的關係使用場景所依賴的插件延時在下表中給出

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


3.一、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.二、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

相關文章
相關標籤/搜索