音頻質量評估-1:之前主要學習了音視頻的編碼和解碼原理,和測試音頻質量的方法。接下來繼續學習下當前 短視頻 領域的 視頻質量測試方法。
算法瞭解
可以參考python的 scikit-image這個庫。裏面有很很多算法。
- PSNR
用於表示信號的最大可能功率與影響信號表示
的保真度的腐蝕噪聲功率之間的比率。由於許多信號具有非常寬的動態範圍,PSNR通常以對數分貝刻度表示。 是一個全參考算法
- SSIM Structural SIMilarity
因爲視頻就是很多幀圖片合成的,然後通過編碼壓縮後的。因此測試視頻質量 在測試圖片的質量就很重要了。
測量兩個圖像之間的相似性的方法
。SSIM指數可以看作是對被比較圖像之一的質量衡量標準
,前提是其他圖像被視爲質量完美。
# Based on: https://github.com/mostafaGwely/Structural-Similarity-Index-SSIM-
# pip3 install scikit-image opencv-python imutils
from skimage.measure import compare_ssim
import imutils
import cv2
# 3. Load the two input images
imageA = cv2.imread("1.png")
imageB = cv2.imread("2.png")
# 4. Convert the images to grayscale
grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)
# 5. Compute the Structural Similarity Index (SSIM) between the two
# images, ensuring that the difference image is returned
(score, diff) = compare_ssim(grayA, grayB, full=True)
diff = (diff * 255).astype("uint8")
# 6. You can print only the score if you want
print("SSIM: {}".format(score))
視頻質量
基礎測試指標
一是視頻流暢度相關的參數,比如說fps, 視頻幀抖動jitter,導入延時,端對端延時等,這方面主要影響因子是網絡因數,上下行帶寬,網絡擁塞等,這些可以通過產品開發接口或者日誌信息等獲取相關的參數信息,
- FPS 幀數
- 抖動
- 延時
- e2e 延時
- 網絡因子 ---
帶寬, 網絡擁塞
除此之外呢,就是對視頻畫面也就是視頻幀觀感的評估
, 業界有主觀和客觀的。
主觀就是 每個人有每個人的看法。 採用平均意見分 MOS meanopinion score
- 觀看距離
- 觀測環境
- 測試序列的選擇
- 序列的顯示時間間隔等
客觀就是根據每一幀的質量來量化, 和audio一樣,分爲全參考和無參考。概念都和差不多。
- 有參考評估,就是依賴原始視頻和待評測視頻進行對比,目前比較熟知的就是PSNR, SSIM VIF VMAF PEVQ等
- 無參考方法,在判斷視頻質量時不需要來自原始參考視頻的任何信息,通過對
失真視頻空域和頻域
的處理分析來提取失真視頻的特徵,或者基於視頻像素的質量模型等來得到視頻質量。這種評估標準適合與線上無原始參考視頻序列的無線和IP視頻業務,或者輸入和輸出差異化的模型,比如說視頻增強,視頻合併等場景
測試框架
目前知曉的有2個,一個 QoSTestFramework,一個是Netflix的 vmaf
QoSTestFramework(這個裏面集成了VMAF)
- 豐富的指標 ---用了 FR和NR 視頻質量測試的指標 比如PSNR等
- 模塊化 --- 易於擴展
- 可視化 -- 所有結果都可視化
框架圖
- Qos server 處理來自web的請求
- High modular and scalable 預處理
- Analysis module 分析
- Web Application -- 觸發測試任務和可視化結果顯示
- Video transmission adapter module -- 用於不同實時視頻系統的適配
VMAF Video Multi-Method Assessment Fusion
VMAF 是 Netflix 開發的感知視頻質量評估算法。VMAF 開發工具包 (VDK) 是一個包含 VMAF 算法實現的軟件包,以及一組允許用戶訓練和測試自定義 VMAF 模型的工具。
- VMAF python 庫 - 提供完整的功能,包括運行基本的 VMAF 命令行、在一批視頻文件上運行 VMAF、在視頻數據集上訓練和測試 VMAF 模型以及可視化工具等。
- vmafossexec - a C++ executable
流媒體性能測試
https://github.com/winlinvip/srs-bench 服務器負載測試工具SB