FMUSER更輕鬆地傳輸視頻和音頻!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷蘭語
sq.fmuser.org ->阿爾巴尼亞人
ar.fmuser.org ->阿拉伯語
hy.fmuser.org - >亞美尼亞
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄羅斯語
bg.fmuser.org - >保加利亞
ca.fmuser.org ->加泰羅尼亞語
zh-CN.fmuser.org ->中文(簡體)
zh-TW.fmuser.org - >中國(繁體)
hr.fmuser.org ->克羅地亞語
cs.fmuser.org ->捷克
da.fmuser.org ->丹麥語
nl.fmuser.org - >荷蘭
et.fmuser.org ->愛沙尼亞語
tl.fmuser.org ->菲律賓
fi.fmuser.org ->芬蘭語
fr.fmuser.org - >法國
gl.fmuser.org ->加利西亞語
ka.fmuser.org ->喬治亞
de.fmuser.org ->德語
el.fmuser.org - >希臘
ht.fmuser.org ->海地克里奧爾語
iw.fmuser.org ->希伯來語
hi.fmuser.org ->印地語
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰島語
id.fmuser.org ->印尼語
ga.fmuser.org ->愛爾蘭
it.fmuser.org - >意大利
ja.fmuser.org ->日語
ko.fmuser.org ->韓文
lv.fmuser.org ->拉脫維亞
lt.fmuser.org - >立陶宛
mk.fmuser.org ->馬其頓語
ms.fmuser.org ->馬來語
mt.fmuser.org ->馬耳他語
no.fmuser.org - >挪威
fa.fmuser.org ->波斯語
pl.fmuser.org ->波蘭語
pt.fmuser.org ->葡萄牙語
ro.fmuser.org - >羅馬尼亞
ru.fmuser.org ->俄語
sr.fmuser.org ->塞爾維亞語
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亞
es.fmuser.org ->西班牙語
sw.fmuser.org ->斯瓦希里語
sv.fmuser.org ->瑞典語
th.fmuser.org - >泰國
tr.fmuser.org ->土耳其語
uk.fmuser.org ->烏克蘭語
ur.fmuser.org ->烏爾都語
vi.fmuser.org - >越南
cy.fmuser.org ->威爾士語
yi.fmuser.org - >意第緒語
問題背景:
無論是檢查線上的一些花屏、卡頓、馬賽克問題,還是開發碼率自適應功能,或者優化客戶端播放器的JitterBuffer,都需要編碼器發射端的配合。 我們需要在編碼速度、網絡帶寬、視頻質量等方面進行權衡,然後選擇更適合場景的碼控調整方案。 同時,目前流行的ROI編碼和編碼場景的自適應學習都與這部分內容相關。 本文介紹常見視頻編碼器的碼率控制方案。 具體的編碼器在實現和使用上可能有所不同,調用API和閱讀源碼時需要進一步分析和理解。
背景知識:
在視頻編碼過程中,有一個重要的步驟:量化,這是一個有損壓縮過程。 量化基本上決定了視頻的碼率,視頻的碼率在一定程度上決定了視頻的質量。 量化值QP越大,量化的粒度越高,壓縮率越大,碼率越小,視頻質量越低。 顯得馬賽克較大,畫面不細膩,畫面模糊。 反之,壓縮率低,碼率大,質量高,畫面細膩,細節豐富。
因此,選擇適合場景的視頻編碼控制解決方案非常重要。 調整視頻輸出碼率實際上是視頻編碼速度、網絡帶寬和視頻質量之間的平衡。 有時網絡帶寬非常有限,需要優先採用碼率優先的碼控方案。 有些對視頻質量要求很高。 如果想要高清視頻,一定要選擇質量優先的機型。
總體而言,視頻編碼碼率控制方案的選擇可以通過權衡以下五個因素得出:
1、視覺質量的穩定性有利於主觀視覺質量,如清晰度、流暢度、細節等,這與人眼的視覺原理有關。 選擇人眼主動質量感知最高的模型;
2、實時輸出碼率相當於每幀的輸出位數。 必須考慮網絡帶寬因素。 隨著移動互聯網的發展,還必須考慮wifi和無線網絡的影響;
3、輸出視頻文件大小可控,有利於傳輸和存儲,具體取決於系統空間大小;
4. 編碼速度。 不同的編碼控制模型也會影響編碼速度。 對於低時延、實時場景,需要考慮不同的編碼控制方案,其計算複雜度不同,由此產生的編碼時延也會產生影響;
5、對於移動設備來說,對於功耗要求需要不同的編碼方式,因為不同的機型會影響編碼和解碼的複雜度,並且在移動設備上編碼和播放所需的功耗也不同;
比特率介紹:
下面介紹不同的碼率控制模型及適用場景:
CQP:固定QP,最簡單的碼率控制方法。 每幀圖像都根據特定的 QP 進行編碼。 每幀中編碼的數據量未知。 它既不是速度第一的模型,也不是質量第一的模型。 但這是實現起來最簡單的模型;
適用場景:一般不推薦這種方法,因為這種方法沒有考慮編碼內容的複雜度,並且以相同的壓縮比處理每一幀。 視頻質量和比特率不固定。 個人感覺只有很簡單的場景,比如運動量較小的靜態場景,可以嘗試一下。 當遇到復雜場景時,碼率波動較大。 或者可以用於算法研究或驗證。
功能
·瞬時碼率會隨著場景的複雜程度而波動;
·編碼速度快,調節最簡單,每幀QP值相同;
· x264 和 x265 支持 CQP 模式,但 libvpx 不支持;
· H.264中的QP範圍是[0, 51]。 QP值越大,量化步長越大,編碼視頻的質量越低。 QP為0表示無損編碼;
CRF:(Constant Rate Factor)恆定速率因子。 以一定的“視覺質量”作為輸出目標。 這一目標是通過降低消耗比特率但肉眼難以察覺的幀(高速運動或豐富紋理)的質量並提高這些靜態幀的比特率來實現的。
特點:幀間QP變化,幀內宏塊QP變化,輸出碼率未知,每幀輸出的視覺質量基本恆定。 這種方法相當於固定質量模式+限制峰值碼率的方法。
適用場景:適用於對視頻質量有一定要求的場合。 CRF值可以簡單理解為視頻質量期望的固定輸出值。 希望無論是在復雜的運動場景還是簡單的靜態情況下都有一個穩定的值。 主觀視頻質量可以選擇該模式,該模式為視頻質量優先模型。 視頻質量可以簡單理解為視頻的清晰度、像素的細膩度和視頻的流暢度。
功能
·與恆定QP類似,但追求主觀感知質量恆定,瞬時碼率也會隨著場景的複雜程度而波動,視頻幀之間或內部宏塊之間的QP值不同;
·對於快速移動或細節豐富的場景,量化失真會適當增大(因為人眼不敏感),而對於靜態或平坦區域,量化失真會減小;
·CRF是x264和x265的默認碼率控制方式,也可用於libvpx;
·CRF值越大,視頻壓縮率越高,但視頻質量越低。 各個編解碼器的CRF取值範圍一般為[0-51],但一般默認值對於x23是264,對於x28庫是265;
·如果您不確定要使用什麼 CRF,請從默認值開始,然後根據您對輸出的主觀印象進行更改。 如果質量不夠好,CRF 就會較低。 如果文件太大,請選擇較高的 CRF。 改變±6將導致碼率大小約一半/兩倍的變化,±1將導致碼率約10%的變化。
CBR:(Constant Bit Rate)恆定碼率,在一定時間範圍內碼率保持基本恆定,屬於碼率優先模型。
適用場景:一般不建議使用該方法。 雖然輸出碼率始終處於穩定值,但質量不穩定,並且由於該模型沒有考慮視頻內容的複雜性,無法充分利用網絡帶寬。 視頻幀的內容被統一處理。 然而,有些編碼軟件只支持固定質量或固定比特率,有時不得不使用。 使用時,在允許的帶寬範圍內盡量設置大的帶寬,防止複雜運動場景下視頻質量低下。 如果設置不合理,在運動場景中就會出現不清楚的情況。
功能
·碼率穩定,但質量不穩定,帶寬有效利用率不高。 尤其是該值設置不合理時,在復雜的運動場景中畫面非常模糊,極大影響觀看體驗;
·但輸出視頻碼率基本穩定,方便計算視頻體積大小;
VBR:(Variable Bit Rate)可變比特率,簡單場景分配比較大的QP,壓縮率低,畫質高。 複雜的場景被分配較小的 QP。 獲得了基本穩定的視覺質量,因為人眼天生對複雜場景不敏感,缺點是輸出碼率不可控。
有兩種控制模式:質量優先模式和2PASS二次編碼模式。
質量優先模式:
無論輸出視頻文件大小如何,都會根據視頻內容的複雜程度分配碼率,使視頻播放質量達到最佳。
輔助編碼方式2PASS:
第一次編碼檢測視頻內容的簡單部分和復雜部分,同時確定簡單部分和復雜部分的比例。 第二遍編碼將保持視頻的平均比特率不變,為複雜區域分配更多比特,為簡單區域分配更少比特。 雖然這種編碼很好,但是速度跟不上。
適用場景:VBR適用於對帶寬和編碼速度沒有太大限制,但對質量要求較高的場景。 尤其是在復雜的運動場景中,能夠保持相對較高的清晰度和穩定的輸出質量,適合對延遲不敏感的點播、錄音或存儲系統。
功能
·碼率不穩定,質量基本穩定且很高;
·編碼速度普遍較慢,可優先使用點播、下載和存儲系統,不適合低延遲、直播系統;
·該模型根本不考慮輸出視頻帶寬。 為了質量,需要多少碼率就佔用多少,不考慮編碼速度;
ABR:(Average Bit Rate)平均目標碼率恆定,簡單場景分配低比特,複雜場景分配足夠的比特,這樣可以在不同的場景中合理分配有限的比特,與VBR類似。 同時在一定時間內平均碼率接近設定的目標碼率,從而可以控制輸出文件的大小,這與CBR類似。 可以認為是CBR和VBR之間的折中方案,是大多數人的選擇。 特別是在對質量和視頻帶寬都有要求的情況下,可以優先選擇該模式。 一般速度是VBR的XNUMX到XNUMX倍,但相同體積的視頻文件質量卻比CBR好很多。
適用場景:ABR較多用於直播、低延時系統。 由於它僅編碼一次,因此速度很快,同時考慮到視頻質量和帶寬。 當對轉碼速度有要求時也可以選擇該模式。 B站的視頻大部分選擇了這種模式。
功能
·視頻整體質量可控,同時兼顧視頻碼率和速度。 是一種折中方案,實際用得較多;
·使用過程中一般需要調用者設置最小碼率、最大碼率和平均碼率。 這些值要設置得盡可能合理;
至
上面介紹了幾種碼率控制方案。 不同的編碼器有不同的名稱和標題,細節也可能不同。 但基本上是通過影響QP的大小,進而影響量化過程的粒度來實現的。 具體使用需要進一步參考具體的編碼器實現。
一般情況下優先選擇ABR,在速度、碼率、質量方面都能達到滿意的平衡。 其他VBR、CBR、CRF都有各自的場景,使用時需要有條件地使用。
結論是:
今天介紹的視頻編碼控制方案是很多上層技術的基礎。 其中碼率自適應技術、根據場景動態調整編碼參數、RIO感興趣區域編碼等都是基於編碼過程中編碼控制方案的選擇和細化,進而影響量化程度和編碼的量化粒度。 最終在視頻質量、速度和帶寬之間取得了令人滿意的平衡。 同時,這些模型在x264或x265等不同的編碼庫中是互斥的。 有時會因為參數設置不當導致碼率失效,設置的參數不起作用。 這也是需要特別注意的。
其次,熟悉了這段內容後,對於排查一些線上問題也很有用。 明確調整幀率、分辨率等參數的副作用。 也歡迎您在後台留言分享您實際項目的相關內容
|
輸入電子郵件以獲取驚喜
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷蘭語
sq.fmuser.org ->阿爾巴尼亞人
ar.fmuser.org ->阿拉伯語
hy.fmuser.org - >亞美尼亞
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄羅斯語
bg.fmuser.org - >保加利亞
ca.fmuser.org ->加泰羅尼亞語
zh-CN.fmuser.org ->中文(簡體)
zh-TW.fmuser.org - >中國(繁體)
hr.fmuser.org ->克羅地亞語
cs.fmuser.org ->捷克
da.fmuser.org ->丹麥語
nl.fmuser.org - >荷蘭
et.fmuser.org ->愛沙尼亞語
tl.fmuser.org ->菲律賓
fi.fmuser.org ->芬蘭語
fr.fmuser.org - >法國
gl.fmuser.org ->加利西亞語
ka.fmuser.org ->喬治亞
de.fmuser.org ->德語
el.fmuser.org - >希臘
ht.fmuser.org ->海地克里奧爾語
iw.fmuser.org ->希伯來語
hi.fmuser.org ->印地語
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰島語
id.fmuser.org ->印尼語
ga.fmuser.org ->愛爾蘭
it.fmuser.org - >意大利
ja.fmuser.org ->日語
ko.fmuser.org ->韓文
lv.fmuser.org ->拉脫維亞
lt.fmuser.org - >立陶宛
mk.fmuser.org ->馬其頓語
ms.fmuser.org ->馬來語
mt.fmuser.org ->馬耳他語
no.fmuser.org - >挪威
fa.fmuser.org ->波斯語
pl.fmuser.org ->波蘭語
pt.fmuser.org ->葡萄牙語
ro.fmuser.org - >羅馬尼亞
ru.fmuser.org ->俄語
sr.fmuser.org ->塞爾維亞語
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亞
es.fmuser.org ->西班牙語
sw.fmuser.org ->斯瓦希里語
sv.fmuser.org ->瑞典語
th.fmuser.org - >泰國
tr.fmuser.org ->土耳其語
uk.fmuser.org ->烏克蘭語
ur.fmuser.org ->烏爾都語
vi.fmuser.org - >越南
cy.fmuser.org ->威爾士語
yi.fmuser.org - >意第緒語
FMUSER更輕鬆地傳輸視頻和音頻!
聯絡我們
分類
電子通訊