이런 도구가 바꾸는 것과 바꾸지 않는 것
이 사이트의 워터마크 제거기가 다루는 대상은 하나입니다. NotebookLM에서 내보낸 영상, 슬라이드 PDF, PPTX, 인포그래픽이나 Gemini 이미지의 정해진 모서리에 있는 작은 눈에 보이는 로고입니다. 나머지 화면은 보지 않고, 파일 안의 텍스트도 읽지 않으며, SynthID 같은 보이지 않는 출처 표시도 건드리지 않습니다. 그 영역 밖은 원칙적으로 그대로여야 합니다. 다만 실제로는 파일 형식에 따라 엔진이 파일 전체를 다시 만들기 때문에 그 말이 보기보다 덜 맞습니다.
이 차이가 검수의 출발점입니다. 모서리만 고치는 도구라면 모서리만 보면 됩니다. 영상을 다시 인코딩하거나 PDF를 페이지 이미지로 다시 조립하는 도구라면 프레임레이트, 비트레이트, 재생 시간, 페이지 수, 선택 가능한 텍스트까지 파일 전체를 확인해야 합니다. 아래 내용은 짐작이 아니라 엔진 코드를 읽고 정리한 것입니다.
처리는 모두 브라우저 안에서 이루어집니다. 내려받는 것은 영상용 FFmpeg 엔진 하나이고, CDN에서 받아 실행 전에 SHA-256 값을 확인합니다. 파일을 처리하려고 업로드하지는 않습니다.
형식별로 바뀌는 것
영상 프레임, PDF 페이지, 슬라이드 속 그림, 생성형 이미지는 구조가 달라서 방식도 모두 다릅니다. 아래 표는 코드가 무엇을 하고 무엇을 다시 만드는지 정리한 것으로, 어디부터 봐야 하는지 알려 줍니다.
| 형식 | 방식 | 다시 만들어지는 것 | 먼저 확인할 것 |
|---|---|---|---|
| MP4 영상 | FFmpeg removelogo와 마스크, 시네마틱은 delogo. 일반 가로 영상은 첫 로고 감지 시점 근처부터, 실패하면 전체 영상 처리 | 모든 프레임을 libx264로 다시 인코딩, 오디오는 그대로 복사 | 여러 시점의 모서리, 프레임레이트, 재생 시간, 음성 동기화 |
| PDF(Fast) | 페이지를 2배로 렌더링하고 바로 위에서 뽑은 색으로 모서리를 채움 | JPEG 페이지 이미지로 된 새 PDF | 눈에 띄는 패치, 페이지 수, 글자 선택 불가 |
| PDF(Pro) | 로고 상자 안의 배경 색·그라데이션·불투명도를 추정하고 주변 그림 보호. 질감에는 OpenCV Navier-Stokes 인페인팅, Pro 실패 시 흰색 채우기 | JPEG 페이지 이미지로 된 새 PDF | 흰색으로 대체된 페이지, 모서리의 질감 |
| PPTX | 전체 슬라이드 배경만 PDF 로고 영역에서 알파를 포함해 배경 기반 채우기. 질감에는 Navier-Stokes 인페인팅 | 해당 미디어 파일만 교체, 나머지 패키지는 유지 | 슬라이드가 감지됐는지, 다른 그림이 그대로인지, 파일이 열리는지 |
| 인포그래픽 | 방향별 모서리에서 알파를 포함한 배경 기반 로고 채우기. 질감에는 Navier-Stokes 인페인팅 | 다시 인코딩된 이미지 한 장 | 박스 근처의 가장자리와 반복 무늬 |
| Gemini 이미지 | 48px 또는 96px 템플릿으로 역알파 블렌딩, 로고가 감지될 때만 | 다시 인코딩된 이미지 한 장, 감지 실패 시 출력 없음 | 희미한 윤곽, 어둡거나 밝은 패치, 건너뛴 파일 |
정리되는 영역은 어디인가
각 엔진은 원본 내보내기 비율을 기준으로 정의된 고정 박스를 내 파일의 픽셀에 맞게 환산해서 처리합니다. 도구의 영역 함수를 대표적인 크기에 직접 실행해 얻은 좌표(x, y, 너비 x 높이)가 아래 표입니다. 어디를 확대해서 볼지 정확히 알 수 있습니다. 파일을 잘랐거나 비율이 다르게 줄였거나 더 새로운 레이아웃으로 내보냈다면 박스가 로고를 비껴갈 수 있습니다. 진행률 표시줄을 믿지 말고 직접 확인해야 하는 이유입니다.
| 파일 | 영역(x, y, 너비 x 높이) |
|---|---|
| 가로 영상 1920 x 1080 | 1656, 984, 200 x 45 |
| 시네마틱 영상 1920 x 1080 | 1712, 1029, 188 x 32 |
| 9:16 숏 영상 406 x 720 | 291, 688, 109 x 27 |
| 인포그래픽 2752 x 1536 가로 | 2540, 1495, 212 x 41 |
| 인포그래픽 1376 x 768 가로 | 1270, 748, 106 x 21 |
| PPTX 슬라이드 이미지, 2752 x 1536 | 2540, 1495, 212 x 41 |
| PPTX 슬라이드 이미지, 2880 x 1620(반올림한 상자 경계) | 2658, 1577, 222 x 43 |
| PDF 페이지 렌더 1920 x 1080, 고정(Fast) | 1760, 1033, 147 x 27 |
| PDF 페이지 렌더 1920 x 1080, 적응형 또는 Pro | 1772, 1051, 148 x 29 |
영상: 다시 인코딩하면 일어나는 일
영상은 항상 다시 인코딩됩니다. FFmpeg가 모든 프레임을 디코딩해 필터를 적용하고 libx264로 인코딩하므로 로고에서 먼 곳도 다시 압축됩니다. 모드는 세 가지입니다. 처음부터 로고가 있는 60초짜리 1920 x 1080 영상의 끝 2.5초를 자를 때 인자 생성 함수를 실행하면 아래 발췌 인자가 나옵니다.
어떤 모드에서도 해상도는 바뀌지 않습니다. CRF가 낮을수록 화질이 좋고 파일이 커집니다. CRF 18은 육안으로 거의 무손실에 가깝다고들 하고 23은 libx264의 기본값입니다. 프리셋이 느릴수록 같은 화질에서 압축 효율이 좋으므로, 가장 빠른 프리셋은 같은 CRF에서 파일이 더 크거나 더 높은 CRF에서 디테일이 눈에 띄게 나빠집니다. stillimage 튜닝은 슬라이드쇼 같은 영상을 위한 설정이라 정지 화면이 많은 슬라이드 영상에 맞습니다. 움직임이 많은 영상은 블록 노이즈를 확인하세요.
speed -vf removelogo=f=watermark-mask.png -r 15 -crf 28 -preset ultrafast -c:v libx264 -tune stillimage -pix_fmt yuv420p -c:a copy -movflags +faststart -t 57.5
balanced -vf removelogo=f=watermark-mask.png -r 30 -crf 23 -preset veryfast -c:v libx264 -tune stillimage -pix_fmt yuv420p -c:a copy -movflags +faststart -t 57.5
quality -vf removelogo=f=watermark-mask.png -crf 18 -preset superfast -c:v libx264 -tune stillimage -pix_fmt yuv420p -c:a copy -movflags +faststart -t 57.5영상: 로고 등장 시점과 장면 전환
일반 가로 영상은 모서리와 로고 마스크의 일치도를 보고 샘플 프레임에서 첫 로고 등장 시점을 자동으로 찾습니다. 로고가 없는 프레임과 있는 프레임 사이를 좁힌 뒤 추정 등장 시점보다 조금 먼저 정리를 시작합니다. 사용자가 켜는 스위치가 없으며, 이후 장면 전환이나 로고 위치 이동을 계속 추적하지는 않습니다. 쇼츠와 시네마틱은 이 시작 시점 감지를 쓰지 않습니다.
감지 시작이 10초라면 필터는 split[orig][work];[work]removelogo=f=watermark-mask.png[cut];[orig][cut]overlay=enable='gte(t,10)'입니다. 앞부분도 다시 인코딩되지만 제거 필터는 적용되지 않습니다. 샘플 기반 추정이라 조금 일찍 시작할 수 있고, 샘플 사이에 잠깐 보이는 로고는 놓칠 수 있습니다.
맞는 샘플 프레임이 없으면 전체 영상을 정리합니다. 로고가 없는 도입부와 장면 전환 전후를 모두 확인하세요. 첫 등장 시점 검사만으로 나중에 로고가 없는 모서리까지 보호되는 것은 아닙니다.
PDF와 PPTX: 다시 조립된 페이지와 수정된 슬라이드
정리된 PDF는 새 문서입니다. 각 페이지를 2배로 렌더링한 뒤 품질 0.9의 JPEG로 넣으므로 텍스트·링크·책갈피·양식이 이어지지 않습니다. 페이지 수와 포인트 단위 원래 크기는 유지되고 렌더링 픽셀만 2배가 됩니다. Pro는 로고 상자의 배경 색·그라데이션·불투명도를 추정하고 주변 그림을 보호하며 질감에는 Navier-Stokes 인페인팅을 씁니다. Pro 처리가 실패하면 흰 사각형으로 대체하고 요약에 셉니다. PDF Fast·PPTX·인포그래픽은 모서리 교체 안내를 보여 줍니다. 로고 존재 확인 없이 상자를 처리해 페이지 번호·푸터·그림도 바뀔 수 있으니 전후를 비교하세요.
정리된 PPTX는 같은 패키지를 부분 수정한 복사본입니다. 도구는 슬라이드별 관계 정보를 읽고, 슬라이드 배경이거나 슬라이드의 90% 이상을 덮는 PNG·JPEG 미디어만 고쳐 씁니다. 레이아웃, 마스터, 노트 페이지나 더 작은 그림과 공유되는 이미지, 긴 변이 1,000픽셀 미만인 이미지는 건드리지 않습니다. 고쳐진 이미지는 같은 형식으로 다시 인코딩되고(JPEG는 품질 0.95) 압축 파일이 다시 만들어집니다. 텍스트 상자, 도형, 노트, 전환 효과는 그대로입니다. 다만 슬라이드가 통이미지인 덱에는 애초에 잃을 편집 가능한 텍스트가 없습니다. 슬라이드 전체 이미지가 하나도 없으면 도구는 파일을 만들지 않고 안내 메시지를 띄우며, 요약에는 건너뛴 이미지 수도 나옵니다.
Gemini 이미지와 인포그래픽
인포그래픽은 방향별 로고 상자 안에서 배경 색·그라데이션·불투명도를 추정하고 주변 그림을 보호하며 로고 픽셀을 바꿉니다. 잔잔한 배경은 비슷한 입자감을 더해 다시 만들고, 질감이 있는 배경은 Navier-Stokes 인페인팅을 씁니다. 바뀐 픽셀의 알파도 배경에 맞춰 복원해 반투명 로고 가장자리가 남지 않게 합니다. PNG·JPEG·WebP·원본 형식으로 다시 인코딩하며 EXIF는 복사하지 않습니다. PNG·WebP는 투명도를 지원하지만 JPEG는 흰 바탕으로 합쳐집니다. 선택한 형식에서 색과 투명도를 모두 확인하세요.
Gemini 방식은 다릅니다. 눈에 보이는 마크를 반투명한 흰색 레이어로 보고 합성을 되돌립니다. 원래 값 = (관측값 - 255 x 알파) / (1 - 알파)이고 결과는 0~255로 제한합니다. 템플릿은 48px이고 가로세로가 모두 1,024px보다 크면 96px이며, 여백은 32px 또는 64px입니다. 아무것도 고치기 전에 템플릿이 모서리와 얼마나 일치하는지 점수를 냅니다. 도구의 함수에 직접 값을 넣어 보면 알파 0.30에서 관측값 200은 176, 관측값 120은 62가 나옵니다. 일치도가 충분하지 않으면 이미지는 건너뛰고 출력이 만들어지지 않으므로, 20장을 넣어도 20장이 나오지 않을 수 있습니다. 개수를 세어 보세요.
템플릿이 적용된 경우에는 오류가 채우기와 다르게 보입니다. 마크의 희미한 윤곽이 남아 있으면 알파 추정이 낮았던 것이고, 살짝 어두운 패치가 보이면 높았던 것입니다. 하늘이나 스튜디오 배경처럼 매끄러운 그러데이션에서 두 가지를 모두 찾아보세요. 역블렌딩은 숨을 질감이 없는 곳에서 가장 잘 드러납니다.
눈으로 하는 검수 체크리스트
아래 순서대로 보고, 진행률이 끝났다는 이유로 단계를 건너뛰지 마세요. 도구의 전후 비교 슬라이더가 도움이 되지만 보여 주는 것은 첫 페이지, 슬라이드, 프레임 또는 이미지 하나뿐이고, 가로 최대 1,280px의 JPEG로 줄인 것이어서 나머지의 픽셀 단위 품질까지 보증하지는 못합니다.
- 원본과 결과를 나란히 열고 위에서 정리한 영역을 중심으로 주변 10% 정도를 포함해 100~200%로 확대해 봅니다.
- 복잡한 배경과 맞닿은 가장자리를 봅니다. 사진, 그러데이션, 차트, 가는 글자, 반복 무늬에서 번짐, 색 띠, 타일링이 드러납니다.
- 잔재를 찾습니다. 희미한 윤곽, 주변보다 밝거나 어두운 사각형, 선명도가 이웃과 다른 흐린 부분이 있는지 봅니다.
- 영상은 처음 몇 초, 중간, 마지막 몇 초를 재생하고 장면이나 슬라이드가 바뀐 직후 프레임을 한 장씩 넘겨 봅니다.
- 영상은 시작뿐 아니라 파일 끝에서도 음성이 맞는지, 재생 시간이 기대와 같은지 확인합니다. 끝부분 자르기를 켰다면 2.5초가 빠진 길이여야 합니다.
- PDF는 페이지 수를 확인하고 같은 배율로 모든 페이지를 넘겨 보며, 한 페이지에서 글자를 선택해 보고 되는 것과 안 되는 것을 확인합니다.
- PPTX는 PowerPoint나 호환 앱에서 열어 복구 안내 없이 열리는지, 슬라이드 수와 이미지 배치가 그대로인지, 제목을 눌러 텍스트 상자가 남아 있는지 봅니다.
- 이미지는 묶음의 파일을 하나씩 비교하고, 출력 개수를 입력 개수와 맞춰 보고, 건너뛴 파일을 확인합니다.
- 내 브랜드 마크를 넣었다면 의도한 자리에 있는지, 내용을 가리지 않는지 봅니다.
수치로 하는 파일 검수
그다음은 파일 자체입니다. 영상은 FFmpeg에 포함된 ffprobe로 핵심 정보를 한 번에 볼 수 있습니다. PDF는 뷰어의 문서 속성에서 페이지 수를 보고, poppler의 pdffonts나 pdftotext로 글자가 남았는지 빠르게 확인합니다. PPTX는 zip이라서 항목 목록으로 미디어 파일을 볼 수 있습니다.
기대값은 코드에서 나옵니다. 크기 조정 필터가 없으므로 해상도는 원본과 같습니다. 비디오 코덱은 H.264이고 오디오는 복사되므로 원본과 같은 코덱입니다. 프레임레이트는 모드에 따라 15, 30 또는 원본 그대로입니다. 끝부분 자르기를 켰다면 재생 시간은 원본에서 2.5초를 뺀 값이고, 60초 원본이면 57.5초입니다. 파일 크기는 코드만으로 예측할 수 없지만 비교용 계산은 간단합니다. 평균 비트레이트 x 초 / 8입니다. 5Mbit/s로 60초면 37.5MB, 2Mbit/s면 15MB입니다. 결과가 원본보다 훨씬 크다면 낮은 CRF나 빠른 프리셋이 원인일 가능성이 큽니다.
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height,r_frame_rate,bit_rate -of default=nw=1 output.mp4
ffprobe -v error -show_entries format=duration,size -of default=nw=1 output.mp4
pdfinfo output.pdf # 페이지 수, 페이지 크기
pdffonts output.pdf # 글꼴 목록이 비어 있으면 글자가 그림이 된 것
unzip -l output.pptx | grep ppt/media # 패키지 안의 미디어 항목원본에서 다시 내보내는 편이 나을 때
로고 제거는 이미 내보낸 파일을 손보는 일입니다. 편집 가능한 원본이 아직 있다면, 아래 같은 경우에는 다시 내보내는 쪽이 대개 낫습니다. 압축을 한 세대 더 거치지 않기 때문입니다.
- PDF의 글자 선택, 검색, 링크, 접근성 태그를 유지해야 할 때입니다. 이미지로 다시 만든 PDF는 이를 지킬 수 없습니다.
- 영상을 더 편집할 예정일 때입니다. 다시 인코딩할 때마다 손실 세대가 하나씩 늘어나니 원본에서 편집을 마치고 한 번만 내보내세요.
- 로고가 중요한 내용과 겹치거나, 파일을 자르거나 크기를 바꿔서 고정 박스가 맞지 않을 때입니다.
- 덱의 슬라이드가 전체 이미지가 아니라 텍스트와 도형이라 PPTX 방식이 고칠 대상이 없을 때입니다.
- 200% 확대에서 보이는 패치를 클로즈업이나 큰 화면에서 받아들일 수 없을 때입니다.