推流器與播放器

視頻直播的流程可以分爲如下幾步:

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

一、推流器

1.採集

採集是整個視頻推流過程中的第一個環節,它從系統的採集設備中獲取原始視頻數據,將其輸出到下一個環節。視頻的採集涉及兩方面數據的採集:音頻採集和圖像採集,它們分別對應兩種不同的輸入源

  • 音頻採集:不同的採集方式:手機麥克風、有線耳機、藍牙耳機(1、是否真從藍牙耳機錄入、2、藍牙耳機適配性:不同型號的藍牙耳機連接不同的手機、3、在推流過程中連接藍牙、4、長時間連接藍牙,會不會斷)
  • 圖像採集:攝像頭採集(前後置,單攝、三攝)、屏幕採集

中斷時的採集:切至後臺(安卓8、9、10)、接聽電話(安卓10)、鎖屏

2.處理

視頻或者音頻完成採集之後得到原始數據,爲了增加一些效果,會在將其編碼壓縮前進行處理

  • 對音頻的處理:降噪

(1)、不同噪聲環境下的降噪:大會議室、小會議室、辦公環境、公園、餐廳、馬路邊等

(2)、不同語音音素經過降噪算法處理後是否正常:

①、幾種音素的分類:

濁音:指發音時聲帶有震動的音素,比如au,o。

清音:與濁音相反,主要是通過通過氣流來發音,聲帶不震動,比如:s,p。

元音:發音過程中由氣流通過口腔而不受阻礙發出的音

輔音:與元音相對,氣流在口腔或咽頭受到阻礙而形成的音,鼻音、摩擦音等。

②、降噪主觀測試序列音素的選擇:

中文測試:中文發音,語音的持續時間比較長,很多降噪算法對音素的損傷偏小,但是我們還是需要確保我們的測試序列中包含足夠多的清音,比如:4,7,10,服等。

英文測試:相對於中文,英文每一個音素的發音延續時長就要短很多,清音出現的概率也更大,所以對英文測試時,我們就需要包含更多的音素,而且需要包含重讀、輕讀的單詞,比如s 發音在單詞前面,中間以及後面。還需要特別注意閉塞音:濁閉音:發音時長往往特別短10~20ms,能量往往比較低,在做瞬時噪聲處理時,把握不好就會損傷嚴重,清閉塞音:40~100ms,這個時間相對也比較短,而且頻譜上往往就是一根豎線,在噪聲處理時也很容易造成損傷

(3)、不同錄入距離的降噪:手持(20CM)\自拍杆(80CM)

(4)、不同採集方式之間的降噪及切換:藍牙切手機麥克風、有線切手機麥克風

(5)、開啓/關閉降噪之後的音畫同步性

  • 對視頻的處理:美顏、水印、濾鏡

3.編碼和封裝

(1)編碼

  • 爲什麼要編碼:
    • 原始視頻數據存儲空間大,一個 1080P 的 7 s 視頻需要 817 MB
    • 原始視頻數據傳輸佔用帶寬大,10 Mbps 的帶寬傳輸上述 7 s 視頻需要 11 分鐘
    • 而經過 H.264 編碼壓縮之後,視頻大小隻有 708 k ,10 Mbps 的帶寬僅需要 500 ms
  • 基本原理:核心思想就是去除冗餘信息

uploading.4e448015.gif轉存失敗重新上傳取消

(2)封裝

封裝可以理解爲媒體的容器,容器使得不同多媒體內容同步播放變得很簡單,而容器的另一個作用就是爲多媒體內容提供索引,也就是說如果沒有容器存在的話一部影片只能從一開始看到最後,不能拖動進度條,而且如果不自己去手動另外載入音頻就沒有聲音

4.推流到服務器

  • 各種網絡場景測試
    1. WiFi
    2. 4G
    3. 連續丟包
    4. 極差網絡
    5. 從弱網恢復至正常網絡
    6. 斷網再恢復
    7. 手動終止推流,再重新推流

5.播放器流播放

  • 延遲測試

不同拉流播放協議:RTMP、FLV、HLS

uploading.4e448015.gif轉存失敗重新上傳取消

    1. 長時間推流,是否有累積延遲
    2. 反覆斷網重連,是否有累積延遲
    3. 同一手機嘗試多次推流斷流
  • 不同網絡切換測試

uploading.4e448015.gif轉存失敗重新上傳取消

    1. 注意恢復之後的延遲、音畫同步
  • 音畫同步測試
    1. 剛開始推流時、推流10分鐘後
    2. 從後臺切回時
    3. 前後置攝像頭切換後
    4. 試多個機型
    5. 視頻播放的流暢性、清晰度(靜止場景、運動場景)
    6. 長時間推流,24個小時不斷流

二、播放器

1.點播

  • 播放不同分辨率的視頻:4K(原視頻)、1080P、720P、360P
  • 播放不同編碼標準的視頻:H.264、H.265(播放多個)
  • 播放不同聲道的視頻:單聲道、雙聲道、5.1聲道
  • 播放無音頻的視頻
  • 播放帶有字幕的視頻
  • 播放地址是HTTPS的視頻
  • 播放不同寬高比的視頻(16:9、9:16、1:1)
  • 播放時息屏、切後臺
  • 使用不同的解碼方式進行播放:軟解碼、硬解碼
  • 使用不同的顯示數據流控件播放:TextureView、SurfaceView(視頻畫面幀的展示控件)

uploading.4e448015.gif轉存失敗重新上傳取消

    1. SurfaceView優點及缺點

優點:可以在一個獨立的線程中進行繪製,不會影響主線程

      使用雙緩衝機制,播放視頻時畫面更流暢

缺點:不能進行平移、縮放等變換

b. TextureView優點及缺點

優點:支持移動、旋轉、縮放等動畫,支持截圖

缺點:必須在硬件加速的窗口中使用,佔用內存比SurfaceView高

  • 使用不同形式進行播放:

FIT(播放時的寬高和原視頻相同,但視頻左右留黑);

FILL(播放時的寬高和原視頻相同,但只截取視頻中間部分展示);

stretch(播放時的寬高和原視頻相同,但視頻被拉伸展示)

  • 倍速、循環、seek
  • 性能測試:

H.264、不同的播放器:

uploading.4e448015.gif轉存失敗重新上傳取消

H.265、不同的軟解碼器:

uploading.4e448015.gif轉存失敗重新上傳取消

  • 兼容性測試:

分別使用textureview和surfaceview,硬解碼播放H.264、H.265編碼的視頻各10個;軟解碼播放H.264、H.265編碼的視頻各10個,覆蓋安卓5~10,40臺機型

  • 壓力測試

以每秒10次的速度隨機進行10000次操作(切換、暫停、快進、快退等)

  • 穩定性測試

1、連續播放72小時

2、多機型

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章