跳至主要内容

40 篇文章 含有標籤「軟體」

好用的軟體和工具,以及軟體的怪現象

檢視所有標籤

兩個超棒工具:Headscale 和 Strata

· 閱讀時間約 3 分鐘 ┊ 純文字版

哈囉 Wiwi.Blog 的宅男宅女讀者們,跟你們推薦兩個超棒的自由軟體工具!

(如果你不是宅男宅女,還是可以看一下啦,然後考慮成為一個?)

Headscale:全世界都是你的家​

首先是 Headscale。簡單來說,它可以讓你的所有裝置,不論身在何處,都能魔法般地「好像在同一個區域網路裡」。

這意味著:就算你在捷運上用著手機 5G 網路,或在飯店忍受著爛到爆的 Wi-Fi,你依然可以像坐在自家客廳沙發一樣,輕鬆複製家裡電腦的檔案、串流存在家裡的影片和音樂、透過 ssh 遠端操控,甚至呼喚家中的 AI 模型!

還在每個月付錢用雲端硬碟的人,我真心推薦:從訂閱費裡撥出每月五美金,租一台 VPS 然後跑 Headscale 就好。這樣一來,你的雲端空間基本上就等於無限大啦!想要更多空間時,只要多買一顆硬碟塞進家裡電腦就好了。(當然,家裡的電腦要開著啦,不過還是比用陌生人的電腦安心多了)

以前這種東西或許有點難設定,但現在只要向 AI 許願,它就能幫你全部安裝好,你只要直接爽爽用就行了!有興趣的人,自己去問問你愛用的 AI,評估看看你目前常用的服務,有哪些可以用 Headscale 來取代。

Strata:又強又快的本地 AI​

Strata 更是黑科技!

以前想在自家電腦上跑一個「夠聰明」的 AI 模型,得先準備超貴的 GPU 和數十 GB 的 VRAM。我有兩張 RTX 4000 Ada,總共 40 GB VRAM,對一般人來說已經算是超級奢華了;但即使是這樣,之前也只能勉強執行 Qwen 3.8 27B 而已。

但有了 Strata 之後,同一台電腦現在竟然跑得動將近五倍大(125B)的 Qwen3.8-Flash-Next 模型,而且速度還快了一倍!

把雜事丟給 AI 本來就很爽。而丟給一個住在自己家、不收訂閱費、完全聽我話的 AI,更是另一個層次的爽。

舉個例子。我只要跟它許願:「去把 BlogBlog 同樂會九月份主題文裡面的連結抓下來,照以前的格式更新到 /party 和 /random 頁面。」然後去泡杯咖啡、把咖啡喝完,網站就自動更新好了──這是我以前要手動花二、三十分鐘,經過很繁瑣的步驟才能做好的事耶!現在只要負責耍廢,事情就搞定了!

還沒體驗過 AI Agent 和本地 AI 模型的人,真的該試試看了。現在的好用度跟半年前完全是兩個世界,用過就回不去啦!

專有軟體必變爛:Reason 篇

· 閱讀時間約 3 分鐘 ┊ 純文字版

我在昨天文章的註腳裡面提到了 Reason 13 的智障設計。但單靠文字,實在不足以傳達我的怒氣,所以讓我今天補個動畫版。

用過編曲軟體的人,應該都知道 Piano Roll 編輯視窗。音符下方的長條,代表著每一個音的力度(velocity),只要用畫筆工具畫過去,就可以直接編輯力度。

從以下畫面可以看到,如果力度顯示區域不夠高的話,就很難做精細的調整。在 Reason 12 裡面,你只要用滑鼠拖曳分界處,就可以很輕易地把力度區域調高──幾乎所有編曲軟體都可以讓你這樣做,這是基本到不行的基本功能:

(Reason 12:用滑鼠一拉,力度區域就變高了,調完再拉回去就好。)
(在 iOS 裡,以下動畫可能無法自動播放,長按它點「播放」就好囉!)

但是,升級到 Reason 13 之後,他們直接把這個區域的高度鎖住了,不給你調!你用滑鼠怎麼拼命拉它就是不動!你只好在狹小的縫隙中與音符力度搏鬥。

