# 影片倒放 — 把片子反過來放

最後一幀排在最前，連聲音一起。

> 把 MP4、MOV 或 WebM 反過來放，聲音也一併倒過來。全在瀏覽器裡跑：什麼都不上傳，沒有水印，斷網照樣能用。

本頁是一個完全在你的瀏覽器裡執行的互動式工具，地址是 https://abox.tools/zh-TW/reverse-video/。你交給它的任何內容都不會被上傳。下面是這個頁面用文字對該工具的全部說明；要使用它，請開啟這個地址。

## 你的影片**不會上傳**。這裡根本沒有伺服器。

每一幀都由你自己的瀏覽器在你自己的硬體上解碼、掉頭、再編碼。這裡沒有任何東西能取或能發，因為這個工具壓根就沒有網路功能。就算有路可走，頁面的另一端也根本沒有伺服器可以接收影片。

- ✗ 不上傳
- ✗ 不註冊
- ✗ 無水印
- ✓ 聲音也倒過來
- ✓ 斷網可用

## 影片倒放的步驟

1. **選一個影片。** 把 MP4、MOV、M4V 或 WebM 拖到選擇框裡，或者自己找出來。瀏覽器直接從磁碟上讀，這期間沒有任何東西發往別處。
2. **決定聲音怎麼辦。** 「聲音也倒過來」會把音軌一個取樣一個取樣地掉頭，說話聲因此出來的是倒著放的說話聲，而不是一片安靜。要做無聲片子就把它關掉，那樣還更快。
3. **決定花多少畫質。** 畫面必須重新編碼，因為幀出來的順序是原檔案裡根本沒有為之編碼過的。「均衡」會貼近原片花掉的量，「最佳畫質」則花得更多。
4. **倒過來，然後下載。** 工作是在你自己的硬體上乾的，所以花多久取決於你的機器，而不是排隊。做好的影片直接交給瀏覽器的下載。

## 說得更細的版本

