같은 360p 파일이 31배 다른 이유
해상도는 같아도 파일 크기는 같지 않았습니다. 야동위키에서 640×360픽셀·6초·30fps를 고정한 표본을 만들자, 정지 장면은 18,700바이트, 움직이는 장면은 584,461바이트였습니다. 같은 움직임에서 압축 설정만 바꾼 세 번째 파일은 172,336바이트였습니다.
콘텐츠 목록의 ‘360p’나 ‘고화질’을 데이터량의 약속처럼 읽을 수 있을까요? 이 질문을 실제 작품의 호불호와 분리하기 위해 도형 영상으로 비교했습니다. 실험의 대상은 해상도 표시와 파일 크기의 관계입니다. 외부 서비스의 재생 속도나 실제 성인 영상을 평가한 결과는 아닙니다.
같게 둔 조건과 바꾼 조건
2026-11-05에 Windows 환경의 FFmpeg 7.1과 libx264를 사용했습니다. 소스는 FFmpeg가 제공하는 testsrc2 도형 패턴입니다. 모든 출력은 640×360픽셀, 30fps, 6초, H.264, MP4이며 오디오 트랙은 없습니다. 프리셋은 medium, 인코딩 스레드는 1로 고정했습니다. 출력 파일은 다시 디코딩해 각각 6초·180프레임인지 대조했고, A의 압축 전 입력은 한 프레임이 180번 반복되는지 해시로 확인했습니다.

- A · 정지: 첫 프레임을 6초간 유지하고 CRF 23으로 인코딩했습니다.
- B · 움직임: 6초 동안 변하는 원래 패턴을 CRF 23으로 인코딩했습니다.
- C · 움직임·강한 압축: B와 같은 패턴에서 CRF만 35로 바꿨습니다.
A와 B는 움직임의 유무를 비교하고, B와 C는 압축 설정의 차이를 비교합니다. CRF 숫자는 libx264의 인코딩 옵션이며 사람에게 보이는 화질 점수는 아닙니다. 입력·출력과 인코딩 옵션의 구조는 FFmpeg 문서에서 확인할 수 있습니다.
세 파일에서 실제로 나온 값
| 표본 | 크기 | 십진 kB | 파일 평균 kbps |
|---|---|---|---|
| A 정지 · CRF 23 | 18,700 B | 18.700 | 24.933 |
| B 움직임 · CRF 23 | 584,461 B | 584.461 | 779.281 |
| C 움직임 · CRF 35 | 172,336 B | 172.336 | 229.781 |
B는 A보다 약 31.25배 컸습니다. 해상도, 길이, 프레임률, 인코딩 옵션을 같게 둬도 장면의 변화가 다르면 결과의 크기가 크게 달라질 수 있었습니다. 이것은 정지 영상은 언제나 정확히 31배 작다는 법칙이 아니라 이 패턴에서 관찰한 비율입니다.
C는 B보다 약 70.51% 작았습니다. 같은 움직임을 두고 CRF만 바꾼 비교입니다. 크기를 줄이는 설정이 원래의 세부 정보를 얼마나 남기는지는 별도의 품질 평가 문제입니다. 이번 표에는 시청자 평가나 화질 점수를 넣지 않았습니다. 손실 압축의 결과가 설정과 영상 내용에 따라 달라진다는 배경은 MDN의 비디오 코덱 안내를 참고했습니다.
779.281kbps는 다운로드 속도가 아닙니다
표의 마지막 열은 전체 파일 크기를 재생 길이로 나눈 계산값입니다. MP4 컨테이너 정보도 포함하므로 순수 영상 스트림의 비트레이트와 완전히 같은 값으로 취급하지 않습니다.
파일 평균 kbps = 파일 바이트 × 8 ÷ 재생 초 ÷ 1,000
B를 대입하면 584,461 × 8 ÷ 6 ÷ 1,000 = 779.2813…입니다. 비교 비율은 584,461 ÷ 18,700 = 약 31.254, C의 감소율은 (1 − 172,336 ÷ 584,461) × 100 = 약 70.514%입니다.
단위도 중요합니다. 1kB를 1,000바이트로 사용했으며, 1KiB인 1,024바이트와 섞지 않았습니다. kbps는 초당 킬로비트이고 kB/s는 초당 킬로바이트이므로 같은 숫자로 읽을 수 없습니다. 이 계산은 파일의 양을 설명할 뿐, 서버가 몇 초 만에 전달했는지는 측정하지 않습니다.
원파일과 조건을 직접 대조할 수 있습니다
아래 링크는 기술 표본 MP4 파일입니다. 클릭하기 전에는 페이지가 표본 영상을 자동으로 불러오지 않습니다. 사용 중인 브라우저에 따라 다운로드되거나 별도 재생 화면이 열릴 수 있습니다.
동일한 파일인지 확인하려면 크기뿐 아니라 SHA-256을 대조하세요. 숫자만 복사한 표와 달리 원파일을 함께 두면 크기·길이·해상도를 독립적으로 확인할 수 있습니다. B 표본의 생성 조건은 다음과 같습니다.
ffmpeg -f lavfi -i testsrc2=size=640x360:rate=30:duration=6
-t 6 -an -r 30 -fps_mode cfr -c:v libx264 -preset medium -threads 1
-pix_fmt yuv420p -movflags +faststart -crf 23 motion.mp4
줄을 나눈 명령은 한 줄로 이어 실행합니다. JSON에는 A의 정지 처리 필터와 C의 CRF 변경도 기록했습니다. 도구 버전이나 빌드, 인코더가 달라지면 새로 만든 파일의 바이트 값이 달라질 수 있습니다. 원기록을 재현할 때는 입력 조건부터 비교해야 합니다.
야동위키 이용 정보에 적용할 수 있는 결론
콘텐츠 설명의 해상도는 화면 크기에 관한 단서입니다. 필요한 전송량을 알고 싶다면 파일 크기와 길이, 또는 제공자가 밝힌 비트레이트가 더 직접적인 정보입니다. 그런 정보가 없다면 ‘360p이므로 데이터가 적다’고 확정하기보다 확인되지 않았다고 남겨 두는 편이 정확합니다.
이번 비교는 여섯 초짜리 합성 패턴, 하나의 코덱과 프리셋만 사용했습니다. 실제 장시간 영상에는 오디오, 자막, 장면 변화, 다른 인코더가 추가됩니다. 스트리밍은 여러 화질을 전환할 수도 있습니다. 여기의 평균값이나 비율을 그대로 실사용 요금·한 달 데이터량·체감 화질로 바꾸어 계산하면 안 됩니다.
재생이 자주 멈춘다면 표의 숫자를 원인 진단표로 사용하기보다 한 조건씩 비교하는 도움말을 적용해 보세요. 이번에 확인한 핵심은 같은 해상도 표기와 같은 데이터량은 같은 말이 아니다라는 점입니다.