(Reason 13:教你如何在夾縫中求生存。)

更無言的是,你還可以看到 Reason 13 的 Piano Roll 左側還用了一大塊空間,擺著一堆目前沒用到的功能,然後這塊也不能關掉!就一直擋在那邊!(Reason 12 的那塊區域是用來切換軌道,很常用)

整個介面亂七八糟,難用到不行!身為一個長期忠實使用者,我兩次寫信建議他們改回來,他們就是死不聽!不懂耶,我們只是想要好好調音符力度,不行嗎?實在是傷透我的心,我以前真的很愛用 Reason 的!

我當時花了一百多美金升級到 Reason 13,結果大概用了兩次就受不了,只好退回到第 12 版;然後我見到每個用 Reason 的人都強力警告他們千萬不要升到 13 版。

老實說,我現在對 Reason 已經沒什麼好感了。如果你是剛踏入編曲世界的新人,我建議你直接從自由且跨平台(Linux / macOS / Windows)的 Ardour 開始學。或者,如果你是蘋果的忠實信徒、不介意被綁在蘋果生態系被搶錢的話,Logic Pro 其實也是不錯用的啦。1

「專有軟體必變爛理論」再一次獲得驗證。專有軟體可以隨時把你最需要的功能拿走,而你連抗議的權利都沒有;一開始就習慣用自由軟體,就不用一次又一次地心碎了。

(同場加映:Ardour 可以直接在主時間軸上編輯 MIDI 力度──當然也可以調高度。)

Footnotes​

  1. 又或者 Reaper,雖然是專有軟體,但跨平台且輕量、而且很便宜,目前也還算可以推薦。 ↩

擋掉它吧

· 閱讀時間約 2 分鐘 ┊ 純文字版

不曉得你知不知道,Brave1 瀏覽器內建了一個叫做 Block Elements(封鎖元素╱阻擋元件)的功能。

用法很簡單:在任何網站上,只要看到讓你覺得不爽的東西,就對它點右鍵然後 block elements,它就永遠消失了!就像把討厭的人趕出房間一樣爽快。例如,你可以:

  • 在 YouTube 上,把 Shorts、推薦影片、側邊欄全部 block 掉,連登入按鈕和刺眼的紅色 Logo 都 block 掉!
  • 在 Google 上,把巨大的 Logo 和整片 AI 模式垃圾都 block 掉!
  • Reddit 一直用東西擋住文章逼我登入,block 掉!
  • Substack 一直煩我要我訂閱電子報,block 掉!
  • 各種網站的「你同意吃 cookie 嗎?」橫幅,block 掉!

如果你用 Firefox 系列的瀏覽器,裝上 uBlock Origin2 外掛程式也能享有同樣的快感。

全部 block block block!奪回控制權的感覺好紓壓喔!

這樣才對嘛!這是我的電腦、我的螢幕耶,上面要顯示什麼東西當然是我說了算!你們這些網站別塞一堆垃圾來擾亂我!

(這就是 2026 年的現代網站)

我真心希望所有人都知道這個功能,別每天被這些網站霸凌還一直笑著說「沒關係」,這樣太可憐了。

唯一的副作用可能是:一旦習慣了這樣清新的網路環境,某天借用別人的電腦,看到「正常版」的網站,大概會嚇到直接往後退三步。

延伸閱讀

https://how-i-experience-web-today.com/

一個完美呈現現代網頁上各種惱人體驗的互動網站。

Footnotes​

  1. https://brave.com/ ↩

  2. https://addons.mozilla.org/zh-TW/firefox/addon/ublock-origin/ ↩

把影音檔案壓小小

· 閱讀時間約 4 分鐘 ┊ 純文字版

因為「荒島筆電」實驗的關係,我最近在測試,利用新一代的編碼器 Opus 和 AV1,到底能把影音檔案壓縮到多小,還能保持我能接受的音質和畫質。

什麼是「荒島筆電」?

荒島筆電是一個思想實驗:如果要帶一台筆電去沒有網路的荒島住 50 年,只有 200 GB 的可用空間,裡面該裝什麼?在這個前提下,來挑選該打包的音樂、書、軟體、遊戲、資料,藉由這個過程想想自己真正需要什麼。

