在 Android 上壓縮影片,意思是以較低的位元速率、較小的解析度,或兩者同時調整的方式,將片段重新編碼,讓產生的檔案大小足以分享或儲存,同時不變更相機原本捕捉到的內容。在 Android 手機上最快速的作法,就是把片段載入一個以瀏覽器為基礎的壓縮工具,在本機重新編碼:選擇檔案、挑選預設值,讓來源播放一次,同時頁面錄製新的串流,再下載較小的 WebM。在手機上的操作流程與桌面相同,因為所有運作都發生在瀏器分頁內,所以影片從未上傳到任何伺服器。權衡之處在於編碼器以即時速度執行,這代表一段兩分鐘的片段,在裝置上同樣需要大約兩分鐘,而且輸出結果永遠會是 WebM 檔案,而不是 MP4。

how to compress video on android
how to compress video on android

為什麼 Android 影片會這麼大

現代 Android 手機以高位元速率錄製 HEVC (H.265),甚至 AV1,讓影像在 6.7 吋的螢幕上看起來銳利清晰。一分鐘的 4K HDR 影片,容量可能就高達數百 MB,而使用近期旗艦相機錄製的五分鐘片段,大小可能會超過 1 GB。這些檔案還帶有方向、色彩設定檔,有時還有多組音軌的中繼資料,全都會增加檔案大小。雲端分享服務、通訊應用程式和電子郵件都有遠小於這些原始檔案大小的上傳上限,這正是為什麼手機使用者通常會選擇壓縮,而不是改用其他編解碼器的原因。

三個實際的瓶頸,促使 Android 使用者傾向採取快速的壓縮步驟,而不是進行完整的轉檔流程:

  • 儲存空間:內部儲存空間很快就會用完,而且並非每支手機都支援 microSD 擴充。
  • 分享:WhatsApp、Telegram 和 Gmail 都會壓縮或限制上傳大小,而且往往壓縮得相當積極。
  • 頻寬:透過 LTE 上傳 1 GB 的片段需要花上數分鐘,會消耗電力,也會計入行動數據的上限中。

最後一點正是許多讀者特別搜尋如何在 Android 裝置上壓縮影片的原因——他們希望在按下「分享」之前,手上就先有一個較小的檔案。

覽器型壓縮工具在 Android 上能處理什麼

這個 Video Compressor 工具完全在手機的瀏覽器分頁內執行,所以在 Android 上的運作方式與在桌面上相同。頁面會透過瀏覽器內建的影片解碼器讀取所選的檔案,將每個可見的影格繪製到 Canvas 上,再以目前瀏器所提供的 WebM 編解碼器錄製該 Canvas 串流。因為影片從未上傳,所以網路連線和工具的伺服器端都不在這個工作流程中。

此工具一次僅接受一個影片檔案,並在開始編碼前套用以下硬性限制:

  • 檔案大小上限為 500 MiB。
  • 解碼後的長度上限為五分鐘。
  • 任一邊的像素上限為 4096 像素。
  • 解碼後的總像素面積上限為 3840 × 2160 像素。

檔名為 MP4、WebM、MOV、M4V 或 Ogg 的檔案,在副檔名層級會被接受,但實際的解碼仍須視 Android 瀏覽器所安裝的編解碼器而定。有效的副檔名無法讓不支援的編解碼器變得可解碼,所以 HEVC 片段只有在隨附 HEVC 解碼器啟用的瀏覽器中才能運作。

當片段帶有音軌時,頁面在處理過程中會以可聽見的方式播放來源,讓使用者在重新編碼期間聽到聲音。當瀏覽器透過 HTMLMediaElement captureStream 公開可擷取的音軌時,音訊會被收錄到輸出串流中,但此工具並不會對音量進行正規化、不會混音,也不會保留例如字幕、章節或旋轉標記等中繼資料。

如何在 Android 上的瀏覽器中壓縮影片

這是在 Android 手機上的核心工作。在目前的 Chromium 核心瀏覽器(例如 Chrome、Edge 或 Samsung Internet)開啟 Video Compressor,然後依照下列步驟操作。

  1. 在 Android 瀏覽器中開啟 Video Compressor 頁面,並點選檔案選擇器。從手機的媒體庫或檔案管理員中選擇片段——例如 Downloads、Movies 或 DCIM/Camera。
  2. 確認檔案通過輸入檢查:頁面會回報長度、尺寸和位元組大小是否落在 500 MiB、五分鐘、3840 × 2160 的限制範圍內。若原始片段長度超過五分鐘,請選擇較短的片段。
  3. 選擇預設值:
    • Small 將寬度上限設為 640 像素,目標影格率為 24 fps。
    • Balanced 將寬度上限設為 1280 像素,目標影格率為 30 fps。
    • Quality 將寬度上限設為 1920 像素,目標影格率為 30 fps。
    每個預設值都會保留來源的長寬比,絕不放大來源,並將輸出尺寸向下取整為偶數像素,以獲得更廣泛的編解碼器相容性。
  4. 開始壓縮,並讓瀏器分頁保持在前景。編碼會以即時速度執行,因為錄製器會在原始影片播放的同時觀察 Canvas 串流,所以一段兩分鐘的片段在裝置上同樣需要大約兩分鐘。
  5. 當來源播放完成後,請查看報告:輸出尺寸、輸入位元組數、輸出位元組數,以及帶正負號的百分比變化。這個百分比是根據兩個實際的 Blob 大小所計算,因此當結果較大時,它會誠實地顯示為成長。
  6. 下載 WebM,然後在手機的影片播放器或媒體庫應用程式中完整播放下載的檔案,再刪除原始檔案。確認影像、聲音、長度和相容性是否符合目的地的需求。

