# 동영상 거꾸로 재생 — 영상 거꾸로 돌리기

마지막 프레임부터, 소리까지 함께.

> MP4, MOV, WebM을 거꾸로 재생합니다. 소리도 함께 뒤집습니다. 브라우저에서 돌아갑니다. 업로드 없음, 워터마크 없음, 오프라인 동작.

이 페이지는 브라우저 안에서만 동작하는 대화형 도구입니다(https://abox.tools/ko/동영상-거꾸로-재생/). 도구에 넘긴 어떤 것도 업로드되지 않습니다. 아래는 이 페이지가 도구에 대해 글로 설명하는 내용 전부입니다. 도구를 쓰려면 이 주소를 여세요.

## 동영상은 **절대 업로드되지 않습니다**. 서버가 아예 없으니까요.

모든 프레임을 디코딩하고 뒤집고 다시 인코딩하는 일은 내 브라우저가 내 기기의 성능으로 합니다. 이 도구에는 네트워크 기능이 아예 없어서 무언가를 가져올 수도 보낼 수도 없습니다. 설령 있더라도 이 페이지 반대편에는 영상을 받아 줄 서버가 없습니다.

- ✗ 업로드 없음
- ✗ 가입 없음
- ✗ 워터마크 없음
- ✓ 소리도 뒤집기
- ✓ 오프라인 동작

## 동영상을 거꾸로 돌리는 방법

1. **동영상을 고릅니다.** MP4, MOV, M4V, WebM을 선택 영역에 끌어다 놓거나 직접 골라 주세요. 브라우저가 디스크에서 곧바로 읽습니다. 그동안 어디로도 아무것도 나가지 않습니다.
2. **소리를 어떻게 할지 정합니다.** “소리도 뒤집기”는 트랙을 샘플 단위로 돌려놓습니다. 말소리가 침묵이 아니라 거꾸로 재생된 말소리로 나오게 하는 것이 그것입니다. 소리 없는 영상이라면 꺼 두세요. 그편이 빠릅니다.
3. **화질을 얼마나 쓸지 고릅니다.** 화면은 다시 인코딩해야 합니다. 프레임이 원본 파일의 어떤 것도 대비하지 않은 순서로 나오기 때문입니다. “균형”은 원본이 쓴 만큼에 가깝게 맞추고, “최고 화질”은 더 씁니다.
4. **거꾸로 돌리고 내려받습니다.** 작업이 내 기기에서 일어나므로, 걸리는 시간은 대기열이 아니라 기기 성능에 달려 있습니다. 완성된 영상은 브라우저의 다운로드로 바로 넘어갑니다.

## 자세한 설명

[동영상을 거꾸로 돌리는 방법](https://abox.tools/ko/가이드/동영상-거꾸로-돌리기/): 영상을 거꾸로 재생하기. 뒤집기가 화면과 소리에 무엇을 하는지, 왜 다시 인코딩하지 않고는 할 수 없는지, 왜 구간 자르기보다 느린지, 그리고 그 전에 무엇을 해야 하는지.

## 상자 속 다른 도구

- [타임랩스 만들기](https://abox.tools/ko/타임랩스-만들기/): 한 시간짜리 영상을 20초로.
- [동영상 캡처](https://abox.tools/ko/동영상-캡처/): 어느 지점이든, 원본 화질 그대로 한 장.
- [동영상을 GIF로](https://abox.tools/ko/동영상-gif-변환/): 구간과 크기, 초당 프레임 수를 고르세요.
- [GIF 만들기](https://abox.tools/ko/gif-만들기/): 여러 장의 사진을 움직임 하나로.

## 자주 묻는 질문

### 제 동영상이 어딘가로 업로드되나요?

아닙니다. 읽고 디코딩하고 뒤집고 인코딩하는 일은 내 기기에서 도는 내 브라우저가 합니다. 이 도구에는 서버 쪽이라는 것이 없고, 이 페이지의 `Content-Security-Policy`에 연결해도 되는 주소가 전부 적혀 있는데 그중 이 사이트 것은 하나도 없습니다. 말로 듣기보다 직접 확인하고 싶다면, 인터넷을 끊고 그냥 영상을 거꾸로 돌려 보세요.

### 어떤 영상 형식을 거꾸로 돌릴 수 있나요?

MP4, M4V, MOV는 안에 무엇이 들었든 곧바로 읽습니다. H.264, HEVC, AV1, VP9 가운데 무엇이든 브라우저가 그 코덱을 디코딩할 수 있으면 문제 없습니다. 브라우저가 재생할 수 있는 나머지, 대표적으로 WebM은 브라우저 자신의 플레이어를 거꾸로 한 걸음씩 옮겨 가며 뒤집습니다. 되기는 되지만 더 느립니다. 브라우저가 읽지도 재생하지도 못하는 파일, 실제로는 AVI, WMV, FLV와 대부분의 MKV는 중간에 실패하는 대신 그렇다는 메시지와 함께 거부합니다. 나오는 것은 언제나 MP4입니다.

### 소리도 함께 뒤집히나요?

끄지 않으시면 뒤집힙니다. 트랙 전체를 디코딩하고, 샘플을 반대 순서로 놓고, AAC로 다시 인코딩합니다. 그 두 번째 인코딩을 피할 방법은 없습니다. 오디오 패킷은 앞 패킷을 기준으로 코딩된 수십 밀리초짜리 소리 조각이라, 패킷을 뒤에서부터 그대로 써 내면 짧은 조각들이 앞으로 재생되면서 순서만 뒤바뀐 소리가 됩니다. 뒤집힌 소리가 아니라 고장 난 소리로 들리죠.

### 거꾸로 돌리면 화질이 떨어지나요?

화면이 두 번째로 인코딩되므로 조금 떨어집니다. 구간 자르기에서와 달리 여기서는 피할 수 없습니다. 거꾸로 된 영상은 원본 파일의 어떤 것도 대비하지 않은 순서로 프레임을 보여 주므로, 모든 프레임을 새로 써야 합니다. 다만 원본이 쓴 것보다 더 쓰지는 않습니다. 그 위로 인코딩해 봐야 파일만 커지고 더 좋아 보이지는 않으니까요.

### 영상 용량이나 길이에 제한이 있나요?

도구에 정해 둔 제한은 없고, 파일을 한 번에 메모리로 전부 읽지도 않습니다. 프레임 묶음 단위로 거슬러 올라가며 훑거든요. 현실적인 한계는 내려받기 전에 메모리에서 조립되는 완성 영상, 그리고 통째로 들고 있어야 하는 소리입니다. 뒤집으려면 첫 샘플을 쓰기 전에 마지막 샘플이 있어야 하니까요.

### 왜 어떤 파일에서는 더 느린가요?

들어가는 길이 둘이기 때문입니다. MP4나 MOV는 이 도구가 직접 읽어 프레임 묶음 단위로 디코딩하는데, 기기가 낼 수 있는 최고 속도입니다. 그 밖의 것은 브라우저 자신의 플레이어에 영상의 한 순간씩을 차례로 물어보는 방식으로 뒤집는데, 그 탐색 하나하나가 브라우저에게 앞선 키프레임부터 디코딩하게 만듭니다. 시작하기 전에 둘 중 어느 쪽을 쓰는지와 그 이유를 페이지가 알려 줍니다.

### 영상의 일부만 거꾸로 돌릴 수 있나요?

여기서는 안 됩니다. 이 도구는 전체를 뒤집습니다. 나오는 영상은 들어간 영상과 길이가 똑같고 마지막 프레임이 맨 앞에 옵니다. 원하는 부분을 먼저 [동영상 구간 자르기](https://abox.tools/ko/동영상-자르기/)로 잘라내세요. 프레임 하나 다시 인코딩하지 않고 해냅니다. 그렇게 나온 것을 거꾸로 돌리시면 됩니다.

### 무료인가요? 가입해야 하나요?

무료이고 계정도, 로그인도, 체험판도, 워터마크도 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 영상에 관한 것은 넘어가지 않습니다.

## 이 약속을 직접 확인하는 방법

- **동영상은 나갈 곳이 없습니다.** 이 페이지가 연결해도 되는 주소는 Content-Security-Policy에 모두 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 파일이 모일 만한 수신 지점이 없고, 설령 있더라도 거기로 파일을 보낼 코드가 없습니다.
- **여기서는 아무것도 가져오지 않습니다.** 이 도구에는 네트워크 기능이 아예 없습니다. 붙여 넣을 주소도, 내려받을 것도, 처음 쓸 때 가져오는 엔진도 없어요. 내 영상에 닿는 모든 바이트는 페이지를 불러올 때 이 출처에서 온 것입니다.
- **디코딩도 인코딩도 내 기기에서 합니다.** 프레임은 브라우저 안에서 WebCodecs를 지나가거나, 어차피 그 영상을 보여 줬을 바로 그 재생 엔진을 지나갑니다. 완성된 파일은 이 기기의 메모리에서 만들어져 곧바로 내려받기로 넘어갑니다.
- **소리도 여기서 뒤집습니다.** 음원을 뒤집으려면 디코딩해야 하고, 그 디코딩은 이 기기에서 도는 브라우저 자신의 것입니다. 아무도 그걸 듣지 않고, 아무것도 그걸 보관하지 않으며, 어디로 넘길 방법도 없습니다. 여기에는 1바이트라도 내보내는 코드 경로가 없습니다.
- **구글이 불러오는 것과, 구글에게 주지 않는 것.** 광고와 측정 스크립트는 구글에서 옵니다. 어느 쪽에도 내 영상에 관한 것은 넘어가지 않습니다. 파일도, 프레임도, 이름도, 용량도, 길이도요. 읽고 디코딩하고 뒤집고 인코딩하는 코드는 한 줄도 빠짐없이 이 출처에서 제공되고 저장소에 공개되어 있습니다.
- **후원 버튼이 불러오는 것과, 후원 버튼이 받지 못하는 것.** 헤더의 "Buy me a coffee" 버튼은 cdnjs.buymeacoffee.com의 스크립트가 그리고, 글꼴은 Google Fonts에서 가져옵니다. 그저 링크일 뿐이에요. 방문을 보고하지도, 나에 관한 것이나 내 영상에 관한 것을 받아 가지도 않습니다.
- **오프라인에서도 동작합니다.** 네트워크를 끊어도 이 페이지의 기능이 전부 그대로 돌아갑니다. 가장 간단한 증거입니다.

**직접 확인해 보세요.** 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 `dist` 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다: https://github.com/A-Box-of-Tools/website

먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 `config/site.toml`, 어느 프레임이 언제 나올지를 정하는 산술은 `src/timeline.js`, 파일을 프레임 묶음 단위로 거슬러 올라가는 반복문은 `src/reverse.js`에 있습니다. 어느 것도 요청을 보낼 수 있는 무언가를 불러오지 않습니다.