Opus:同樣的享受,一半的檔案大小​

通常 MP3 檔案我覺得至少要 128-160 kbps 聽起來才舒服。但最近認真試用新一代的 Opus 編碼器之後,發現 Opus 只要 64-96 kbps 音質就很可以了耶!相同的享受,檔案大小直接砍半。

如果是純講話的 podcast,用 Opus 甚至降到 32 kbps 我聽起來也都毫無怨言。

不過我暫時還不會把網站上的音檔全部換成 Opus,因為 macOS 和 iOS 對 Opus 的支援度很差,一直到最近兩年的版本才勉強可以播。不過對於離線運作的 Linux / FreeBSD 荒島筆電來說,這完全不是問題。

TSAC:8 kbps 的黑魔法​

說到極限壓縮,就不能不提到 Fabrice Bellard 這位神人。他是 FFmpeg 和 QEMU 的作者──換句話說,現代社會有很大一部分是靠這個人寫的東西在運轉的──他開發了一個叫做 TSAC 的聲音編碼器。

TSAC 可以把聲音壓縮到超小的 8 kbps(!),還能維持很不錯的音質。沒錯,真的沒有打錯字,8 kbps,幾乎是一般 MP3 檔案的二十分之一大小。可惜 TSAC 是用神經網路做的,要跑得動基本上需要一張 Nvidia 的 GPU 才行,實用度不太高,但技術還是超厲害!

試聽​

以下用我的作品〈你還在這裡做什麼〉當作測試曲目,來比較一下各種格式的音質吧:

(如果你是用比較舊的 iOS 裝置,以下的 Opus 格式檔案也許會無法播放。那是蘋果在藉機提醒你該換新機囉!)

  • MP3 160 kbps,檔案大小 2.85 MB:
  • Opus 96 kbps,檔案大小 1.77 MB:
  • Opus 64 kbps,檔案大小 1.18 MB:
  • Opus 32 kbps,檔案大小 0.61 MB:
  • TSAC 8 kbps1,檔案大小 0.14 MB:

AV1 讓我可以帶影片去荒島了​

我原本覺得荒島筆電裡面不該放影片,因為太占空間了;但玩過新一代的 AV1 編碼器之後,我覺得好像行得通喔!

如果影片用 AV1 編碼,聲音配上剛才說的 Opus,解析度降到 240p,全部裝進 WebM 檔案裡面,這樣可以把影片檔壓到大概 350 kbps,而且畫質還在「可以接受」的範圍內──當然,我的「畫質可以接受」可能跟你的標準不一樣;畢竟我可是活過撥接時代,曾經真心覺得 VCD2 畫質很棒的老人。

總之,這樣壓縮的話,一分鐘的影片只要 2.6 MB,那麼 100 GB 的空間可以塞進 641 個小時的影片!如果儲存空間限制放寬一點的話,我們真的也可以帶不少電影去荒島了!

一向死守著 MP3(聲音)和 H.264(影片)的我,好像該是時候跳槽到新一代的 Opus 和 AV1 了。

Footnotes​

  1. 當然,網頁上是無法插入 TSAC 檔案的。這邊的示範是將 TSAC 解碼後再編碼成 160 kbps 的 MP3 檔案。 ↩

  2. Video Compact Disc,是 1993 年的影音光碟標準,影片畫質是 352 x 240 像素,每秒 24 或 30 格。 ↩

幹嘛更新

· 閱讀時間約 3 分鐘 ┊ 純文字版

如果手上的軟體,已經能讓你順利完成工作,而新版並沒有解決任何實際的問題,那就不應該更新。

「因為新版推出了啊」並不是更新的好理由。

更新並不是「升級」,你應該把它視為一種「風險」。更新下去可能會帶來一堆新 bug、讓原本好好的外掛程式突然不能用,甚至跳出一大堆原本沒有的廣告。

