本文介紹了GIF在現(xiàn)代應(yīng)用中的劣勢(shì)&優(yōu)勢(shì),以及Vimeo對(duì)GIF的運(yùn)用方法。
現(xiàn)在是2021年,視頻編碼完全被AV1等現(xiàn)代編解碼器所主導(dǎo)。好吧,也不完全是。一個(gè)小小的,不屈不撓的格式仍然能夠抵抗入侵者。對(duì)于那些想要提高視頻質(zhì)量的工程師來(lái)說(shuō),生活并不容易……
Sintel by the Blender Institute/CC BY. 在Vimeo上制作的GIF
即使在今天,創(chuàng)建于1987年的Graphics Interchange Format(圖形交換格式),或稱 GIF (發(fā)音為“ JIF”) ,仍然是傳輸短動(dòng)畫或視頻的最便攜、最廣泛支持的方式。盡管它每幀最多只支持256種顏色,壓縮性能很差,而且不能包含音軌,但該格式的簡(jiǎn)單使其在電子郵件、論壇、社交媒體等應(yīng)用中,以及在不支持現(xiàn)代替代品的傳統(tǒng)系統(tǒng)中仍占據(jù)主導(dǎo)地位。由于該格式的限制,許多聲稱支持 GIF的平臺(tái)實(shí)際上使用的是 h.264,這種格式被配置為在沒(méi)有音頻的情況下循環(huán)播放,以模擬實(shí)際的GIF。瀏覽器和移動(dòng)設(shè)備可以輕松回放這些文件,它們?cè)谙嗤蚋玫馁|(zhì)量下提供更低的文件大小。然而GIF在支持方面仍然有優(yōu)勢(shì)。
在Vimeo,我們最近發(fā)布了一個(gè)功能,允許會(huì)員從他們的視頻中創(chuàng)建GIF,嵌入到電子郵件中,并在任何平臺(tái)上分享。與任何視頻編碼系統(tǒng)一樣,我們需要考慮如何在保持合理的文件大小和編碼時(shí)間的同時(shí)盡可能保持高質(zhì)量。但由于壓縮格式的能力有限,我們必須解決一些特有的相關(guān)問(wèn)題,涉及圖像量化、時(shí)間優(yōu)化、速率控制和性能。
后臺(tái)是一個(gè)由libimagequant和FFmpeg組成的系統(tǒng)。我們使用libimagequant對(duì)圖像進(jìn)行量化——減少每幀中使用的顏色數(shù)量,以滿足格式的限制——同時(shí)最小化這一過(guò)程對(duì)質(zhì)量的影響。這個(gè)優(yōu)化步驟是復(fù)雜的,也是編碼器中最耗時(shí)的部分。libimagequant還應(yīng)用了抖動(dòng),它看起來(lái)類似于膠片的顆粒,并在生成的GIF中隱藏了量化可能產(chǎn)生的任何色帶。然后,F(xiàn)Fmpeg獲取量化和抖動(dòng)圖像及其調(diào)色板,并將它們編碼為實(shí)際的GIF格式。
為了提高量化質(zhì)量和壓縮性能,我們采用了預(yù)處理步驟來(lái)減少時(shí)間冗余。GIF可以有透明像素,在動(dòng)畫GIF中,可以利用這一點(diǎn)在不同幀之間只改變部分像素,保持其他像素的靜態(tài)。如果視頻中的背景在幀之間沒(méi)有變化,我們可以通過(guò)對(duì)比連續(xù)幀的每個(gè)像素來(lái)避免對(duì)其顏色進(jìn)行多次編碼,當(dāng)它們非常相似時(shí),在后一幀中使其透明。我們使用一個(gè)簡(jiǎn)單的感知顏色距離測(cè)量來(lái)確定要成為透明的像素,這樣就不會(huì)影響人眼看到的質(zhì)量。
這套系統(tǒng)可以讓我們用一些控制幀速率和大小的質(zhì)量參數(shù)、量化質(zhì)量和像素透明度的像素距離閾值來(lái)對(duì)GIF文件進(jìn)行編碼,但是還有一個(gè)我們需要解決的問(wèn)題:速率控制。由于GIF是一種舊的格式,并沒(méi)有針對(duì)視頻編碼進(jìn)行優(yōu)化,所以我們不能用同樣的設(shè)置對(duì)每一個(gè)視頻進(jìn)行不加區(qū)分的編碼,并期望合理的大小用于有硬性大小限制的電子郵件和平臺(tái)?,F(xiàn)代視頻編碼器通常包括內(nèi)部速率控制機(jī)制,以調(diào)整質(zhì)量以達(dá)到目標(biāo)大小,但對(duì)于GIF,管理文件大小的方法有限:減少每幀顏色的數(shù)量,減少幀數(shù),減少幀的大小。為了保持文件大小合理而不犧牲質(zhì)量(除非必要),我們運(yùn)行多個(gè)編碼,根據(jù)需要逐步降低默認(rèn)參數(shù)的質(zhì)量,直到我們達(dá)到一個(gè)適當(dāng)水平,盡可能少地?fù)p害質(zhì)量。
對(duì)同一視頻進(jìn)行多次編碼確實(shí)會(huì)導(dǎo)致整體響應(yīng)時(shí)間更長(zhǎng),因此我們?cè)诙鄠€(gè)級(jí)別上對(duì)它們進(jìn)行并行處理,以保持合理的等待時(shí)間。目前,我們?cè)谑占Y(jié)果并挑選出最終結(jié)果之前,以固定規(guī)模的批次運(yùn)行編碼,并且每個(gè)編碼同時(shí)在多個(gè)幀上運(yùn)行主要瓶頸,顏色量化。下面的活動(dòng)示意圖描述了系統(tǒng)的總體結(jié)構(gòu)和程序流程。
GIF 創(chuàng)建系統(tǒng)的活動(dòng)示意圖
由于年代久遠(yuǎn)和格式的低復(fù)雜性,GIF永遠(yuǎn)不會(huì)像它們的源視頻那樣好看,但我們?nèi)匀挥幸恍┽槍?duì)質(zhì)量和性能的改進(jìn)工作。通過(guò)電子郵件或社交媒體分享GIF片段是在朋友或關(guān)注者中創(chuàng)建視頻興趣的好方法。
現(xiàn)在我們所有的成員都可以使用這個(gè)功能,所以如果你想通過(guò)電子郵件或社交媒體在Vimeo上分享視頻,在你的視頻設(shè)置中找到GIF選項(xiàng),并試一試!
編輯:lyn
-
視頻編碼
+關(guān)注
關(guān)注
2文章
113瀏覽量
21049 -
Vimeo
+關(guān)注
關(guān)注
0文章
4瀏覽量
8000 -
GIF
+關(guān)注
關(guān)注
0文章
24瀏覽量
6610
原文標(biāo)題:Vimeo針對(duì)GIF性能和質(zhì)量的改進(jìn)
文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論