omniture

七牛視頻直播技術詳解 直播云、SDK 性能測試模型

2016-10-12 20:50 8134
七牛結合實時流網絡 LiveNet 和直播云解決方案的實踐,用八篇文章,更系統(tǒng)化地介紹當下大熱的視頻直播各環(huán)節(jié)的關鍵技術,幫助視頻直播創(chuàng)業(yè)者們更全面、深入地了解視頻直播技術,更好地技術選型。

北京2016年10月12日電 /美通社/ -- 七牛云于 6 月底發(fā)布了一個針對視頻直播的實時流網絡 LiveNet 和完整的直播云解決方案,很多開發(fā)者對這個網絡和解決方案的細節(jié)和使用場景非常感興趣。

七牛結合實時流網絡 LiveNet 和直播云解決方案的實踐,用八篇文章,更系統(tǒng)化地介紹當下大熱的視頻直播各環(huán)節(jié)的關鍵技術,幫助視頻直播創(chuàng)業(yè)者們更全面、深入地了解視頻直播技術,更好地技術選型。  

本篇是《視頻直播技術詳解》系列的最后一篇。直播云 SDK 性能測試模型,SDK 的性能對最終 App 的影響非常大。SDK 版本迭代快速,每次發(fā)布前都要進行系統(tǒng)的測試,測試要有比較一致的行為,要有性能模型作為理論基礎,對 SDK 的性能做量化評估。本文就是來探討影響 SDK 性能的指標并建立相應的性能模型的。

影響視頻質量和大小的重要參數

在進行測試之前需要明確幾個對視頻的質量和大小影響較大的參數:幀率、碼率和分辨率。

1)如何制定幀率

一幀就是一副靜止的畫面,連續(xù)的幀就形成動畫,如電視圖象等。所謂幀數,簡單地說,就是在 1 秒鐘時間里傳輸的圖片的數,也可以理解為圖形處理器每秒鐘能夠刷新幾次,通常用 fpsFrames Per Second)表示。每一幀都是靜止的圖象,快速連續(xù)地顯示幀便形成了運動的假象。高的幀率可以得到更流暢、更逼真的動畫。每秒鐘幀數 (fps) 愈多,所顯示的動作就會愈流暢。

2)如何制定碼率

首先看視頻編碼的目的,為了在有限的帶寬中傳輸盡可能清晰的視頻以每秒 25 幀的圖像舉例,25 幀圖像中定義了 GOP 組,目前主要是有 I、B、P 幀三種幀格式。I 幀是關鍵幀,可以想象它就是一幅 JPEG 壓縮圖像;B、P 是依靠 I 幀存在的,如果丟失了 I 幀,B、P 幀是看不到圖像的。BP 幀描述的不是實際的圖像像素內容,而是每個相關像素的變化量,他們相對于 I 幀信息量會很小。GOP 組是指一個關鍵幀I幀所在的組的長度,每個 GOP 組只有 1 I 幀。

一組畫面的碼流大小跟什么有關?當視頻編碼的壓縮方式都一樣,清晰度要求都一樣的時候,GOP 組的長度格式決定了碼流的大小,例如:每秒 25 幀畫面,GOP 組長度為 5,那么幀格式為 IBPBP,那么 1 秒鐘有 5 I 10 B 、10 P ;如果 GOP 組長度為 15,幀格式就是 IBBPBBPBBPBBPBB,那么 1 秒鐘內會有 2 I 幀和 16 B 幀和 7 P 幀,那么 5 I 幀比 2 I 幀占用的數據信息量大,所以 GOP 組的長度格式也決定了碼流的大小。

3)如何指定分辨率

分辨率概念視頻分辨率是指視頻成像產品所成圖像的大小或尺寸。常見的視像分辨率有 640×480、1088×7201920×1088。在成像的兩組數字中,前者為圖片長度,后者為圖片的寬度,兩者相乘得出的是圖片的像素。

影響SDK 性能的指標

有了上述的前置知識,可以開始準備測試 SDK 的性能了,首先分析一下都有哪些指標可以反映 SDK 的性能,分成 Android iOS 兩個平臺:

  • Android
    GC :可以通過 GC 日志記錄、Mirror GC Full GC 的頻次和時間,Full GC 會造成比較明顯的卡頓,需要評估
    UI Loop 就是 VSync Loop :反映 SDK App 流暢度的影響,理論上 60 fps 是最流暢的
    Memory :反映 SDK 占用內存的大小
    CPU Usage :反映 SDK 占用計算資源的大小
  • iOS
    UI Loop :反映 SDK App 流暢度的影響,理論上 60 fps 是最流暢的
    Memory :反映 SDK 占用內存的大小
    CPU Usage :反映 SDK 占用計算資源的大小