現代的軟體更新,根本就像社群媒體的無限捲動一樣,沒完沒了──今天系統更新、明天 App 更新、後天瀏覽器更新、大後天連你的滑鼠都說:「欸,我也想要韌體更新!」──科技公司使盡各種手段,就是想要強推更新:

  • 🍎 軟體綁定作業系統版本:Logic Pro 和 Final Cut Pro 就是典型案例,不更新作業系統就不讓你用新版軟體。如果我的音樂工作用電腦是純粹自己用的話,我大概可以快樂地待在 2014 年的 OS X 10.10 Yosemite 直到永遠。但因為我要教學生,學生們用的都是新版,為了熟悉新版,我只好被迫更新作業系統,進而被強迫換新機。1
  • 🦠 利用檔案格式不相容來強推:學生換成新版後,存了一個檔給你,你用舊版軟體打不開,於是你也被迫更新。新版文件就像病毒一樣,從一個人傳染給下一個。
  • 🔐 被線上檢查機制綁架:以前買斷制的軟體是「不更新也能用」2,現在許多 App 是「不更新就不讓你登入」。
  • ⛓️‍💥 被「其他人的更動」連累:例如 YouTube 只要一改版,yt-dlp 就壞了,需要更新。或者你只是想跑個兩年前寫的 Node.js 小專案,結果一 npm install 下去,畫面就出現數十行 deprecated 警告;你什麼都沒做,但因為程式依賴別人寫的套件,別人改來改去之後,你的程式就壞了。
  • 🐛 「安全漏洞」必須修補:這個的確是正當理由。但只要永遠不連上網路,就不會被攻擊啦!

「隔離」才是真正的穩定​

常聽說大型專業錄音室裡,總會有那台「重要的工作機器」。它永遠不更新、不連上網路,作業系統和軟體還停在某個上古時代版本,但二十年來每天開機就能工作、從來不出事。

想要有穩定的數位工作環境,就要盡最大可能地使用離線、自由、低科技的軟體。更重要的是,使用者也要建立「不為所動」的心態:練習錯過、擁抱無聊、享受 JOMO、告訴自己「不知道也沒關係」。

把工作需要的東西一次裝好,然後假裝接下來五十年都要在荒島度過。你會發現,一直不更新也不會怎麼樣──文章照樣寫、音樂照樣做、影片照樣剪。外頭發生什麼事情,都無法影響你寧靜的工作孤島。

The best upgrade is the realization that we have enough.

(最好的升級,就是發現自己有的已經夠用了。)

──Seth Godin

Footnotes​

  1. 但我還是盡量能拖則拖,現在使用的 macOS 還是好幾年前的版本。 ↩

  2. 現在也不一定了,請見這篇。 ↩

幫大家畫地圖

· 閱讀時間約 4 分鐘 ┊ 純文字版

我曾經在這個 blog 上呼籲過大家不要再貢獻資料給 Google 地圖,主要基於兩個原因:

  1. 你會洩漏自己的行蹤──不只給 Google,也給不特定人士
  2. 你會強化 Google 地圖的壟斷地位;然後它遲早會大便化,導致所有依賴它的商家和使用者被剝削

那麼,你「應該」要貢獻資料給誰呢?當然是「開放街圖(OpenStreetMap)」囉!

如果你不知道 OpenStreetMap(以下簡稱 OSM):它就像是地圖界的維基百科,是一個大家都可以共同編輯的地圖資料庫。它採用開放資料庫授權(ODbL),這表示這個資料庫永遠屬於全人類,任何人都能自由使用、修改、散布。你貢獻的每一筆資料,都不會被某間公司鎖進圍牆花園裡。

而且,其實 OSM 也很好用呀!你現在就可以打開用用看:https://www.openstreetmap.org/

也許就即時商家資訊而言,它比 Google Maps 差一些些──不過這正是因為缺了你的貢獻呀!但想像今天如果 Google Maps 突然從地球上消失,我依然可以只用 OSM 繼續過著正常的生活,不會有什麼太大的怨言。我最喜歡的離線地圖程式 Organic Maps,裡面的資訊也是來自 OSM。

你想想,幫 Google Maps 寫評論、傳照片,就像是在幫 Google 打免費的工,然後它還會反過來把你的隱私吸乾、塞一堆廣告給你,最後還要你付錢把廣告拿掉,對你一點好處都沒有。反正都要當免費勞工了,何不選擇將心力貢獻給全人類呢?

