5. 🎥 HTML5 API 실전 활용 — video, audio, canvas, iframe 완벽 가이드
HTML5의 등장은 웹 개발의 패러다임을 완전히 바꿔놓았다.
이전에는 플래시(Flash)나 외부 플러그인이 필요했던 기능들을
이제는 HTML 태그만으로 구현할 수 있게 되었다.
이번 글에서는 HTML5에서 추가된 네 가지 핵심 기능,
즉 video, audio, canvas, iframe을 중심으로
“웹을 살아 움직이게 만드는 방법”을 단계별로 정리한다.
💡 1. HTML5에서 멀티미디어가 중요한 이유
“웹은 더 이상 텍스트 중심이 아니다.”
영상, 음악, 그래프, 인터랙션 등
모든 시각적 콘텐츠가 사용자 경험(UX)을 좌우한다.
HTML5는 이를 위해 브라우저에서 직접 실행 가능한
표준 멀티미디어 태그(video/audio) 와
그래픽 처리용 캔버스(canvas) 를 제공한다.
🎬 2. video 태그 — 플러그인 없이 동영상 재생하기
<video controls width="600" poster="thumbnail.jpg">
<source src="sample.mp4" type="video/mp4">
<source src="sample.webm" type="video/webm">
브라우저가 영상을 지원하지 않습니다.
</video>
속성 설명
| controls | 재생 버튼 표시 |
| autoplay | 자동 재생 |
| loop | 반복 재생 |
| muted | 음소거 시작 |
| poster | 썸네일 이미지 지정 |
| preload | 미리 로딩(auto, metadata, none) |
💡 다양한 포맷 지원 이유
브라우저별 코덱 지원이 다르기 때문에,
mp4, webm, ogg 세 가지 중 최소 두 가지는 준비하는 것이 좋다.
📌 실무 팁
- autoplay는 muted가 설정되어야 대부분의 브라우저에서 동작한다.
- 반응형 디자인에서는 max-width: 100%를 지정해 부모 크기에 맞게 조정하자.
<video autoplay muted loop playsinline>
<source src="background.mp4" type="video/mp4">
</video>
💬 모바일 배경 영상 구현 시 playsinline 속성이 필수다.
🎧 3. audio 태그 — 사운드를 추가하는 가장 쉬운 방법
<audio controls>
<source src="music.mp3" type="audio/mpeg">
<source src="music.ogg" type="audio/ogg">
오디오를 재생할 수 없습니다.
</audio>
속성 설명
| controls | 재생 UI 표시 |
| autoplay | 자동 재생 |
| loop | 반복 재생 |
| muted | 음소거 |
| preload | 미리 로드 여부 (none, metadata, auto) |
💡 오디오 재생은 브라우저 기본 컨트롤러가 제공되므로
JS 라이브러리 없이도 플레이어 UI가 완성된다.
🎵 실무 예제 — 배경음 재생 제어
<audio id="bgm" src="bgm.mp3" loop></audio>
<button onclick="document.getElementById('bgm').play()">음악 재생</button>
<button onclick="document.getElementById('bgm').pause()">일시 정지</button>
✅ JavaScript와 함께 사용하면 재생/정지/볼륨 제어까지 가능하다.
🎨 4. canvas 태그 — 브라우저 위의 그래픽 도화판
“canvas는 HTML에서 그림을 그릴 수 있는 태그다.”
<canvas id="myCanvas" width="400" height="200"></canvas>
JavaScript로 제어해야 동작하며,
2D 그래픽이나 차트, 게임, 애니메이션 등에 활용된다.
<script>
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'skyblue';
ctx.fillRect(20, 20, 150, 100);
ctx.strokeRect(20, 20, 150, 100);
</script>
💬 ctx.fillRect()는 사각형을 그리고,
ctx.strokeRect()는 테두리를 그린다.
🧩 canvas 주요 메서드 요약
메서드 기능
| fillRect(x, y, w, h) | 사각형 채우기 |
| strokeRect(x, y, w, h) | 테두리 사각형 |
| beginPath() / closePath() | 경로 시작/종료 |
| arc(x, y, r, s, e) | 원형 그리기 |
| fillText(text, x, y) | 텍스트 출력 |
| clearRect() | 영역 지우기 |
💡 Chart.js나 Three.js 같은 라이브러리도 결국 canvas 기반이다.
🌍 5. iframe — 다른 웹페이지를 삽입하는 창
“iframe은 웹 안에 또 다른 웹을 표시하는 태그다.”
속성 설명
| src | 불러올 페이지 주소 |
| width, height | 크기 지정 |
| allowfullscreen | 전체 화면 허용 |
| loading="lazy" | 지연 로딩 (성능 개선) |
💬 유튜브, 구글맵, 문서뷰어 등 외부 콘텐츠 삽입 시 주로 사용된다.
📌 보안 주의사항
iframe은 외부 도메인을 불러오기 때문에
보안적으로 제한된 상황이 많다.
예: CORS 정책, X-Frame-Options 헤더 설정 등
✅ 해결법:
- 신뢰할 수 있는 도메인만 삽입
- 가능하면 API를 통한 직접 데이터 렌더링으로 대체
⚙️ 6. video/audio/canvas의 공통점
공통 속성 의미
| width, height | 출력 크기 지정 |
| controls | 기본 UI 제공 |
| autoplay, loop, muted | 재생 옵션 |
| preload | 미리 로드 설정 |
💬 이들은 자바스크립트 이벤트 제어가 가능하다는 공통점도 있다.
→ 실시간 상호작용, UI 제어, 애니메이션 가능.
🧠 7. HTML5 API + JavaScript 간단 예제
🎞️ video 제어
<video id="myVideo" src="movie.mp4" width="400" controls></video>
<button onclick="document.getElementById('myVideo').play()">재생</button>
<button onclick="document.getElementById('myVideo').pause()">정지</button>
💬 JS로 media 객체를 제어할 수 있다.
→ play(), pause(), currentTime, volume, muted 등 속성 사용 가능.
🧭 8. 성능 최적화 팁 (실무 필수)
✅ 영상·오디오 파일은 CDN을 활용해 로드 속도를 높인다.
✅ 이미지와 비디오 모두 loading="lazy"를 적극 사용한다.
✅ 불필요한 autoplay는 피하고, 사용자가 직접 실행할 수 있도록 UX를 설계한다.
🏁 9. 마무리 — “HTML5는 더 이상 단순한 마크업이 아니다”
HTML5는 표현력 있는 웹을 위한 도구 세트다.
video와 audio는 콘텐츠를 풍부하게 만들고,
canvas는 인터랙티브한 시각화를,
iframe은 외부 세계와의 연결을 제공한다.
💬 “HTML5 태그만으로도 충분히 ‘앱 같은 웹’을 만들 수 있다.”
다음 편에서는
✅ 6. 웹 접근성 & SEO를 위한 HTML 작성법으로
검색엔진과 모두가 이해할 수 있는 페이지 구조를 배워보자.