除了上面的一些系統(tǒng)級別的指標外,下面是直播 SDK 中特有的一些指標,這些指標可以反映出 SDK 的核心競爭力和一些主要的差異,涉及到視頻的清晰度和流暢度,也是可以量化的。

1)影響視頻清晰度的指標

幀率
碼率
分辨率
量化參數(壓縮比)

2)影響視頻流暢度的指標

碼率
幀率

3)其他重要指標

直播是流量和性能的消耗大戶,有一些指標,直接影響了用戶的感受,也是我們需要重點關注的:

耗電量
發(fā)熱(不好量化,大部分情況發(fā)熱和耗電量正比,可以使用耗電量暫時替代)

測試計劃

測試過程需要先固化一些測試條件,然后根據不同的測試條件得出測試結果,這里選擇了兩個現在最常見的條件,是七牛云通過回訪大量的客戶得出的一些統(tǒng)計數字,可以反映大部分直播應用所處的場景。主要從分辨率、視頻處理、碼率和網絡環(huán)境幾個維度進行限制。

最后分為幾個兩種測試指標:客觀和主觀指標,前者反映了 SDK 對系統(tǒng)的消耗程度,但雖說是客觀指標并不是說對用戶沒有影響、只是說得出的結果用戶感受不明顯。主觀指標則會直接影響最終用戶體驗,但在傳統(tǒng)的測試中反而容易被忽略,因為不好量化,這里拍磚引玉的提出一些量化的方式,希望引起讀者的思考。

測試條件 A

分辨率 480p
無水印,無美顏
碼率 1 M
網絡保證在 0.5 M ~ 2 M

這個條件,反映了大部分低速網絡情況下的使用場景,也反映了 SDK 基本的性能情況,可以作為 SDK 基本推流和拉流情況下的基準測試,不引入太多的測試依賴。

測試條件 B
分辨率 720p
無水印,有美顏
碼率 1 M
網絡保證在 0.5 M ~ 2 M

這個條件,反映了大部分客戶的使用場景,具有較高的分辨率和美顏視頻處理,可以作為 SDK 競品分析的重要依據,測試結果非常接近真實場景。

1)客觀指標測試計劃

客觀影響 App 穩(wěn)定性和性能的指標:

  • Memory
    測試 10 分鐘,內存曲線
    測試 1 小時,TP99,TP95,TP90,需要歸檔
    測試 1 小時,內存增量,考察是否有內存泄露,需要歸檔
    參考值:上次結果
  • CPU
    測試 10 分鐘,CPU Usage 曲線
    測試 10 分鐘,TP99,TP95,TP90,需要歸檔
    參考值:上次結果
  • 碼率
    測試 10 分鐘,TP99TP95,TP90,重點說明,這里的碼率控制需要分開來看,如果網絡抖動造成碼率降低,這樣的點不計入進來,只測試 SDK 碼率控制,需要歸檔
    參考值:1 M(大小都是偏差)
  • 耗電量
    測試一小時,記錄進程總耗電量、屏幕顯示耗電量、CPU 耗電量,需要歸檔
    參考值:上次結果

2)主觀指標測試計劃

主觀影響 App 使用者的指標:

  • UI Loop App 本身可以達到的較大幀率,不同于視頻幀率,統(tǒng)計他的原因是我們的 SDK 可能會影響整個 App 的流暢度,需要跟蹤
    測試 10 分鐘,UI Loop 曲線
    測試 10 分鐘,UI Loop TP99TP95,TP90,需要歸檔反復比較
    參考值:60 fps
  • Android GC
    測試 1 小時,記錄 Mirror GC Full GC 的頻次,記錄 GC 時長的 TP99,TP95TP90,需要歸檔反復比較
    參考值:上次結果
    幀率(fps
    測試 10 分鐘,TP99,TP95,TP90,需要歸檔反復比較
    參考值:30 fps
  • PSNR 比較視頻清晰度的指標
    測試 10 分鐘,需要歸檔反復比較,這個指標可以使用固定視頻作為輸入
    參考值:上次結果

3)結果顯示

表格顯示具體指標
曲線顯示原始數據和時間軸的數據
熱圖顯示和參考值的偏差
熱圖顯示距離上次歸檔值是改善了還是惡化了

通過這種反復迭代的自動化的、系統(tǒng)化的測試,七牛云以職人之心近乎偏執(zhí)地反復打磨著 SDK 的性能,只為給最終用戶帶來較好的直播體驗,幫助客戶通過次時代的媒體較大化自己的商業(yè)價值。

消息來源:七牛云
China-PRNewsire-300-300.png
全球TMT
微信公眾號“全球TMT”發(fā)布全球互聯(lián)網、科技、媒體、通訊企業(yè)的經營動態(tài)、財報信息、企業(yè)并購消息。掃描二維碼,立即訂閱!
collection