以前對一般人來說,要參與編輯 OSM 好像還是有一些門檻,但我最近發現了一個叫做 StreetComplete 的 App,把編輯地圖變成了「實境探險遊戲」。你只要走在路上的時候打開它,回答一些簡單的問題就好,例如:你腳下的人行道路面是什麼材質?這家店的營業時間是?這個階梯旁邊有沒有無障礙斜坡?你回答完,App 就自動幫你把資訊上傳到 OSM 上了。

(StreetComplete 的畫面)

其實開著它走在路上、完成一個個地圖任務,有一種玩 Pokémon GO 的感覺耶(說得好像我真的玩過一樣)!是滿有成就感的。你看,今天我順手填上了這家星巴克的營業時間,下一個用 OSM 查這家店的人就可以直接查到資訊了,不覺得自己瞬間變成了一個有用的人嗎?

而且它有可能讓你重新認識自己住的地方──什麼,原來我家門口有個消防栓?原來巷口有這個地圖告示牌?原來公園的這個角落還有台飲水機?

StreetComplete 目前只有 Android 版本,但 iOS 上好像也有類似的東西如 Go Map!! 和 Every Door,不過我沒有實際用過就是了。

每天、每個人的一點點微小心力──一則評論、一張照片、一個評分──都會累積成為某個東西,差別只在於那個東西是誰的。如果心力放對了地方,就變成了造福全人類的維基百科、OpenStreetMap、Internet Archive;如果放錯了地方,就長成 Instagram、TikTok、Threads 這種反把自己關起來的演算法牢籠。

照這個邏輯來說,經營自己的獨立網站也算是「把心力放對地方」;因為你的獨立網站也是開放網路上、大家共同擁有資源的一部分唷!

總之,去試試看 StreetComplete 吧!

(貼心提醒:OSM 是自由的資料庫,所以編輯記錄也是完全公開的。所以請不要用真實姓名或日常使用的帳號名,當作你的 OSM 帳號名稱唷!)

低科技音樂製作

· 閱讀時間約 5 分鐘 ┊ 純文字版

昨天的文章中,聊到了低科技的音樂製作方式。今天我就要來跟你介紹一套超級輕量、超低依賴的編曲組合!

編曲軟體:MusE Sequencer​

MusE Sequencer 是一套 Linux 上的超輕量多軌編曲軟體,套件包下載只要 7 MB,安裝好之後佔 28 MB──你沒有看錯,是 MB,不是 GB。

MusE 的介面超級極簡,甚至有種 1990 年代編曲軟體的氣質,但依然有相當完整的多軌 MIDI 編曲功能。甚至我會說,它的有些 MIDI 功能比那些昂貴的商業軟體還要強;例如,它可以很方便地指定某個 MIDI 輸入的某個 Channel,直接接到另一個樂器的某個 Channel,而且內建許多硬體音源機的樂器定義檔。倒是現代「主流」的編曲軟體,往往預設使用者只會用軟體音源,導致外部 MIDI 功能都越來越退步了。

至於 Audio 功能就比較樸素了,不是它的強項、堪用而已囉(想要厲害的 Audio 功能,請用另一套自由軟體 Ardour,以後有空再介紹)。不過雖然說它樸素,它也還是有很現代的 Audio 時間拉伸功能,也支援 LV2 和 VST 外掛程式。

而且在這小小的 28 MB 裡面,它還直接內建 FluidSynth 引擎,可以載入 SoundFont 格式的音色庫,還附贈一個 Yamaha DX11 模擬器給你玩!

MusE Sequencer 是自由軟體,目前「只有」Linux 和 FreeBSD 版,蘋果和 Windows 用戶抱歉了。不過以下要介紹的音色庫就是跨平台的了。

音色庫:GeneralUser GS​

GeneralUser GS 是一套免費的音色庫,包含 261 個樂器和 13 套鼓組,但檔案大小只有 30.7 MB──對,你還是沒有看錯,又是 MB,不是 GB。

