音視頻處理相關,首先須要面臨的是音視頻多媒體的比特率問題,比特率也是碼率,一個音頻比特率爲 128kb/s,即每秒128k bit,8bit=1Byte,也就是這個音頻每秒鐘佔用16KB的存儲空間,而若是涉及到多聲道就應該乘以相應的倍數。php
因爲視頻由視頻圖像數據與音頻數據組裝而成,所以 對於視頻來講,就除了音頻audio以外,還要加上video的大小。ide
上述音頻視頻的碼率都會涉及到編解碼壓縮比例的問題。網站
首先是音頻碼率的計算,一個音頻的基本屬性假設爲: 採樣率:44.1KHZ,碼率:128kb/s,通道數:雙聲道。編碼
——1 字節(也就是8bit) 只能記錄 256 個數, 也就是隻能將振幅劃分紅 256 個等級;cdn
——2 字節(也就是16bit) 能夠細到 65536 個數, CD 標準視頻
因而先放一張圖以下所示,這張圖是一個音頻的波形圖,波形的橫軸設爲X,縱軸爲Y。Y軸的精度就是採樣位數,而X軸的精度則表明每秒鐘採樣頻次即採樣率,所以一個音頻的比特率即單位時間所佔空間大小爲:比特率=採樣率 * 採樣位數 * 通道數。blog
而又因爲音頻格式的不一樣,所採用的壓縮編碼方式皆不相同,所以在計算音頻對應比特率時,還應乘以壓縮的倍率,如0.2等。get
比特率=採樣率 * 採樣位數 * 通道數 * 壓縮比例博客
因爲視頻由視頻圖像及音頻聲音封裝而成,所以視頻的碼率計算須要分爲兩部分:視頻圖像的碼率 + 視頻中音頻的碼率。而音頻的碼率咱們已經在上面計算過了,所以接下來要說的是視頻圖像的碼率。 it
如上圖所示,是一段視頻,若是要計算一個未通過壓縮的視頻圖像的碼率,則須要圖像的分辨率(如1080*720)屬性,圖像位深度(如8或16)以及每秒幀數(如60,90)。即公式以下:
幀率 * 像素寬 * 像素長 * 位深度 = 視頻圖像碼率。如一個視頻屬性爲:60fps(幀率),480*720p,32位位深,則視頻圖像碼率 = 60 * 480 * 720 * 32。
整個未壓縮的視頻碼率 = 音頻碼率 + 視頻圖像碼率;因爲當前視頻均採用編碼壓縮,所以還須要乘以倍率,視頻碼率 = 音頻碼率* 音頻壓縮比率 + 視頻圖像碼率* 視頻壓縮比率。而計算出的視頻碼率只能大約得估算出真正的視頻碼率,由於其中還有一些其餘的影響參數。
在寫這篇博客的時候,也發現了有個根據視頻參數自動計算視頻碼率的網站,toolstud.io/video/bitra… ,感受很不錯,推薦。