위에서 파일을 고르면 바로 열립니다.준비됨 — 인터넷을 끊어도 이대로 동작합니다.이 브라우저에서는 쓸 수 없습니다 (나머지는 그대로 동작합니다).오프라인 저장에는 https:// 또는 localhost가 필요합니다.여기서는 저장할 수 없지만, 어느 쪽이든 올라가는 것은 없습니다.파일은 어디로도 가지 않았습니다. 파일 {total}개를 불러왔고 모두 이 사이트의 것입니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. 살펴볼 만합니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.문제가 생겼습니다: {detail}. 처음부터 다시 하려면 페이지를 새로 고치세요.파일 {count}개를 읽는 중…파일 {count}개를 읽는 중…예시로 해 보기예시를 만드는 중…이 브라우저에서는 예시를 만들지 못했습니다. 대신 파일을 골라 주세요.
영상을 읽고 표시하고 자르고 쓰는 일은 내 브라우저가 내 기기의 성능으로 합니다. 이 도구에는 네트워크 기능이 아예 없어서 무언가를 가져올 수도 보낼 수도 없습니다. 설령 있더라도 이 페이지 반대편에는 영상을 받아 줄 서버가 없습니다.
✗ 업로드 없음
✗ 가입 없음
✗ 워터마크 없음
✓ 구간은 몇 개든
✓ 화질 손실 없음
✓ 오프라인 동작
실시간 확인:확인 중…
오프라인:확인 중…
그냥 믿지 마시고 직접 확인해 보세요. 개발자 도구의 '네트워크' 탭을 켜 놓고 영상을 잘라 보십시오. 프레임도, 파일 이름도, 고른 파일의 단 1바이트도 실려 나가는 요청이 없습니다. 아니면 인터넷을 끊고 그냥 잘라 보셔도 됩니다. 영상을 어딘가로 보내서 자르는 도구라면 그대로 멈출 테니까요.
이 약속을 직접 확인하는 방법
동영상은 나갈 곳이 없습니다. 이 페이지가 연결해도 되는 주소는 Content-Security-Policy에 모두 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 파일이 모일 만한 수신 지점이 없고, 설령 있더라도 거기로 파일을 보낼 코드가 없습니다.
여기서는 아무것도 가져오지 않습니다. 이 도구에는 네트워크 기능이 아예 없습니다. 붙여 넣을 주소도, 내려받을 것도, 처음 쓸 때 가져오는 엔진도 없어요. 내 영상에 닿는 모든 바이트는 페이지를 불러올 때 이 출처에서 온 것입니다.
일반 경로에서는 디코딩조차 하지 않습니다. 자른다고 해서 어느 프레임의 모습도 달라지지 않으므로, 표시한 구간의 인코딩된 프레임을 찾아낸 그 모습 그대로 새 파일로 옮깁니다. 각 프레임은 바이트 자체가 아니라 디스크의 어느 바이트인지를 적은 메모로 보관되고, 브라우저는 내려받기를 쓰는 순간에야 그것을 처음으로 읽습니다. 여기서 영상이 다시 그림으로 돌아가는 일은 없습니다.
표시 파일은 이 페이지에서 만들어집니다. 표시를 저장하면 이미 화면에 있는 숫자로 텍스트 파일을 만들어 곧장 다운로드로 보냅니다. 불러올 때도 여기서 읽습니다. 어느 쪽도 네트워크 근처에 가지 않고, 어느 쪽도 시각 말고는 아무것도 싣지 않습니다.
소리는 복사만 할 뿐 듣지 않습니다. 두 MP4 경로 모두에서 오디오 샘플이 디코딩조차 되지 않은 채로 옮겨집니다. 여기서는 그것을 소리로 되돌리는 일이 없고, 되돌린다 해도 어디로 넘길 방법이 없습니다.
프레임을 디코딩하는 자리도 여기입니다. 정확히 자르는 경로와, 이 브라우저가 재생하지 못하는 파일의 미리보기는 내 기기에서 WebCodecs를 지나갑니다. 어차피 그 영상을 보여 줬을 바로 그 디코더가, 바로 그 자리에서 도는 것입니다.
구글이 불러오는 것과, 구글에게 주지 않는 것. 광고와 측정 스크립트는 구글에서 옵니다. 어느 쪽에도 내 영상에 관한 것은 넘어가지 않습니다. 파일도, 프레임도, 이름도, 용량도, 길이도, 어디를 잘랐는지도요. 읽고 자르고 쓰는 코드는 한 줄도 빠짐없이 이 출처에서 제공되고 저장소에 공개되어 있습니다.
후원 버튼이 불러오는 것과, 후원 버튼이 받지 못하는 것. 헤더의 "Buy me a coffee" 버튼은 cdnjs.buymeacoffee.com의 스크립트가 그리고, 글꼴은 Google Fonts에서 가져옵니다. 그저 링크일 뿐이에요. 방문을 보고하지도, 나에 관한 것이나 내 영상에 관한 것을 받아 가지도 않습니다.
오프라인에서도 동작합니다. 네트워크를 끊어도 이 페이지의 기능이 전부 그대로 돌아갑니다. 가장 간단한 증거입니다.
직접 확인해 보세요. 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 dist 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다:
먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 config/site.toml, 표시와 그것이 저장되는 파일은 src/segments.js, MP4 안에서 프레임을 찾아내는 리더는 src/shared/mp4-reader.js, 표시 하나를 샘플의 구간으로 바꾸는 산술은 src/ranges.js, 그 샘플을 새 파일로 옮기는 반복문은 src/copy.js에 있습니다. 어느 것도 요청을 보낼 수 있는 무언가를 불러오지 않습니다.
회사 보안 소프트웨어가 업로드를 경고한다면. 그것은 브라우저에서 파일이 선택되는 순간을 지켜보며, 페이지가 그것을 보낼 생각인지는 알 수 없습니다 — 그래서 고르는 순간에 경고합니다. 여기서는 아무것도 보내지 않습니다. 브라우저 개발자 도구를 열고 네트워크 탭으로 옮긴 뒤 파일을 골라 보세요. 그것을 실어 나르는 요청은 없고, 이 페이지 자체의 로컬 미리보기 말고는 요청 자체가 없습니다. 같은 확인을 IT 팀도 삼십 초면 할 수 있습니다.
1 동영상 고르기
2 원하는 구간 표시하기
끝까지 재생하면서 구간이 시작되어야 할 곳에서 I를, 끝나야 할 곳에서 O를 누르세요. 몇 번을 해도 됩니다. 짝이 맞을 때마다 아래에 한 줄이 생기고, 완성된 영상은 그 줄들을 차례로 이어 붙인 것입니다. U는 마지막 것을 되돌리고, Space는 재생과 일시정지, 방향키는 5초씩 건너뜁니다.
표시는 평범한 텍스트 파일로 저장됩니다. 구간 하나가 한 줄이고, 형식은 위에서 고른 그대로예요. 그래서 오래 걸린 표시 작업이 탭을 닫아도 살아남고, 같은 파일을 그 배치를 읽는 어느 도구에든 건넬 수 있습니다.
0:00.0000:00.000
속도
구간 아직 없음
남는 길이 합계 0:00.000
#
시작
끝
길이
동작
아직 표시한 것이 없습니다. 재생하면서 I 다음에 O를 누르거나, 위의 버튼을 쓰세요.
3 잘라내기
화면 크기 한 크기가 파일 전체에 적용됩니다. 비율이 다른 영상은 늘이지 않고 띠를 넣어 그 안에 맞춥니다.
화질 원본이 쓴 것보다 더 쓰지는 않습니다. 그 위로 다시 인코딩해 봐야 파일만 커지니까요.
클립 {n}이을 것이 없습니다.{name}은 이 판독기가 이해하는 MP4가 아니어서 그 프레임을 복사할 수 없습니다.{name}은 {size}이고 첫 클립은 {first}입니다.{name}은 {degrees}도 돌려서 저장되었고 첫 클립은 {first}도 돌아가 있습니다.{name}은 {degrees}도 돌려서 저장되었고 첫 클립은 돌아가 있지 않습니다.{name}은 {codec}이고 첫 클립은 {first}입니다.{name}은 첫 클립과 같은 코덱이지만 다른 설정으로 인코딩되어서, 하나의 설명으로 둘을 다 덮을 수 없습니다.클립 하나를 읽지 못했습니다.{name}에는 소리가 없고 다른 것들에는 있어서, 복사하면 도중에 조용해집니다.{name}은 {rate} Hz의 {channels}채널 소리이고 첫 클립은 {firstrate} Hz의 {firstchannels}채널입니다.{name}은 소리가 첫 클립과 다르게 인코딩되어 있습니다.내부 오류: 소리 설명이 예상보다 큽니다.소리는 디코딩되었지만 인코더에서 아무것도 돌아오지 않았습니다.남길 것으로 선택된 것이 없습니다.이 브라우저는 {size}로 H.264를 인코딩하지 않습니다. 더 작은 프레임을 고르거나, 아무것도 인코딩하지 않는 «모든 바이트 그대로»를 쓰세요.고르신 것에서 프레임을 하나도 디코딩하지 못했습니다.이 파일에서 프레임을 하나도 디코딩하지 못했습니다.인코더가 디코더 설정을 한 번도 알려 주지 않았습니다.이 브라우저는 잘라내려고 파일을 재생하지 못했습니다.파일을 여는 데 너무 오래 걸렸습니다.브라우저가 그 구간의 처음으로 이동하지 못했습니다.이 브라우저는 영상을 다시 인코딩하지도, 녹화하지도 못합니다.그 파일에서 구간을 하나도 읽지 못했습니다. 첫 줄 뒤의 각 줄은 시작과 끝을 쉼표로 나눠 적어야 합니다.녹화하는 동안 탭이 뒤에 있어서 빠진 프레임이 있을 수 있습니다. 깔끔한 결과를 원하면 이 탭을 앞에 두고 다시 돌리세요.이 브라우저에서는 소리를 담지 못해서 결과에 오디오 트랙이 없습니다.이 클립들은 소리를 서로 다르게 설명해서, 이으려면 다시 인코딩해야 했습니다 — 그런데 이 브라우저는 AAC를 인코딩하지 않습니다. 영상은 소리 없이 이었습니다. 크롬과 엣지는 해냅니다.{a} {b}{n} KB{n} MB{n} GB{minutes}분 {seconds}초{n}초이 영상에 표시하기구간 1개구간 {n}개표시 없음소리 있음소리 없음자르려고 녹화함{name} — {total}개 가운데 {index}번째이 브라우저는 이 영상을 재생하지 않아서, 표시가 어디 있는지 보여 주려고 아래 프레임을 하나씩 디코딩합니다. 자르는 것 자체에는 영향이 없습니다.이 브라우저는 이 영상을 재생하지 않고, 프레임 하나도 디코딩하지 못했습니다({detail}). 아래 표시는 영상 길이 위에서는 그대로 동작합니다.아직 열린 것이 없습니다. 구간이 시작할 자리에서 I를, 끝날 자리에서 O를 누르세요.그러면 구간이 {at}에서 끝나는데, 시작인 {start}보다 앞입니다. 재생 위치를 시작 뒤로 먼저 옮기세요.여기에는 구간을 더할 만큼 영상이 남아 있지 않습니다. 재생 위치를 뒤로 옮기세요.{name}의 구간 {n}개를 모두 지울까요?아직 없음 — 영상 전체{total}개 가운데 {done}개이 구간 재생위로아래로지우기저장할 표시가 아직 없습니다.{name}의 모든 구간이 이 영상이 끝난 뒤에 시작합니다. 아마 다른 영상에 표시한 것 같습니다.{name}의 구간 1개가 이 영상의 끝을 지나 시작해서 빠졌습니다.{name}의 구간 {n}개가 이 영상의 끝을 지나 시작해서 빠졌습니다.1줄을 구간으로 읽지 못했습니다.{n}줄을 구간으로 읽지 못했습니다.{n}개를 불러왔습니다.{name}을 읽지 못했습니다: {reason}이 영상들은 다시 인코딩하지 않고는 이을 수 없습니다: {reason} 트랙 하나는 그 안에 무엇이 있는지에 대한 설명을 하나만 담으므로, 서로 맞지 않는 영상은 설명 하나를 함께 쓰도록 다시 써야 합니다.프레임이 있는 그대로 새 파일로 옮겨지므로 아무것도 디코딩하지 않고 아무것도 인코딩하지 않습니다. 빠르고, 품질이 깎일 수가 없습니다. 각 부분은 표시 앞의 가장 가까운 키프레임에서 시작합니다.표시한 부분마다 있는 그대로, 하나씩 차례로 새 파일로 옮겨집니다. 아무것도 디코딩하지 않고 아무것도 인코딩하지 않으므로, 이 과정의 어느 부분도 품질을 깎지 않습니다.각 부분은 표시한 바로 그 프레임에서 시작합니다. 그 앞의 키프레임부터 디코딩해 그림을 다시 인코딩하기 때문입니다. 소리는 다시 인코딩하지 않고 그대로 복사합니다.영상마다 디코딩해서 하나의 스트림으로 다시 쓰므로, 크기나 코덱이 맞지 않는 영상도 이을 수 있습니다. 소리는 맞는 곳에서는 복사하고 맞지 않는 곳에서는 다시 인코딩합니다.표시한 부분을 끝까지 재생하면서 녹화하므로, 그 부분 길이 만큼 걸리고 모든 것이 다시 인코딩됩니다. 돌아가는 동안 이 탭을 앞에 두세요.여기에는 오디오 트랙이 없어서 남길 것도 없습니다.재생에서 담아 다시 인코딩했습니다. 녹화가 할 수 있는 것은 그것뿐이니까요.이 영상들은 소리를 서로 다르게 설명해서, 결과 전체에 대해 한 번 디코딩하고 인코딩합니다. 이 도구에서 소리가 그대로 넘어가지 않는 유일한 경우입니다.파일에서 샘플 단위로 복사하고 한 번도 디코딩하지 않으므로 잃는 것이 없습니다.없음 — 표시가 영상 전체를 덮습니다표시한 것 없음1군데{n}군데표시한 것들이 빠지고 나면 {parts}영상 {n}개에서 {parts}표시한 자리 그대로(키프레임 위입니다)표시한 자리 그대로, 편집 표시를 통해표시한 자리 그대로첫 표시 앞의 가장 가까운 키프레임은 {seconds}초 앞에 있고, 그 사이 프레임들은 파일에 남아야 합니다 — 그것들 없이는 뒤의 어떤 것도 디코딩되지 않으니까요. 그 프레임들은 재생하지 말라고 표시되어 있고, 주요 재생기는 모두 이를 지킵니다. 편집 표시를 무시하는 재생기는 그 {seconds}초를 앞에 보여 줍니다. 원래 바이트를 지키는 것보다 그것이 더 중요하면 «바로 여기서 자르기»를 고르세요.약 {size}복사됨, 프레임 그대로H.264로 다시 인코딩, {size}H.264로 다시 인코딩, {size}({n}개는 여백을 넣어 맞춤)재생하면서 녹화이 영상에는 없음넣지 않음재생에서 다시 인코딩한 번 디코딩하고 다시 인코딩복사됨, 샘플 그대로영상 자르기{n}군데를 자르고 잇기준비하는 중…파일을 쓰는 중…소리를 인코딩하는 중 — {total}개 가운데 {done}개{total}개 가운데 {done}번째 샘플을 복사하는 중({percent}%)실시간으로 녹화하는 중 — {total} 가운데 {done}({percent}%){total}개 가운데 {done}번째 프레임({percent}%)표시가 영상 전체를 덮고 있어서, 그것을 잘라내면 남는 것이 없습니다.남길 것으로 표시한 것이 없습니다. 재생하는 동안 I와 O를 누르세요.{n}군데다시 인코딩하지 않음무언가 잘못되었습니다.파일이 프레임 한가운데에서 끝났습니다.H.264 설정 레코드가 너무 짧습니다.HEVC 설정 레코드가 너무 짧습니다.AV1 설정 레코드가 너무 짧습니다.샘플 크기가 이 리더는 풀지 않는 압축 표에 들어 있습니다.샘플 테이블이 온전하지 않습니다.청크 테이블이 비어 있습니다.그 트랙에는 샘플이 하나도 없습니다.비디오 트랙에 샘플 테이블이 없습니다.비디오 트랙에 샘플 설명이 없습니다.비디오의 샘플 설명이 비어 있습니다.비디오 트랙이 암호화되어 있습니다.이 영상은 “{type}” 형식으로 저장되어 있는데, 이 리더가 모르는 형식입니다.“{type}” 트랙은 디코더 설정을 함께 담고 있지 않습니다.MP4도 MOV도 아닙니다.파일에 무비 헤더가 없습니다.이 파일에는 이 리더가 쓸 수 있는 비디오 트랙이 없습니다.비디오 트랙에 타임스케일이 없습니다.이 파일의 프래그먼트에는 비디오 트랙의 프레임이 하나도 없습니다.이 파일은 MP4로 읽히지 않았습니다.이 형식은 이 브라우저가 재생하는 형식이 아닙니다.이 파일의 구성은 여기 리더가 이해하는 구성이 아닙니다.오디오 트랙에 샘플 항목이 없습니다.비디오 트랙에 샘플 항목이 없습니다.내부 오류: 두 번의 패스 사이에서 moov 크기가 달라졌습니다.고른 구간에 프레임이 하나도 없습니다.잘라낸 영상이 여기서 쓸 때 다룰 수 있는 4 GB 한계를 넘습니다. 더 짧은 구간을 고르세요.이 브라우저는 {name}을 녹화하지 못해서, 자르지도 못합니다.{name}을 열지 못했습니다. {reason}{reason} 그래서 {name}은 재생하면서 그 결과를 녹화하는 방식으로 자릅니다. 결과 길이만큼 시간이 걸리고, 복사가 아니라 전부 다시 인코딩되며, 구간은 하나만 남길 수 있습니다.동영상은 어디로도 가지 않았습니다. 파일 {total}개를 불러왔습니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일을 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일을 받지 않았습니다.
원하는 결과가 나왔나요?
무엇이 잘못됐나요?
고맙습니다 — 큰 도움이 됩니다.
보내지는 것은 답변뿐이고, 그것도 버튼을 눌렀을 때만입니다. 파일도, 파일 이름도, 파일에 관한 어떤 정보도 보내지 않습니다.
# 동영상 구간 자르기 — 온라인에서 영상 자르기
재생하면서 남길 구간을 표시하세요. 그 구간들이 영상 하나로 돌아옵니다.
> 영상을 보면서 남길 만한 구간을 그때그때 표시하고, 그 구간들을 파일 하나로 저장합니다. 브라우저에서 돌아갑니다. 업로드 없음, 재인코딩 없음, 오프라인 동작.
이 페이지는 브라우저 안에서만 동작하는 대화형 도구입니다(https://abox.tools/ko/동영상-자르기/). 도구에 넘긴 어떤 것도 업로드되지 않습니다. 아래는 이 페이지가 도구에 대해 글로 설명하는 내용 전부입니다. 도구를 쓰려면 이 주소를 여세요.
## 동영상은 **절대 업로드되지 않습니다**. 서버가 아예 없으니까요.
영상을 읽고 표시하고 자르고 쓰는 일은 내 브라우저가 내 기기의 성능으로 합니다. 이 도구에는 네트워크 기능이 아예 없어서 무언가를 가져올 수도 보낼 수도 없습니다. 설령 있더라도 이 페이지 반대편에는 영상을 받아 줄 서버가 없습니다.
- ✗ 업로드 없음
- ✗ 가입 없음
- ✗ 워터마크 없음
- ✓ 구간은 몇 개든
- ✓ 화질 손실 없음
- ✓ 오프라인 동작
## 동영상을 자르는 방법
1. **동영상을 고릅니다.** MP4, MOV, M4V, WebM을 선택 영역에 끌어다 놓으세요. 브라우저가 디스크에서 곧바로 읽습니다. 그동안 어디로도 아무것도 나가지 않습니다. 여러 개를 놓으면 넣은 순서대로 이어 붙입니다.
2. **재생하면서 원하는 구간을 표시합니다.** 구간이 시작되어야 할 곳에서 `I`를, 끝나야 할 곳에서 `O`를 누르세요. 몇 번을 해도 됩니다. 짝이 맞을 때마다 아래 표에 한 줄이, 타임라인에 띠가 하나 생깁니다. `U`는 마지막 것을 되돌리고, `Space`는 재생과 일시정지, 방향키는 5초씩 건너뜁니다. 순간을 잡기 어렵다면 재생 속도를 늦추세요.
3. **표시를 다듬습니다.** 각 줄은 따로 재생해 볼 수 있고, 정확한 시각을 입력해 다시 잡을 수도 있고, 순서를 위아래로 옮기거나 지울 수도 있습니다. 선택한 구간의 양 끝은 타임라인 위에서 끌어 옮길 수도 있습니다. 위쪽의 합계가 완성된 영상의 길이입니다.
4. **남기거나, 도려냅니다.** 남기는 쪽이 보통입니다. 완성된 영상은 표시한 구간을 순서대로 이어 붙인 것이에요. 도려내기는 사람들이 원하면서도 좀처럼 찾지 못하는 반대쪽 일입니다. 광고나 침묵, 더듬은 시작 부분을 표시하면 그것들을 뺀 나머지가 이어 붙습니다.
5. **자르고, 내려받습니다.** "모든 바이트 그대로"는 프레임을 손대지 않고 옮깁니다. 빠르고 화질을 깎을 수 없지만, 각 구간이 표시한 지점 앞의 키프레임에서 시작합니다. "정확히 여기서 자르기"는 화면을 디코딩해 다시 쓰기 때문에 모든 구간이 고르신 프레임에서 시작합니다. 버튼을 누르기 전에, 어느 쪽을 받게 되고 그 대가가 무엇인지 페이지가 말해 줍니다.
## 자세한 설명
[다시 인코딩하지 않고 동영상을 자르는 방법](https://abox.tools/ko/가이드/동영상-구간-자르기/): 영상을 자르는 데 화질을 단 1바이트도 잃을 필요는 없습니다. 자른 지점이 가끔 표시한 곳보다 앞으로 가는 이유, 키프레임이 그것과 무슨 상관인지, 그리고 언제 재인코딩을 받아들일지.
## 상자 속 다른 도구
- [동영상 화면 자르기](https://abox.tools/ko/동영상-화면-자르기/): 필요한 부분만 남기고 화면을 도려냅니다.
- [동영상 거꾸로 재생](https://abox.tools/ko/동영상-거꾸로-재생/): 마지막 프레임부터, 소리까지 함께.
- [타임랩스 만들기](https://abox.tools/ko/타임랩스-만들기/): 한 시간짜리 영상을 20초로.
- [동영상 캡처](https://abox.tools/ko/동영상-캡처/): 어느 지점이든, 원본 화질 그대로 한 장.
## 자주 묻는 질문
### 제 동영상이 어딘가로 업로드되나요?
아닙니다. 읽고 표시하고 자르고 쓰는 일은 내 기기에서 도는 내 브라우저가 합니다. 이 도구에는 서버 쪽이라는 것이 없고, 이 페이지의 `Content-Security-Policy`에 연결해도 되는 주소가 전부 적혀 있는데 그중 이 사이트 것은 하나도 없습니다. 말로 듣기보다 직접 확인하고 싶다면, 인터넷을 끊고 그냥 영상을 잘라 보세요.
### 같은 영상에서 여러 구간을 남길 수 있나요?
그러라고 만든 도구입니다. 재생하는 동안 `I`와 `O`를 원하는 만큼 누르세요. 짝마다 한 줄이 되고, 완성된 영상은 그 줄들을 순서대로 이어 붙인 것이며 나머지는 전부 사라집니다. 대부분의 온라인 커터는 손잡이 한 쌍만 주고 어느 한 구간을 남길지 묻습니다. 클립의 앞뒤를 다듬는 데는 괜찮지만, 한 시간짜리 영상을 한 번 보면서 건질 만한 여섯 순간을 남기는 데는 전혀 쓸모가 없지요.
### 자르면 화질이 떨어지나요?
일반 경로에서는 떨어지지 않고, 중요한 의미에서도 그렇지 않습니다. 자른다고 어느 프레임의 모습도 달라지지 않으므로 프레임을 있던 그대로 새 파일로 옮깁니다. 같은 바이트, 같은 인코더 설정, 무엇 하나 다르지 않습니다. 여기서 무언가를 다시 인코딩하는 경로는 정확히 자르기뿐이고, 그건 버튼에 적혀 있습니다.
### 왜 구간이 표시한 곳보다 앞에서 시작하나요?
영상이 저장되는 방식 때문이고, 형식의 표준적인 부분을 무시하는 플레이어에서만 그렇습니다. 대부분의 프레임은 이웃 프레임과 무엇이 다른지를 적어 둔 형태라 이웃 없이는 디코딩할 수 없습니다. 혼자 설 수 있는 것은 키프레임뿐이고, 키프레임은 보통 1초에서 10초 간격입니다. 그래서 프레임을 복사하는 방식의 자르기는 표시한 지점 앞의 키프레임부터 구간을 실어 와야 합니다. 대신 파일에는 *표시한 지점부터 재생하라*고 적히고, 주요 플레이어는 전부 그걸 지킵니다. 어느 플레이어에서든 정확해야 한다면 다시 인코딩하는 "정확히 여기서 자르기"를 고르세요. 내보내기 전에 지금이 어느 경우이고 차이가 얼마인지 페이지가 알려 줍니다.
### 광고를 도려낼 수도 있나요?
됩니다. 광고를 표시한 다음 "도려내기"를 고르세요. 표시하지 *않은* 부분이 대신 순서대로 이어 붙습니다. 같은 표시 목록이 두 질문에 다 답하므로, 두 번 표시할 필요 없이 오가면서 길이가 어떻게 달라지는지 볼 수 있습니다.
### 표시를 저장해 두었다가 나중에 이어서 할 수 있나요?
됩니다. "표시 저장"은 구간 하나가 한 줄이고 시작과 끝을 쉼표로 나눈 평범한 텍스트 파일을 쓰고, "표시 불러오기"가 그걸 다시 읽습니다. 형식은 두 가지, 초 단위와 `HH:MM:SS.mmm`이고, 둘 다 이런 방식으로 동작하는 다른 도구들이 이미 쓰는 배치를 따릅니다. 그래서 여기서 쓴 파일을 그쪽에 건넬 수 있고, 그쪽에서 쓴 파일을 이 페이지에 놓을 수도 있습니다. 표시는 공들여야 하는 일이고, 아무도 그것을 두 번 해서는 안 되니까요.
### 어떤 영상 형식을 자를 수 있나요?
MP4, M4V, MOV는 안에 무엇이 들었든 곧바로 읽습니다. H.264, HEVC, AV1, VP9 무엇이든요. 프레임을 복사하는 데는 디코딩이 필요 없으므로, 브라우저에 디코더가 아예 없는 코덱에도 이 경로는 통합니다. 브라우저가 재생할 수 있는 나머지, 대표적으로 WebM은 재생하면서 결과를 녹화하는 방식으로 잘립니다. 되기는 되지만 결과 길이만큼 시간이 걸리고, 구간도 하나만 남길 수 있습니다. 브라우저가 읽지도 재생하지도 못하는 파일, 실제로는 AVI, WMV, FLV와 대부분의 MKV는 중간에 실패하는 대신 그렇다는 메시지와 함께 거부합니다.
### 영상 용량이나 길이에 제한이 있나요?
도구에 정해 둔 제한은 없고, 복사 경로에서는 파일을 거의 읽지도 않습니다. 남기는 프레임은 불러오는 것이 아니라 가리키기만 하므로, 4기가바이트짜리 녹화에서 4분을 남기는 비용은 그 4분을 디스크에 쓰는 비용과 비슷합니다. 정확히 자르기는 파일을 몇 메가바이트씩 훑고 지나갑니다. 어느 쪽이든 현실적인 한계는 내려받기 전에 메모리에서 조립되는 완성 파일입니다.
### 소리는 살아남나요?
두 MP4 경로 모두에서 디코딩 없이 샘플 단위로 복사되므로 파일에 들어 있던 것과 바이트가 같고, 편집 표시가 모든 구간을 그 화면과 1000분의 1초 안쪽으로 맞춰 둡니다. 예외가 하나 있습니다. 소리가 서로 다르게 기술된 영상들, 예컨대 샘플 레이트가 다른 영상들을 이어 붙일 때는 디코딩하지 않고 둘을 한 트랙에 넣을 방법이 없습니다. 그런 경우에는 하기 전에 페이지가 말해 줍니다. 녹화 경로에서는 재생되는 소리를 받아 다시 인코딩합니다. 어느 쪽이든 소리를 아예 빼는 체크박스가 있습니다.
### 무료인가요? 가입해야 하나요?
무료이고 계정도, 로그인도, 체험판도, 워터마크도 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 영상에 관한 것은 넘어가지 않습니다.
## 이 약속을 직접 확인하는 방법
- **동영상은 나갈 곳이 없습니다.** 이 페이지가 연결해도 되는 주소는 Content-Security-Policy에 모두 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 파일이 모일 만한 수신 지점이 없고, 설령 있더라도 거기로 파일을 보낼 코드가 없습니다.
- **여기서는 아무것도 가져오지 않습니다.** 이 도구에는 네트워크 기능이 아예 없습니다. 붙여 넣을 주소도, 내려받을 것도, 처음 쓸 때 가져오는 엔진도 없어요. 내 영상에 닿는 모든 바이트는 페이지를 불러올 때 이 출처에서 온 것입니다.
- **일반 경로에서는 디코딩조차 하지 않습니다.** 자른다고 해서 어느 프레임의 모습도 달라지지 않으므로, 표시한 구간의 인코딩된 프레임을 찾아낸 그 모습 그대로 새 파일로 옮깁니다. 각 프레임은 바이트 자체가 아니라 디스크의 어느 바이트인지를 적은 메모로 보관되고, 브라우저는 내려받기를 쓰는 순간에야 그것을 처음으로 읽습니다. 여기서 영상이 다시 그림으로 돌아가는 일은 없습니다.
- **표시 파일은 이 페이지에서 만들어집니다.** 표시를 저장하면 이미 화면에 있는 숫자로 텍스트 파일을 만들어 곧장 다운로드로 보냅니다. 불러올 때도 여기서 읽습니다. 어느 쪽도 네트워크 근처에 가지 않고, 어느 쪽도 시각 말고는 아무것도 싣지 않습니다.
- **소리는 복사만 할 뿐 듣지 않습니다.** 두 MP4 경로 모두에서 오디오 샘플이 디코딩조차 되지 않은 채로 옮겨집니다. 여기서는 그것을 소리로 되돌리는 일이 없고, 되돌린다 해도 어디로 넘길 방법이 없습니다.
- **프레임을 디코딩하는 자리도 여기입니다.** 정확히 자르는 경로와, 이 브라우저가 재생하지 못하는 파일의 미리보기는 내 기기에서 WebCodecs를 지나갑니다. 어차피 그 영상을 보여 줬을 바로 그 디코더가, 바로 그 자리에서 도는 것입니다.
- **구글이 불러오는 것과, 구글에게 주지 않는 것.** 광고와 측정 스크립트는 구글에서 옵니다. 어느 쪽에도 내 영상에 관한 것은 넘어가지 않습니다. 파일도, 프레임도, 이름도, 용량도, 길이도, 어디를 잘랐는지도요. 읽고 자르고 쓰는 코드는 한 줄도 빠짐없이 이 출처에서 제공되고 저장소에 공개되어 있습니다.
- **후원 버튼이 불러오는 것과, 후원 버튼이 받지 못하는 것.** 헤더의 "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/segments.js`, MP4 안에서 프레임을 찾아내는 리더는 `src/shared/mp4-reader.js`, 표시 하나를 샘플의 구간으로 바꾸는 산술은 `src/ranges.js`, 그 샘플을 새 파일로 옮기는 반복문은 `src/copy.js`에 있습니다. 어느 것도 요청을 보낼 수 있는 무언가를 불러오지 않습니다.
동영상을 자르는 방법
동영상을 고릅니다. MP4, MOV, M4V, WebM을 선택 영역에 끌어다 놓으세요. 브라우저가 디스크에서 곧바로 읽습니다. 그동안 어디로도 아무것도 나가지 않습니다. 여러 개를 놓으면 넣은 순서대로 이어 붙입니다.
재생하면서 원하는 구간을 표시합니다. 구간이 시작되어야 할 곳에서 I를, 끝나야 할 곳에서 O를 누르세요. 몇 번을 해도 됩니다. 짝이 맞을 때마다 아래 표에 한 줄이, 타임라인에 띠가 하나 생깁니다. U는 마지막 것을 되돌리고, Space는 재생과 일시정지, 방향키는 5초씩 건너뜁니다. 순간을 잡기 어렵다면 재생 속도를 늦추세요.
표시를 다듬습니다. 각 줄은 따로 재생해 볼 수 있고, 정확한 시각을 입력해 다시 잡을 수도 있고, 순서를 위아래로 옮기거나 지울 수도 있습니다. 선택한 구간의 양 끝은 타임라인 위에서 끌어 옮길 수도 있습니다. 위쪽의 합계가 완성된 영상의 길이입니다.
남기거나, 도려냅니다. 남기는 쪽이 보통입니다. 완성된 영상은 표시한 구간을 순서대로 이어 붙인 것이에요. 도려내기는 사람들이 원하면서도 좀처럼 찾지 못하는 반대쪽 일입니다. 광고나 침묵, 더듬은 시작 부분을 표시하면 그것들을 뺀 나머지가 이어 붙습니다.
자르고, 내려받습니다. "모든 바이트 그대로"는 프레임을 손대지 않고 옮깁니다. 빠르고 화질을 깎을 수 없지만, 각 구간이 표시한 지점 앞의 키프레임에서 시작합니다. "정확히 여기서 자르기"는 화면을 디코딩해 다시 쓰기 때문에 모든 구간이 고르신 프레임에서 시작합니다. 버튼을 누르기 전에, 어느 쪽을 받게 되고 그 대가가 무엇인지 페이지가 말해 줍니다.
자세한 설명
다시 인코딩하지 않고 동영상을 자르는 방법영상을 자르는 데 화질을 단 1바이트도 잃을 필요는 없습니다. 자른 지점이 가끔 표시한 곳보다 앞으로 가는 이유, 키프레임이 그것과 무슨 상관인지, 그리고 언제 재인코딩을 받아들일지.
아닙니다. 읽고 표시하고 자르고 쓰는 일은 내 기기에서 도는 내 브라우저가 합니다. 이 도구에는 서버 쪽이라는 것이 없고, 이 페이지의 Content-Security-Policy에 연결해도 되는 주소가 전부 적혀 있는데 그중 이 사이트 것은 하나도 없습니다. 말로 듣기보다 직접 확인하고 싶다면, 인터넷을 끊고 그냥 영상을 잘라 보세요.
같은 영상에서 여러 구간을 남길 수 있나요?
그러라고 만든 도구입니다. 재생하는 동안 I와 O를 원하는 만큼 누르세요. 짝마다 한 줄이 되고, 완성된 영상은 그 줄들을 순서대로 이어 붙인 것이며 나머지는 전부 사라집니다. 대부분의 온라인 커터는 손잡이 한 쌍만 주고 어느 한 구간을 남길지 묻습니다. 클립의 앞뒤를 다듬는 데는 괜찮지만, 한 시간짜리 영상을 한 번 보면서 건질 만한 여섯 순간을 남기는 데는 전혀 쓸모가 없지요.
자르면 화질이 떨어지나요?
일반 경로에서는 떨어지지 않고, 중요한 의미에서도 그렇지 않습니다. 자른다고 어느 프레임의 모습도 달라지지 않으므로 프레임을 있던 그대로 새 파일로 옮깁니다. 같은 바이트, 같은 인코더 설정, 무엇 하나 다르지 않습니다. 여기서 무언가를 다시 인코딩하는 경로는 정확히 자르기뿐이고, 그건 버튼에 적혀 있습니다.
왜 구간이 표시한 곳보다 앞에서 시작하나요?
영상이 저장되는 방식 때문이고, 형식의 표준적인 부분을 무시하는 플레이어에서만 그렇습니다. 대부분의 프레임은 이웃 프레임과 무엇이 다른지를 적어 둔 형태라 이웃 없이는 디코딩할 수 없습니다. 혼자 설 수 있는 것은 키프레임뿐이고, 키프레임은 보통 1초에서 10초 간격입니다. 그래서 프레임을 복사하는 방식의 자르기는 표시한 지점 앞의 키프레임부터 구간을 실어 와야 합니다. 대신 파일에는 표시한 지점부터 재생하라고 적히고, 주요 플레이어는 전부 그걸 지킵니다. 어느 플레이어에서든 정확해야 한다면 다시 인코딩하는 "정확히 여기서 자르기"를 고르세요. 내보내기 전에 지금이 어느 경우이고 차이가 얼마인지 페이지가 알려 줍니다.
광고를 도려낼 수도 있나요?
됩니다. 광고를 표시한 다음 "도려내기"를 고르세요. 표시하지 않은 부분이 대신 순서대로 이어 붙습니다. 같은 표시 목록이 두 질문에 다 답하므로, 두 번 표시할 필요 없이 오가면서 길이가 어떻게 달라지는지 볼 수 있습니다.
표시를 저장해 두었다가 나중에 이어서 할 수 있나요?
됩니다. "표시 저장"은 구간 하나가 한 줄이고 시작과 끝을 쉼표로 나눈 평범한 텍스트 파일을 쓰고, "표시 불러오기"가 그걸 다시 읽습니다. 형식은 두 가지, 초 단위와 HH:MM:SS.mmm이고, 둘 다 이런 방식으로 동작하는 다른 도구들이 이미 쓰는 배치를 따릅니다. 그래서 여기서 쓴 파일을 그쪽에 건넬 수 있고, 그쪽에서 쓴 파일을 이 페이지에 놓을 수도 있습니다. 표시는 공들여야 하는 일이고, 아무도 그것을 두 번 해서는 안 되니까요.
어떤 영상 형식을 자를 수 있나요?
MP4, M4V, MOV는 안에 무엇이 들었든 곧바로 읽습니다. H.264, HEVC, AV1, VP9 무엇이든요. 프레임을 복사하는 데는 디코딩이 필요 없으므로, 브라우저에 디코더가 아예 없는 코덱에도 이 경로는 통합니다. 브라우저가 재생할 수 있는 나머지, 대표적으로 WebM은 재생하면서 결과를 녹화하는 방식으로 잘립니다. 되기는 되지만 결과 길이만큼 시간이 걸리고, 구간도 하나만 남길 수 있습니다. 브라우저가 읽지도 재생하지도 못하는 파일, 실제로는 AVI, WMV, FLV와 대부분의 MKV는 중간에 실패하는 대신 그렇다는 메시지와 함께 거부합니다.
영상 용량이나 길이에 제한이 있나요?
도구에 정해 둔 제한은 없고, 복사 경로에서는 파일을 거의 읽지도 않습니다. 남기는 프레임은 불러오는 것이 아니라 가리키기만 하므로, 4기가바이트짜리 녹화에서 4분을 남기는 비용은 그 4분을 디스크에 쓰는 비용과 비슷합니다. 정확히 자르기는 파일을 몇 메가바이트씩 훑고 지나갑니다. 어느 쪽이든 현실적인 한계는 내려받기 전에 메모리에서 조립되는 완성 파일입니다.
소리는 살아남나요?
두 MP4 경로 모두에서 디코딩 없이 샘플 단위로 복사되므로 파일에 들어 있던 것과 바이트가 같고, 편집 표시가 모든 구간을 그 화면과 1000분의 1초 안쪽으로 맞춰 둡니다. 예외가 하나 있습니다. 소리가 서로 다르게 기술된 영상들, 예컨대 샘플 레이트가 다른 영상들을 이어 붙일 때는 디코딩하지 않고 둘을 한 트랙에 넣을 방법이 없습니다. 그런 경우에는 하기 전에 페이지가 말해 줍니다. 녹화 경로에서는 재생되는 소리를 받아 다시 인코딩합니다. 어느 쪽이든 소리를 아예 빼는 체크박스가 있습니다.
무료인가요? 가입해야 하나요?
무료이고 계정도, 로그인도, 체험판도, 워터마크도 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 영상에 관한 것은 넘어가지 않습니다.