如果你的電腦配備超低但想要編曲,我超級推薦這個音色庫。GeneralUser GS 雖然檔案超小,但音質意外地好唷!尤其是它的鼓組,我個人覺得比 Reason 和 Logic Pro 內建的還要好聽(下方有示範影片)。

因為它是 SoundFont 格式,所以直接載入進 MusE Sequencer 就能用了,不用安裝其他外掛、不用註冊帳號、離線也可以正常運作。

比鮮芋仙首頁還小的編曲環境​

MusE Sequencer 和 GeneralUser GS 兩個加起來還不到 60 MB──比鮮芋仙的首頁還小!──就是一個功能完整的編曲環境了。

對照一下,Logic Pro 光是「最小安裝」就需要 6 GB 空間(100 倍)1,而「完整安裝」則是驚人的 72 GB(1,200 倍)。而且對許多人來說,裝完 Logic Pro 才是熱身而已呢:接下來還有 200 GB 起跳的 Native Instruments 大包裝,以及幾十個需要線上 iLok 授權的外掛效果器。

喔,而且在這一切之前,你還得先有一台配備夠好的蘋果電腦,並花兩百美元買 Logic Pro。然後等過幾年 macOS 更新時,你的電腦就會被拋棄;而 Logic Pro 又會綁定作業系統版本,除非你換新電腦,否則就只能卡在舊版本(就像我現在一樣)。

當然我知道 Logic Pro 介面更華麗、功能更多、音色選擇也更多(但不一定比較好聽);但我的重點是,大部分的人根本不需要用到這麼多東西。

低科技配備完全足夠做出聲音很好、很完整的音樂。而且額外的好處是,低科技強迫你專注在磨練自身的技術──把琴練好、曲子編好──而不是糾結一堆有的沒的:「我要掛這個效果器還是那個?」、「新出的音色庫在特價,該不該買?」

如果用 60 MB 不能做出好作品,那換到 72 GB 也只是以更慢、更貴的方式做不出來而已。

聽聽看​

以下,我在 Linux 上的 MusE 4.2.1 版錄了一首曲子,來展示這套超低科技的編曲組合。

全部聲音(鋼琴、吉他、貝斯、鼓組、薩克斯風、合成器 Pad)都只來自 MusE Sequencer 內建的 FluidSynth 引擎,只有載入 GeneralUser GS 一個音色庫。

軟體成本 0 元、只佔用 60 MB、完全離線運作,即使是十五到二十年前的古董電腦也跑得動。

整個製作也超極簡:完全無 EQ、無 Compressor、沒有任何外部效果器,唯一的「後製」只有 FluidSynth 引擎內建的 Reverb,以及輸出時防止破音的 Limiter。

曲子是阮黎的 Isoar,我好喜歡這首喔!關於這首的和弦小故事,請見〈我最喜歡的和弦〉。

Footnotes​

  1. 6 GB = 6,000 MB ↩

地球上「真正最重要」的軟體

· 閱讀時間約 4 分鐘 ┊ 純文字版

才剛寫完一篇用 FFmpeg 製作 WebP 動畫的文章,然後 Lex Fridman 就出了一集超過四小時(!)的 Podcast,訪問了 FFmpeg 的貢獻者 Kieran Kunhya 和 VLC 的核心人物 Jean-Baptiste Kempf。(YouTube 連結)

FFmpeg 是什麼?​

FFmpeg 絕對是地球上最多人「用過但完全不知道自己用過」的軟體之一。

FFmpeg 可以處理「幾乎所有格式1」的影片、聲音和圖片。不論你想要轉檔、剪輯、壓縮、串流、錄影、加字幕、截圖、做縮圖、合併、分割⋯⋯基本上你想得到的操作,FFmpeg 都可以辦到。

地球上幾乎所有跟影音有關係的軟體和服務都依賴它:YouTube、Netflix、Instagram、OBS⋯⋯甚至連 Mars 2020 火星探測車上面也跑著 FFmpeg,用來壓縮影片和照片。

(NASA 的直播中特別提到了 Linux 和 FFmpeg。)