整個流程都在裝置上進行:沒有上傳步驟、不需要帳號,也不會將任何內容傳送到 Lizely 的伺服器。如果真正的目標其實是音軌而不是較小的影片,那麼專為 Android 設計的 音訊萃取指南介紹了將聲音另存為獨立檔案的工作流程。

Small、Balanced 與 Quality:該選擇哪個預設值

每個預設值都是一組透明的界線,而不是放諸四海皆準的最佳值,所以正確的選擇取決於壓縮後的檔案用途。下表摘要列出已揭露的數字;實際的百分比變化會隨來源內容而有所不同。

預設值最大寬度目標影格率位元速率範圍典型用途
Small640 px24 fps180 kbps – 8 Mbps通訊應用程式、電子郵件附件、狀態更新
Balanced1280 px30 fps180 kbps – 8 Mbps社群貼文、相簿分享、一般性分享
Quality1920 px30 fps180 kbps – 8 Mbps裝置上播放、個人片段的封存

錄製器實際使用的位元速率,是由一個有界定的每像素位元數啟發式所選定,然後限制在 180 kbps 到 8 Mbps 的範圍內。此工具絕不放大來源,所以即使是選擇 Quality 預設值,720p 的來源仍會維持 720p。

壓縮效果取決於內容。低動態的動畫在任何預設值下都可能大幅縮小;而雜訊較多、晃動明顯、帶有顆粒,或本身已是高效率 HEVC 來源的影片,則可能產生大小相近甚至更大的檔案。當結果並未縮小或效果不夠好時,請使用不同的預設值再執行一次,並在刪除原始檔案前檢查下載的檔案。瀏器的 MediaRecorder API 在不同版本中對 VP9、VP8 與通用 WebM 支援的公開方式並不相同,因此錄製器會逐一檢視所回報的清單;即使預設值和來源相同,不同瀏覽器之間的輸出也可能有所不同。

解讀結果並決定是否保留

執行結束時的報告是唯一誠實的測量依據,因為這個百分比是根據兩個實際的 Blob 大小——輸入與輸出——所計算,而不是根據任何承諾的壓縮比率。如果輸出位元組數大於輸入位元組數,這個數字會以正向成長顯示,而不是縮減,而且如果使用者想要的話,檔案仍可供下載。

在刪除任何原始檔案之前,有三項檢查值得在 Android 手機上執行:

  • 在真正的播放器(例如 Google Photos、VLC 或 MX Player)中完整播放下載的檔案,以確認長度和畫面。
  • 確認聲音可以播放。只有當瀏覽器公開可擷取的音軌時,音訊才會被納入;所以在一個明顯帶有音訊的片段上,如果輸出是無聲的,通常代表這台 Android 裝置上的瀏覽器並未公開可供擷取的音軌。
  • 在目的地應用程式中開啟該檔案——WhatsApp、Gmail、Telegram、Instagram——並以草稿方式傳送一次,確認編解碼器和容器格式是否可被接受。

如果有任何問題,原始檔案仍然在手機上,而且可以使用其他預設值重新執行。當選擇了新檔案、預設值變更、使用者取消,或分頁被關閉時,頁面會讓進行中的工作失效並釋出暫存網址,因此部分檔案不會在多次嘗試之間洩漏。

何時桌面編碼器是更好的選擇

在 Android 上使用以瀏覽器為基礎的壓縮工具,適合需要快速處理單一片段,使其符合聊天應用程式大小或釋出儲存空間的情況。對於更廣泛的需求來說,瀏器反而不是合適的工具:

  • 封存母帶和專業交付規格,需要精確的編解碼器設定檔、雙階段速率控制、固定關鍵影格間隔,以及可預測的輸出。
  • 跨平台 MP4 播放無法保證,因為錄製器僅會產生 WebM,並依據瀏覽器所回報的支援情況依序嘗試 VP9、VP8,再試通用 WebM。
  • 字幕、章節、附件、旋轉標記、色彩中繼資料和 HDR 訊號皆不會被保留,所以下載的檔案並非原始容器的忠實複製。
  • 長度超過五分鐘或大小超過 500 MiB 的長片,根本無法在此工具中處理。

在這些情況下,標準的答案是使用受維護的桌面編碼器(例如 FFmpeg)搭配審慎挑選的指令。此瀏覽器工具是針對日常 Android 情境設計的:縮小片段、加以分享,再行決定。

如果您正在權衡各種選項,在 Mac 上於瀏覽器內本地壓縮影片對此有詳細說明。