유튜브 임베드에 "오류 153"이 뜰 때: 파일로 열면 안 되고 도메인에서는 된다
홈페이지에 유튜브 영상을 넣었더니 "동영상 플레이어 구성 오류, 오류 153"이 나왔습니다. 원인과 확인 방법, 영상을 직접 올리지 않고 유튜브로 연결한 이유를 정리했습니다.

홈페이지에 영상을 넣는 방법은 두 가지입니다. 영상 파일을 사이트에 직접 올리거나, 유튜브에 올린 영상을 끼워 넣는 것입니다. 저희는 두 방법을 모두 해 보았고, 유튜브로 바꾸는 과정에서 "오류 153"을 만났습니다.
2026년 10월 9일에 이 사이트의 광고 서비스 영역에 영상을 넣은 실제 작업입니다. 파일 크기와 명령은 그때 측정하고 쓴 것입니다. 오류의 원인은 저희가 관찰한 동작에서 판단한 것이며, 유튜브의 내부 동작을 확인한 것은 아닙니다.
처음에는 영상 파일을 직접 올리려 했다
넣으려던 영상은 AI로 만든 42초짜리 영상이었습니다. 원본은 이랬습니다.
| 항목 | 원본 | 웹용으로 변환한 것 |
|---|---|---|
| 형식 | MOV, HEVC 10비트 | MP4, H.264 8비트 |
| 해상도 | 1920×1080 | 1280×720 |
| 용량 | 39.1MB | 3.6MB |
원본을 그대로 올릴 수 없는 이유가 둘 있었습니다. 39MB는 홈페이지의 나머지 전부를 합친 것보다 수십 배 큽니다. 그리고 HEVC 10비트 영상은 브라우저와 기기에 따라 재생되지 않을 수 있습니다. 그래서 가장 널리 재생되는 H.264로 다시 인코딩했습니다.
ffmpeg -i input.mov \
-vf "scale=1280:720,format=yuv420p" \
-c:v libx264 -preset slow -crf 26 -profile:v high \
-c:a aac -b:a 96k \
-movflags +faststart \
output.mp4
옵션의 뜻은 이렇습니다.
format=yuv420p: 10비트를 8비트로 바꿉니다. 이 옵션이 없으면 일부 브라우저에서 화면이 나오지 않습니다.-crf 26: 화질과 용량의 균형입니다. 숫자가 클수록 용량이 작고 화질이 낮습니다.-movflags +faststart: 영상을 다 받기 전에 재생을 시작할 수 있게 합니다.
이 파일을 영상 태그로 넣어 로컬에서 화면까지 확인했습니다. 자동 재생은 끄고, 재생 버튼을 누르면 소리 없이 시작하도록 했습니다.
유튜브로 바꾼 이유
같은 영상이 이미 유튜브에 올라가 있었습니다. 그렇다면 직접 올릴 이유가 줄어듭니다.
| 기준 | 파일을 직접 올림 | 유튜브 임베드 |
|---|---|---|
| 사이트 용량 | 3.6MB 증가 | 증가 없음 |
| 화질 | 변환한 한 가지 | 시청 환경에 따라 자동 조절 |
| 조회수 | 어디에도 쌓이지 않음 | 유튜브 채널에 쌓임 |
| 외부 의존 | 없음 | 유튜브에 의존, 쿠키와 추적 고려 필요 |
| 화면 구성 | 내 마음대로 | 유튜브 로고와 추천 표시가 붙음 |
저희는 유튜브를 골랐고, 변환해 둔 파일은 사이트에서 지웠습니다.
넣은 코드
<div class="embed">
<iframe
src="https://www.youtube-nocookie.com/embed/영상ID"
title="영상 제목"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write;
encrypted-media; gyroscope; picture-in-picture;
web-share"
referrerpolicy="strict-origin-when-cross-origin"
allowfullscreen></iframe>
</div>
.embed { aspect-ratio: 16 / 9; overflow: hidden; border-radius: 10px; }
.embed iframe { display: block; width: 100%; height: 100%; border: 0; }
세 가지를 일부러 골랐습니다.
- youtube-nocookie.com: 유튜브의 개인정보 보호 강화 모드 주소입니다. 방문자가 재생하기 전에는 시청 관련 쿠키를 저장하지 않습니다.
- loading="lazy": 영상이 화면 가까이 왔을 때 불러옵니다.
- aspect-ratio: 바깥 상자에 16:9 비율을 주어, 화면 폭이 바뀌어도 영상이 비율을 유지합니다.
그런데 "오류 153"이 떴다
코드를 넣고 HTML 파일을 브라우저에서 바로 열었더니, 영상 자리에 이런 화면이 나왔습니다.
동영상 플레이어 구성 오류
오류 153
영상 주소는 맞았습니다. 유튜브의 임베드 정보 조회에서 제목과 채널이 정상으로 나왔고, 퍼가기도 허용된 영상이었습니다.
원인: 파일로 열면 "어디에 넣었는지"가 전달되지 않는다
같은 코드를 실제 도메인에 배포하고 열었더니 영상이 정상으로 떴습니다. 코드는 한 글자도 바꾸지 않았습니다. 달라진 것은 페이지를 연 방식뿐이었습니다.
| 연 방식 | 주소창 | 결과 |
|---|---|---|
| 파일을 직접 열기 | file:///Users/... | 오류 153 |
| 배포한 도메인 | https://axxolab.com | 정상 |
브라우저는 다른 사이트의 내용을 불러올 때 "어느 페이지에서 요청했는지"를 함께 보냅니다. 유튜브 플레이어는 이 정보로 영상이 어느 사이트에 들어가 있는지 확인합니다. 그런데 파일을 직접 연 페이지는 웹 주소가 없어서 이 정보를 보내지 못합니다. 저희가 본 동작은 이 설명과 맞습니다.
코드에 넣은 referrerpolicy="strict-origin-when-cross-origin"는 이 정보를 사이트 주소까지만 보내도록 정하는 설정입니다. 유튜브가 제공하는 퍼가기 코드에도 들어 있습니다. 사이트에 방문자의 추적을 줄이려고 참조 정보를 아예 보내지 않도록 설정해 두었다면, 도메인에서도 같은 오류가 날 수 있습니다.
확인하는 순서
- 주소창을 봅니다.
file://로 시작하면 이 오류는 정상입니다. 고칠 것이 없습니다. - 웹 주소로 엽니다. 배포한 주소에서 확인합니다. 로컬에서 보려면 간단한 로컬 서버를 띄워
http://localhost주소로 엽니다. 저희는 처음에 배포한 도메인에서 확인했고, 나중에 로컬 서버(python3 -m http.server)로 열었을 때도 영상이 정상으로 뜨는 것을 확인했습니다. - 참조 정보 설정을 봅니다. 도메인에서도 오류가 나면, 페이지나 서버가 참조 정보를 보내지 않도록 설정되어 있는지 확인합니다.
- 영상 설정을 봅니다. 그래도 안 되면 유튜브에서 해당 영상의 퍼가기 허용이 꺼져 있지 않은지 확인합니다.
이 일에서 배운 것
로컬 파일로 미리 보는 것만으로는 확인되지 않는 것이 있습니다. 유튜브 임베드처럼 외부 서비스가 "어느 사이트에서 불렀는지"를 따지는 기능은 실제 주소에서만 제대로 동작합니다. 그래서 저희는 이 변경을 배포한 뒤, 실제 주소의 화면을 찍어 영상의 썸네일과 재생 버튼이 뜨는 것을 확인했습니다.
한 가지 더 있습니다. 배포 직후에 찍은 첫 화면에는 바꾸기 전의 이미지가 그대로 나왔습니다. 새 버전이 모든 서버에 퍼지기 전이었기 때문입니다. 배포 직후의 확인은 한 번으로 끝내지 말고, 새 내용이 나올 때까지 다시 확인해야 합니다. 이 과정은 정적 사이트를 Cloudflare에 배포한 기록에 적었습니다.