你以為 Instagram 很重要?哼,要不是有 FFmpeg,你可是連一個限動都發不出去呢!這不是我亂講,是 Meta 的官網說的:

"FFmpeg plays an important role in enabling new video experiences... Meta executes ffmpeg (the main CLI application) and ffprobe (a utility for obtaining media file properties) binaries tens of billions of times a day."

「這些新的影片體驗,背後都是靠著 FFmpeg⋯⋯Meta 每天執行 ffmpeg(主程式)和 ffprobe(取得檔案資訊的工具)數百億次。」

──Engineering at Meta

地球上「真正最重要」的軟體們​

好可惜,像是 FFmpeg 這些「真正最重要」的軟體,行事都太低調了,完全沒有得到大眾應有的重視。

除了 FFmpeg 以外,我馬上想得到的還有像是:

  • 🗄️ SQLite:資料庫軟體。每一支手機(不論 iOS 或 Android)、每一個瀏覽器、每一個作業系統裡面幾乎都有它,管理著你(根本沒意識到存在)的重要資料2。根據 SQLite 官網,目前世界上有超過一兆個 SQLite 資料庫正在運作。
  • 🗜️ zlib:壓縮函式庫。你每天看的許多網頁(包含這篇)、每個 PNG 圖檔、每個 .zip 檔案,全部都依賴 zlib 的壓縮演算法。幾乎所有「現代人類文明產物」中都有 zlib 的存在!他們在官網狂妄地說,與其列出哪些東西用了 zlib,不如改列「誰沒有用到 zlib」還比較快。
  • ⚙️ GCC、LLVM 等編譯器:它們可以用來把人類(或 AI)寫的程式碼,翻譯成電腦能執行的機器語言;沒有它們的話,幾乎所有你叫得出名字的軟體都無法存在。如果說前面的 FFmpeg、SQLite 和 zlib 是「現代人類文明的地基」的話,那編譯器大概就是地基下面的地殼吧。

(我本來還想把 Linux 寫進去,但 Linux 其實已經有很多人知道了。)

這些真正讓世界正常運轉的自由軟體,幾乎都不怎麼賺錢、不擅長行銷、沒有人感謝它們;但如果少了它們,現代文明就會直接停止運作。反觀那些超級知名的軟體和服務──Windows、Photoshop、Google Chrome、Instagram、Facebook──少了它們,地球會怎樣呢?好像不會怎樣耶,說不定大家還會睡得更好呢!

有興趣的話,去聽聽看那集 Podcast 吧(我是前天睡前聽的)!你會發現,這個世界並不只是由 Google、Apple、Microsoft、Meta 等科技巨頭構成的,FFmpeg 和它的自由軟體夥伴們才是真正撐起這個世界的骨幹。

Footnotes​

  1. 這不是誇飾,是真的什麼鬼奇怪格式都可以! ↩

  2. 有沒有想過,你的 iPhone 為什麼能儲存簡訊、通訊錄、行事曆、相簿這些東西,而且還可以很方便地搜尋呢?沒錯,就是因為 SQLite! ↩

動畫圖的正解是 WebP

· 閱讀時間約 5 分鐘 ┊ 純文字版

最近看到 Shuyu 和 Eddie 在各自的 Blog 上都提到了關於 GIF 動畫圖的問題。讓我來分享一下我的做法。

(這是一張長達 10 秒鐘的循環動畫圖,檔案大小只有 659 KB!)

GIF 很老​

有很長一段時間,GIF(Graphics Interchange Format,圖像互換格式)是唯一能在網頁上顯示動畫的圖片格式,這也是為什麼「GIF」成為了動畫圖的代名詞。

但問題是,GIF 格式非常老舊,1987 年發明,最後一次更新是 1989 年(其實好像也還好,沒有我老?)。如果只是用在 88x31 的小按鈕就算了,但現代人使用動圖的習慣非常「奢華」──長寬動不動就 500 px 起跳、每秒 30 格(台灣的講法是「影格╱畫格╱張」都可以,但不是「幀」唷)──用 GIF 來存的話,檔案大小瞬間就會爆掉。

小秘訣

