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