編輯:關於android開發
關於直播的技術文章不少,成體系的不多。我們將用七篇文章,更系統化地介紹當下大熱的視頻直播各環節的關鍵技術,幫助視頻直播創業者們更全面、深入地了解視頻直播技術,更好地技術選型。
本系列文章大綱如下:
(一)采集
(二)處理
(三)編碼和封裝
(四)推流和傳輸
(五)延遲優化
(六)現代播放器原理
(七)SDK 性能測試模型
本篇是《視頻直播技術詳解》系列的最後一篇直播雲 SDK 性能測試模型,SDK 的性能對最終 App 的影響非常大。SDK 版本迭代快速,每次發布前都要進行系統的測試,測試要有比較一致的行為,要有性能模型作為理論基礎,對 SDK 的性能做量化評估。本文就是來探討影響 SDK 性能的指標並建立相應的性能模型的。
在進行測試之前我們需要明確幾個對視頻的質量和大小影響最大的參數:幀率、碼率和分辨率。
1)如何制定幀率
一幀就是一副靜止的畫面,連續的幀就形成動畫,如電視圖象等。我們通常說幀數,簡單地說,就是在 1 秒鐘時間裡傳輸的圖片的數,也可以理解為圖形處理器每秒鐘能夠刷新幾次,通常用 fps(Frames Per Second)表示。每一幀都是靜止的圖象,快速連續地顯示幀便形成了運動的假象。高的幀率可以得到更流暢、更逼真的動畫。每秒鐘幀數 (fps) 愈多,所顯示的動作就會愈流暢。
2)如何制定碼率
我們首先看視頻編碼的目的,它是為了在有限的帶寬中傳輸盡可能清晰的視頻,我們以每秒 25 幀的圖像舉例,25 幀圖像中定義了 GOP 組,目前主要是有 I,B,P 幀三種幀格式,I 幀是關鍵幀,你可以想象它就是一幅 JPEG 壓縮圖像,而 B,P 幀是依靠 I 幀存在的,如果丟失了 I 幀,B,P 幀是看不到圖像的,B,P 幀描述的不是實際的圖像像素內容,而是每個相關像素的變化量,他們相對於 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×720,1920×1088。在成像的兩組數字中,前者為圖片長度,後者為圖片的寬度,兩者相乘得出的是圖片的像素。
有了上述的前置知識,我們可以開始准備測試 SDK 的性能了,我們首先分析一下都有哪些指標可以反映 SDK 的性能,分成 Android 和 iOS 兩個平台:
Android
iOS
除了上面的一些系統級別的指標外,下面是直播 SDK 中特有的一些指標,這些指標可以反映出 SDK 的核心競爭力和一些主要的差異,涉及到視頻的清晰度和流暢度,也是可以量化的。
1)影響視頻清晰度的指標
2)影響視頻流暢度的指標
3)其他重要指標
直播是流量和性能的消耗大戶,有一些指標,直接影響了用戶的感受,也是我們需要重點關注的:
測試過程需要先固化一些測試條件,然後根據不同的測試條件得出測試結果,這裡選擇了兩個現在最常見的條件,是我們通過回訪大量的客戶得出的一些統計數字,可以反映大部分直播應用所處的場景。主要從分辨率、視頻處理、碼率和網絡環境幾個維度進行限制。
最後分為幾個兩種測試指標:客觀和主觀指標,前者反映了 SDK 對系統的消耗程度,但雖說是客觀指標並不是說對用戶沒有影響、只是說得出的結果用戶感受不明顯。主觀指標則會直接影響最終用戶體驗,但在傳統的測試中反而容易被忽略,因為不好量化,這裡拍磚引玉的提出一些量化的方式,希望引起讀者的思考。
測試條件 A
這個條件,反映了大部分低速網絡情況下的使用場景,也反映了 SDK 基本的性能情況,可以作為 SDK 基本推流和拉流情況下的基准測試,不引入太多的測試依賴。
測試條件 B
這個條件,反映了大部分客戶的使用場景,具有較高的分辨率和美顏視頻處理,可以作為 SDK 競品分析的重要依據,測試結果非常接近真實場景。
1)客觀指標測試計劃
客觀影響 App 穩定性和性能的指標:
2)主觀指標測試計劃
主觀影響 App 使用者的指標:
3)結果顯示
通過這種反復迭代的自動化的、系統化的測試,我們以職人之心近乎偏執地反復打磨著 SDK 的性能,只為給最終用戶帶來最好的直播體驗,幫助我們的客戶通過次時代的媒體最大化自己的商業價值,我們希望在您披荊斬棘的路上我們始終相伴。
本文作者:七牛雲布道師@卜赫,原文可去七牛雲官方博客查看。
伴隨ListView、RecyclerView、ScrollView滾動滑入滑出小圖標--第三方開源--FloatingActionButton,recyclerview
android學習——LinearLayout線性布局,linearlayout布局LinearLayout線性布局 LinearLayout是一種線型的
android沉浸式狀態欄、變色狀態欄、透明狀態欄、修改狀態欄顏色及透明 首先我要區分清楚沉浸式狀態欄與變色狀態欄。 沉浸式狀態欄指的是,狀態欄隱藏,在手指做了相關操作後
android重復的文件復制APK META-INF許可證錯誤記錄,apkmeta-inf* What went wrong:Execution failed for t