abox.tools

語言: 繁體中文

怎麼把影片做成 GIF

GIF 是 1987 年的格式,存的是一張張完整畫面,不是運動,所以影片做出來的 GIF 永遠很大。這一頁講檔案太大時該動三個設定裡的哪一個,以及每一個能換回多少。

開啟影片轉 GIF 挑好段落、尺寸和幀率。

以 Markdown 檢視

先說結論

開啟影片轉 GIF,把片子丟進去,標出你要的那幾秒,寬度保持 480,幀率保持每秒 12 幀。多數 GIF 要的就是這一檔。出來的檔案要是太大,別的先別動,先把寬度降下來,那是唯一一個能省兩遍的設定。

這一頁剩下的部分解釋為什麼,因為「我的 GIF 有 14 MB」才是所有人真正遇到的問題,而該擰哪個旋鈕,並不顯然。

影片做成 GIF 為什麼這麼大

影片編碼存的是運動。它每隔一兩秒寫一張完整畫面,中間的每一幀則只寫這張畫面是怎麼動的:這塊畫素往左挪了四格、這片區域暗了一點。一段五秒的片子可以只有幾百 KB,因為裡面大半是關於一張你手上已經有的畫面的指令。

GIF 一樣都沒有。它 1989 年就定稿了,那時候這些東西一個都還不存在。每一幀都是一張畫面,各自單獨壓縮,用的還是一套為電子表格截圖設計的方案。這個格式裡沒有任何運動估計,也沒法給它補上。

所以該有的心理預期是影片體積的十倍,哪個轉換器都勸不動這一點。好的轉換器能做的,是不在這十倍之上再浪費什麼,並且把真正決定大小的那三個設定交到你手上。

片段卡片:帶時間碼的一幀畫面,以及一條進度條顯示在二十秒的片子裡標出了四秒。
先定片段,因為下面每一項設定都要乘上你留下的秒數。

三個設定,各自的代價

一張 GIF 的大小歸根到底就是它一共裝了多少畫素,也就是時長乘幀率乘單幀面積。

舉個實際的例子。一段六秒的手機片子,按它自己的 ⁦1080×1920⁩、30 fps 來,就是 180 幀、每幀兩百萬畫素,合計約三億五千萬個畫素,那不叫 GIF,那叫人質事件。同樣這六秒,寬 480、12 fps,就是 72 幀、每幀四十萬畫素,三千萬,大約十二分之一,而它看上去正是人們說「GIF」時想的那個東西。

匯出卡片:寬度 480、幀率、抖動選項,以及估算幀數和大小的摘要。
三項設定,加上一個隨它們一起變的估算值。先花哪一項,正是這一節要談的。

幀率該選幾

這裡預設十二,而它出乎意料地經常就是正確答案。手繪動畫用了一個世紀的就是這個幀率:快到眼睛讀得出連貫的運動,慢到你不必為誰也看不見的那些幀掏錢。

有一道硬頂你不妨知道:GIF 用百分之一秒為單位存每一幀停留多久,而所有瀏覽器都把小於兩個單位的延遲當成十來處理。所以每秒 50 幀才是真正的上限,一個要求 100 fps 的檔案,會一聲不吭地按 10 fps 播。給你 60 fps 選項的轉換器,要麼無視了這條,要麼正準備給你一個意外。

256 種顏色,以及抖動是做什麼的

這個格式的年紀還體現在另一半上:一張 GIF 帶一張最多 256 色的顏色表,每個畫素都是指向表裡某一項的編號。而一幀影片畫面能有一千六百萬種顏色。絕大部分都得扔掉,而怎麼扔,基本決定了這張 GIF 長什麼樣。

好的轉換器會數一遍你這段片子裡的顏色,挑 256 個合適的,而不是用一套固定顏色。拍森林的就給 256 種綠,拍落日的就給 256 種橙。這裡的工具就是這麼做的,而且是把這一段裡每一幀都數過,不只是第一幀,所以一個只在結尾出現的顏色也佔得上位置。

抖動處理的是「你要的那個顏色還是沒有」的情況。它不把整片區域四捨五入到最接近的可用顏色,那樣一片平滑的天空會變成四道平色、中間還有看得見的臺階;它把最接近的兩種顏色按細密的圖案交替排布,在正常觀看距離下,你的眼睛會把它們混成那個並不存在的顏色。

要是你會拿幾個轉換器作比較,有個細節值得知道。最容易想到的抖動做法是誤差擴散,多數影像編輯軟體用的就是它,它讓每個畫素的結果取決於周圍的畫素。放在動畫裡,就意味著一塊根本沒在動的背景,在每一幀裡抖出來的花樣都不一樣,於是它明顯地在爬,而且每一幀都得完整存下來,因為技術上每個畫素都變了。另一種叫有序抖動,只取決於畫素在哪個位置,所以靜止的背景穩穩當當。這個工具用的是後者,所以它的檔案既更安靜,也更小。

什麼時候乾脆別做 GIF

這一問值得提,因為老實的答案常常是「別做」。一段無聲循環的 MP4 或者 WebM,體積大約是同樣動畫做成 GIF 的十分之一,播放效果一樣,而且你上傳之後,每個社交平臺反正都會把你的 GIF 轉成它。

只有目的地確實需要 GIF 時才留著它:

聲音要緊的話,這個問題自己就回答了:GIF 從來沒有音訊,將來也不會有。那就別轉,去剪影片,影片剪輯能從裡面取出一段,而且一幀都不重編。

怎麼壓到人家的上限之下

多數人之所以要調 GIF,就是因為收它的那一端有個上限。按咬人的狠勁大致排一排:

超了之後該試的順序是:先縮短段落,再把寬度砍一半,然後降幀率,最後關掉抖動。前兩條加起來,比後兩條加起來管用得多。

這些事一樣都不用上傳

把影片轉成 GIF,無非是解碼、縮放、數顏色、壓縮這四件事,而瀏覽器自己做這四件已經做了很多年。頂上鍊接的那個工具全都在你的機器上做:檔案從你的硬碟上讀,畫面幀由你的瀏覽器解碼,GIF 在記憶體裡拼好,交給你的下載。

這件事在這裡比在別處更值得在意。人們拿來做 GIF 的片子都很私人:家庭錄影裡的一個瞬間、工作上某個東西的螢幕錄影、一通通話裡的幾秒鐘。一個要求把這些傳上去的轉換器,是在向你要一份副本,而如今,已經沒有哪條技術理由值得你答應了。