如果一定要用 GIF 格式,但還是想讓檔案盡可能小一點,試試看用 Gifsicle 這個軟體來最佳化(不是「優化」喔)!

改用 MP4?氣質不對​

一個解決方式是直接插入 MP4 影片檔。不過 Markdown 中沒有插入影片的原生語法,每次都要手寫 HTML <video> 標籤,有點麻煩。

而且,我覺得影片檔的「氣質」就是跟動圖不一樣。就算把播放控制列關掉、設定成循環播放,味道就還是不太對,沒有動圖那種完美的無縫循環感。更別說動圖還支援設定「每格幀獨立」的延遲時間,可以做出影片格式無法呈現的節奏感。

另外,影片檔如果有聲音,瀏覽器就不會讓它自動播放,得在程式碼裡額外設定成靜音;可能還會需要加 playsinline,才能讓某些手機瀏覽器就地播放,而不是跳到全螢幕。

動畫圖的正解是 WebP​

WebP 是 Google 在 2010 年推出的開放圖片格式,同時支援靜態圖和動畫,而且壓縮效率比傳統格式好非常多。

因為 WebP 是真正的「圖片」,所以你只要用 Markdown 寫 ![哈囉可麗餅](cat.webp) 或一個普通的 <img> 標籤就可以直接插入了。它會自動循環,不需要任何奇怪的 JavaScript,也沒有累贅的播放介面。用起來就像 GIF 檔案一樣簡單,但檔案小非常多!

想把影片轉成 WebP 動畫圖片,只要一行 FFmpeg 指令就搞定:

ffmpeg -i input.mp4 -vf "scale=360:-1,fps=12" -c:v libwebp_anim -loop 0 -compression_level 6 -quality 70 -an output.webp
  • scale=360:-1 是縮放尺寸。只要設一邊就好,另一邊寫 -1,FFmpeg 就會自動等比例縮放。
  • fps=12 每秒幾格幀。我覺得動圖的每秒格幀數不要太多,會更有動圖的氣質;我大部分都設 8-15 之間。
  • -compression_level 6 是設定「盡最大努力」尋找最佳壓縮方式。會比較慢,但檔案會更小。
  • -quality 70 是品質設定。我覺得 70、75 左右是甜蜜點,想要檔案更小的話可以試試看更低。

實測檔案大小​

我用了可麗餅的十秒鐘影片來測試,以下是兩種格式檔案大小的比較:

解析度╱格數GIFWebP -quality 70
640x360, 30fps13.8 MB5.4 MB
320x180, 30fps3.4 MB1.7 MB
320x180, 15fps2.2 MB940 KB

這篇文章最上面實際用的那張,最後調成 360x203、每秒 10 格(不是「幀」!)、品質 70,檔案大小只有 659 KB。

WebP 的唯一缺點​

WebP 格式唯一的缺點,就是要比較近代的瀏覽器才支援。1

Chrome 在 2014 年支援、Firefox 拖到 2019,Safari 甚至要到 2020 年以後(而且必須搭配 macOS 11 或 iOS 14 以後版本)才能完整支援 WebP 格式。所以我在 Wiwi.Blog 上只在動畫圖才用 WebP,一般的圖片還是選擇相容性最好的 JPEG 和 PNG。

像是我手上的 iPad Mini 4(2015 年出品),系統最高只能跑到 iOS 12,瀏覽器再也無法更新,就完全看不到 WebP。一台明明還很漂亮的平板,卻因為被蘋果的軟體綁死,現在連一張貓咪動圖都打不開,超鳥。當然對於蘋果來說,這設計完全合理──如果十年前的平板,今天還能正常地看到 WebP,誰會想要換新機呢?

再次印證了 Richard Stallman 的那句話:「如果使用者不能控制程式,那就是程式在控制使用者。」千萬別買只能跑封閉作業系統的產品呀!

(iPad Mini 4:看不到 WebP 動圖,但至少還能用來 ssh 啦。)

Footnotes​

  1. 其實在 WebP 之後,還有一個更新、壓縮率更好的格式叫 AVIF。但 AVIF 的相容性就更差了,許多 2024 年以前的系統和裝置都不支援,現在用它可能還太早。 ↩