[怎麼把影片倒過來放](https://abox.tools/zh-TW/guides/reverse-a-video/): 把片子反著放：倒放對畫面和聲音都做了什麼，為什麼它繞不開重新編碼，為什麼比剪輯慢，以及動手之前該先做哪一步。

## 工具箱裡還有

- [延時影片](https://abox.tools/zh-TW/timelapse-video/): 一小時的素材，二十秒看完。
- [影片截幀](https://abox.tools/zh-TW/grab-frame/): 任意位置，一張原畫質靜幀。
- [影片轉 GIF](https://abox.tools/zh-TW/video-to-gif/): 挑好段落、尺寸和幀率。
- [GIF 製作](https://abox.tools/zh-TW/gif-maker/): 把一組圖片變成一段動畫。

## 常見問題

### 我的影片會被傳到哪裡去嗎？

不會。它由你自己的瀏覽器在你自己的硬體上讀取、解碼、倒序和編碼。這個工具沒有服務端，頁面的 `Content-Security-Policy` 裡寫著它允許聯絡的每一個地址，沒有一個屬於本站。你要是寧可自己查也不願聽我們說，拔掉網線，照樣倒一個試試。

### 哪些影片格式可以倒放？

MP4、M4V 和 MOV 直接讀，裡面裝什麼都行：H.264、HEVC、AV1 或 VP9，只要你的瀏覽器能解那個編碼。其他瀏覽器能播的東西，最典型的是 WebM，則是靠讓瀏覽器自己的播放器一步步往回走來倒放，能成，但慢一些。瀏覽器既讀不了也播不了的檔案，實際上就是 AVI、WMV、FLV 和大多數 MKV，會帶一句說明直接拒掉，而不是走到一半才失敗。出來的一律是 MP4。

### 聲音會一起倒過來嗎？

會，除非你把它關掉。整條音軌會被解碼，取樣按相反順序排好，再重新編碼成 AAC。這第二遍編碼沒法省：一個音訊包是幾十毫秒的聲音，而且是相對前一個包編碼出來的，所以把包倒著寫出去，只會讓一小段一小段正著播、順序卻是亂的，那聽起來像故障，不像倒放。

### 倒放會掉畫質嗎？

畫面會被編碼第二遍，這要付一點代價。這裡沒法像剪輯那樣避開：倒過來的片子按一個原檔案根本沒為之編碼過的順序顯示幀，所以每一幀都得重寫一遍。這個工具不會做的是花得比原片更多，因為超過那條線之後再編碼，只會把檔案撐大，畫面並不會更好看。

### 影片的大小或時長有上限嗎？

工具裡沒有寫死的上限，檔案也不會一次性讀進記憶體，而是一組一組幀地往回走。真正的天花板有兩個：一個是下載前要在記憶體裡拼起來的成品影片，另一個是聲音，它必須整條留著，因為倒放得先拿到最後一個取樣才能寫出第一個。

### 為什麼有的檔案慢，有的快？

因為進去的路有兩條。MP4 或 MOV 由這個工具直接讀取，一組一組幀地解碼，機器多快它就多快。其他的則是不停地向瀏覽器自己的播放器要片子的某一時刻，而每一次這樣的跳轉都會讓瀏覽器從前面的關鍵幀重新解碼。頁面會在你開始之前說明它走的是哪一條，以及為什麼。

### 能只倒放其中一段嗎？

這裡不行。這個工具倒的是整段：出來的片子和進去的一樣長，只是最後一幀排在最前。先用[影片剪輯](https://abox.tools/zh-TW/trim-video/)把你要的那段剪出來，那個工具剪的時候一幀都不用重新編碼，然後再把剪出來的東西拿來倒。

### 它免費嗎，需要註冊嗎？

免費，沒有帳號，不用登入，沒有試用期，也沒有水印。本站帶廣告，經費就是從那裡來的，廣告拿不到任何關於你影片的資訊。

## 這條隱私承諾怎麼核實

- **你的影片沒有出去的路。** Content-Security-Policy 裡寫著這個頁面允許聯絡的每一個地址，沒有一個屬於本站。這裡沒有任何可以收走你檔案的接收端，就算有，程式碼裡也沒有把檔案送過去的東西。
- **這裡不會去取任何東西。** 這個工具壓根就沒有網路功能：沒有地址可填，沒有東西要下載，第一次用也不會拉什麼引擎。碰到你影片的每一個位元組，都是頁面載入時從這個源來的。
- **解碼和編碼都在本地。** 幀要麼走你自己瀏覽器裡的 WebCodecs，要麼走本來就會給你放這個片子的那套播放引擎。成品檔案在這臺機器的記憶體裡拼好，然後直接交給下載。
- **聲音也是在這裡掉頭的。** 要把一條音軌倒過來就得先解碼，而這個解碼用的是瀏覽器自己的，跑在這臺機器上。沒有誰在聽，沒有誰留著，也沒有什麼能把它遞出去：這裡根本不存在一條能發出一個位元組的程式碼路徑。
- **Google 載入了什麼，又拿不到什麼。** 廣告指令碼和統計指令碼來自 Google。關於你影片的資訊，一條也沒有交給它們，檔案、某一幀、名字、大小、時長都沒有。讀取、解碼、倒序、編碼的每一行程式碼都由這個源提供，也都擺在儲存庫裡。
- **捐助按鈕載入了什麼，又拿不到什麼。** 頁首那個「Buy me a coffee」按鈕由 cdnjs.buymeacoffee.com 的指令碼畫出來，字型取自 Google Fonts。它不過是個連結，不上報訪問，也拿不到關於你或你影片的任何東西。
- **斷網也照樣能用。** 斷開網路，這個頁面上的一切照常工作。這是最省事的一條證明。

**你可以自己核對。**上面這些不用你信。這個頁面是儲存庫裡的模板和配置產生出來的，構建指令碼你能讀，也能自己跑一遍，跑出來的結果就提交在 `dist` 分支上。拿實際發給你的內容，跟你自己從原始碼構建出來的結果對一遍就知道了： https://github.com/A-Box-of-Tools/website

最值得先讀的幾個檔案：`config/site.toml` 裡是 Content-Security-Policy，`src/timeline.js` 是決定哪一幀在什麼時候出來的那套演算法，`src/reverse.js` 是一組一組幀地把檔案往回走的迴圈。它們都沒有引入任何能發出請求的東西。
