要把一段影片裁切成TikTok的尺寸,做法是從來源中擷取出一塊固定的矩形區域,以整數的來源像素計算,精確地量為1080 × 1920(也就是9:16的比例),再把它重新錄製成一個WebM檔案。TikTok的上傳處理管線,是針對這個畫面規格調校的,因此這個矩形的寬度和高度,必須精確符合來源畫面中的這些像素數,而不能只是視覺上大致近似這個形狀。影片裁切工具在本機執行這項工作的方式,是讀取來源影片解碼後的尺寸,以30 fps把要求的區域繪製進一個Canvas中,當瀏覽器能提供可擷取的音軌時附加音訊,並把這個canvas串流錄製成WebM。整個過程中,沒有任何來源位元組會被上傳,而且同一個固定矩形,會套用到每一格畫面上,因此這個裁切不會飄移、不會追蹤主體,也不會隨著時間改變。裁切這個步驟,只會改變可見的畫面區域;它不是縮放、時間裁剪、模糊、遮蔽,或物件移除。

為什麼TikTok的1080 × 1920畫面規格,決定了特定的裁切方式
TikTok的主要動態消息,是為直式手機設計尺寸的,這個平台的文件與整合指南,都把1080 × 1920當成參考的上傳畫面。任何比這個更窄或更短的內容,都會被加上黑邊或放大縮放;任何更寬的內容,也會被加上同樣效果的黑邊,而任何高度不吻合的情況,都會以創作者無法自行選擇的方式,裁掉頂部和底部。這代表你從來源中擷取出來的矩形,在來源自己的座標系統中,必須恰好是1080像素寬、1920像素高。像「大約1080 × 1920」這樣近似的數值,可能會有一、兩個像素的偏移,而這種偏移,會被平台重新編碼的過程靜默地限制修正,讓主體偏離中心。
當來源比目標更寬時,這一點格外重要。一段1920 × 1080的橫式片段,水平方向有充裕的空間,但垂直方向只有1080像素的空間,不夠達到1920,除非經過縮放。一段3840 × 2160的片段(4K橫式),則有多餘的高度空間,垂直方向有2160像素,足以容納一個高1920像素的矩形,不需要縮放。如果來源本身已經比較高,像是1080 × 1920的手機拍攝內容,裁切矩形就可以恰好落在1080 × 1920,得到一個真正吻合的結果。這個裁切工具不會憑空創造像素;它只能從來源已經包含的像素中,選出一個矩形區域。
「影片裁切工具」對你的影片做了什麼
「影片裁切工具」是一個本機瀏覽器工具,它移除一段影片外圍的區域,做法是重新錄製你指定的一個精確矩形區域。你選擇來源檔案,輸入四個整數像素值(X、Y、寬度和高度),這個工具會在本機播放來源影片,同時只把那個區域,以相符的解析度繪製進一個Canvas中。這個canvas串流會被擷取成WebM,並提供下載。沒有任何內容會被送到伺服器,解碼、繪製、錄製,以及下載,全部都在目前的瀏覽器分頁中完成。
這個裁切區域,在整段片段中是固定不變的:同一個矩形,會套用到每一格畫面上,且這個矩形不會移動,因此這個工具不會跨畫面追蹤一個人物或物件,不會隨著鏡頭平移而改變位置,也不會產生一種Ken Burns式的動態效果。這個工具也明確地不是時間裁剪、不是縮放、不是純壓縮處理、不是模糊、不是遮蔽,也不是物件移除。如果來源需要在時間上縮短,影片剪輯工具才是正確的選擇。如果來源需要縮放到不同的解析度,影片調整大小工具才是正確的選擇。如果來源需要重新編碼成一個較小的檔案,影片壓縮工具才是正確的選擇。
輸入內容、解碼後的尺寸,以及硬性限制
在這個工具能進行裁切之前,它必須先載入來源影片解碼後的尺寸,這代表這個檔案,必須是目前瀏覽器能夠解碼的格式。一個被接受的副檔名,並不保證編解碼器一定受支援;瀏覽器才是最終的判斷依據。這個影片,也必須符合其他本機影片工具所強制執行的同一套安全預算,這樣它才能在不耗盡記憶體的情況下完成處理。
下表列出這個工具對輸入與輸出強制執行的邊界。每一個數值,都會在錄製開始之前先被檢查;任何違反規則的矩形,都會被拒絕,不會被偏移、裁切、四捨五入,或產生一個不完整的檔案。
| 限制項目 | 上限 |
|---|---|
| 來源檔案大小 | 最多500 MiB(正數) |
| 解碼後長度 | 大於零,最多五分鐘 |
| 來源邊長 | 任何一邊都不得超過4096像素 |
| 來源畫面面積 | 面積不得超過3840 × 2160像素 |
| 裁切矩形 | X + 寬度,以及Y + 高度,都必須維持在來源範圍之內 |
| 裁切尺寸 | 寬度和高度都必須至少為2像素 |
| 像素計數 | 只能是非負的未裁剪整數 |
| 輸出面積 | 不得大於3840 × 2160像素 |
| 輸出容器 | WebM(若可用則優先VP9,其次VP8,再其次為通用WebM) |
| 輸出位元速率 | 限制在180 kbps到8 Mbps之間,依裁切後的像素面積在30 fps下推算得出 |
如果一份來源檔案通過了檔案大小和長度的檢查關卡,但瀏覽器無法解碼它,這個工具就無法繼續進行。把來源重新封裝或重新編碼成不同的容器格式,是這個裁切工具範圍之外的另一個獨立步驟。
如何一步步把影片裁切成TikTok尺寸
以下步驟使用經過驗證的操作流程,並假設目標畫面規格是1080 × 1920。如果需要不同的精確像素尺寸,請代入你自己的寬度和高度。
- 在一個能解碼你來源容器格式的桌面瀏覽器中(搭配目前版本編解碼器的Chrome、Edge、Firefox或Safari),開啟「影片裁切工具」。
- 從磁碟中選擇一個來源檔案:MP4、WebM、MOV、M4V,或Ogg。等待這個工具回報來源解碼後的尺寸;在這些數字載入完成之前,不要輸入座標。
- 以整數的來源像素,輸入這個矩形。對於TikTok的1080 × 1920畫面規格,把寬度設為1080、高度設為1920。設定Y,讓Y + 1920維持在來源高度範圍之內;設定X,讓X + 1080維持在來源寬度範圍之內。X會讓裁切區域往右移動;Y則會讓它往下移動。
- 確認這個矩形有效:X和Y都是非負整數,兩個尺寸都至少為2像素,兩個邊都落在來源畫面之內,而1080 × 1920(2,073,600像素)的輸出面積,不超過3840 × 2160。這個工具會拒絕無效的矩形,不會進行四捨五入、偏移,或產生一個不完整的檔案。
- 點選「裁切影片」。在這個工具依照來源播放速度即時重新錄製canvas的過程中,請讓分頁保持開啟並處於焦點狀態;一段一分鐘的來源,大約需要一分鐘,一段五分鐘的來源,則大約需要五分鐘。
- 當下載連結出現時,儲存這個WebM檔案,並在一個能解碼VP9或VP8的播放器中開啟它(使用同一個瀏覽器是最安全的做法)。在刪除原始來源之前,請先確認長度、裁切位置、音訊,以及相容性都沒有問題。
從任何來源計算出1080 × 1920的矩形
這四個座標,受限於來源畫面本身,唯一需要的運算,就是把一個1080 × 1920的矩形,放進這個畫面裡。如果來源本身已經至少有1080像素寬、1920像素高,這個裁切矩形,就可以放在畫面內的任何位置。要讓裁切區域置中,可以把X設為來源寬度與1080之間差值的一半,把Y設為來源高度與1920之間差值的一半。下面這個實作範例,使用的是一個3840 × 2160的來源,這在4K螢幕錄影和匯出剪輯中很常見。
來源寬度 W_s = 3840,來源高度 H_s = 2160。 目標寬度 W_t = 1080,目標高度 H_t = 1920。 X = (W_s − W_t) ÷ 2 = (3840 − 1080) ÷ 2 = 2760 ÷ 2 = 1380。 Y = (H_s − H_t) ÷ 2 = (2160 − 1920) ÷ 2 = 240 ÷ 2 = 120。 矩形:X = 1380,Y = 120,寬度 = 1080,高度 = 1920。
快速檢查: X + 寬度 = 1380 + 1080 = 2460,小於等於3840。正確。 Y + 高度 = 120 + 1920 = 2040,小於等於2160。正確。 輸出面積 = 1080 × 1920 = 2,073,600像素,小於等於3840 × 2160 = 8,294,400。正確。
如果來源是1920 × 1080(全高清橫式),高度就不足以裁出1920像素,因此同樣的公式會得出一個負數的Y,這個工具會拒絕這個矩形。在這種情況下,必須先把來源進行縮放,或改用另一個垂直方向至少有1920像素的來源;裁切無法創造出來源本身不含的像素。原生以TikTok規格錄製的來源,例如1080 × 1920的手機拍攝內容,可以用預設矩形(X = 0,Y = 0,寬度 = 1080,高度 = 1920)進行裁切,並通過每一項檢查。
即時錄製與WebM輸出
一旦這個矩形被接受,這個工具就會在背景本機播放來源影片,依照WHATWG的drawImage規則,以30 fps只把要求的區域繪製進一個Canvas中,並把這個canvas串流傳進一個MediaRecorder。這個錄製器會在VP9、VP8和通用WebM之間,選擇瀏覽器回報的第一個可用WebM設定檔,而要求的影片位元速率,則是依照裁切後的像素面積,在30 fps下推算得出的,並限制在180 kbps到8 Mbps之間。這是一個單次算繪的瀏覽器設定,並不保證檔案大小或視覺品質,而快速動作、雜訊、顆粒感、來源編解碼器,以及瀏覽器編碼器,都可能改變這兩者。
只有當瀏覽器能從來源提供一條可擷取的音軌時,音訊才會被附加進去。支援程度依瀏覽器而異,而且在即時處理過程中,來源可能會被聽見,因此如果來源內容比較敏感,請規劃在一個安靜的環境中操作。MediaRecorder產生出來的Matroska容器,可能會省略一個有限的長度值,因此這個裁切工具會執行一個經過標準測試的WebM長度寫入程式,遵循Matroska規範:它會剖析Segment Info和TimestampScale,並以時間戳記刻度單位,插入一個大端序的Matroska Duration,之後會檢查結果是否為非空大小,以及是否符合要求的尺寸。Object URL、計時器、錄製器音軌,以及來源播放,都會在替換、發生錯誤、過期的完成事件,或元件卸載時被釋放,因此這個分頁不會在多次裁切之間洩漏記憶體。
發布之前先檢查這個WebM檔案
幾個快速檢查,就能在片段送到TikTok之前,抓出大多數問題:
- 用錄製這個檔案的同一個瀏覽器開啟這個WebM檔案,確認長度是有限值,且與來源一致。
- 把播放進度拖到開頭、中間和結尾的畫格,確認裁切矩形落在你預期的位置;請記得這個工具不會追蹤移動中的主體,因此如果主體移動了,裁切結果就會把這一點顯露出來。
- 如果來源有聲音,請確認音訊有播放出來。如果來源有音訊,但這個WebM檔案卻是靜音的,代表瀏覽器沒有提供可擷取的音軌;請改用一個支援的瀏覽器重新錄製,或用影片轉音訊轉換器另外擷取音訊,再重新混入影片中。
- 如果TikTok預期收到的是一個乾淨的直式片段,請確認字幕、章節、旋轉標記、HDR訊號,以及色彩中繼資料都不存在;這個裁切步驟不會保留容器層級的功能。
- 把這個WebM檔案上傳到TikTok,並觀察第一次播放;即使這個平台大幅重新編碼,這個裁切工具仍然已經交付了演算法所預期的精確1080 × 1920畫面,因此不會出現額外的留白或黑邊。
想更深入了解,如何在常見的手機和相機來源內,把一個1080 × 1920的裁切區域置中,請參見以精確像素座標為TikTok裁切影片這篇指南;技巧和限制都是一樣的,只是額外針對高度較窄的來源,提供了更多實作範例。
如果你正在比較各種選項,影片裁切工具的準確度:像素、音訊、長度有詳細的說明。