[HTML5 연재] <video> - DOM으로 제어하기
HTML5의 <video> 요소 또한 메소드, 속성, 이벤트를 가지고 있습니다.
예를 들면 재생, 일시정지, 로딩을 위한 메소드가 있습니다. (영상의 특정)시간 지점이나 볼륨과 같이 읽거나 설정할 수 있는 속성들이 있습니다. 뿐만 아니라 <video> 요소가 재생되기 시작했을 때나 일시정지 되었을때, 혹은 재생이 끝났을때 그 이벤트의 발생 여부를 코드에서 확인할 수 있도록 해주는 DOM(Document Object Model) 이벤트 요소도 제공되고 있습니다.
아래의 예제에선 <video> 요소에 대해 어떤 방식으로 속성을 읽고 설정할 수 있는지, 또 어떻게 각 기능을 담당하는 메소드를 호출할 수 있는지 간략하게 코드로 보여주고 있습니다.
(이번 글의 내용을 이해하기 위해선 자바스크립트에 대한 기본 지식이 필요합니다.)
간략한 예제 코드
<div style="text-align: center"> <button onclick="playPause()">재생/일시정지</button> <button onclick="makeBig()">크게</button> <button onclick="makeSmall()">작게</button> <button onclick="makeNormal()">일반크기</button>
<video id="video1" width="420"> <source type="video/mp4" src="mov_bbb.mp4"> <source type="video/ogg" src="mov_bbb.ogg"> 사용중인 웹브라우저가 HTML5 Video를 지원하지 않습니다. </video> </div> <script type="text/javascript"> var myVideo=document.getElementById("video1"); function playPause() { if (myVideo.paused) myVideo.play(); else myVideo.pause(); } function makeBig() { myVideo.width=560; } function makeSmall() { myVideo.width=320; } function makeNormal() { myVideo.width=420; } </script>
1번째 줄에서 14번째 줄까지 각 버튼과 비디오 요소의 가운데 정렬을 위해 div 태그와 가운데 정렬 스타일 시트(style="text-align:center;")를 적용하고 있습니다.
3번째 줄에서 6번째 줄까지 나열된 코드에는 비디오 요소의 재생/일시정지, 크게 만들기, 작게 만들기, 일반 크기로 만들기 기능을 사용자가 실행할 수 있도록 총 4개의 버튼을 <button> 태그로 배치하고 있습니다. 각 버튼에는 onclick="..." 이벤트 핸들러 속성을 지정해 사용자가 버튼을 클릭할 때마다 지정된 함수를 호출하도록 하고 있습니다.
9번째 줄에서 13번째 줄에선 실제 영상을 화면에 표시해줄 비디오 요소가 정의되고 있습니다.
17번째 줄에선 위에서 정의한 비디오 요소를 코드단에서 제어할 수 있도록 document.getElementById(...) 함수를 통해 비디오 요소를 코드로 가져오고 있고
19번째 줄에서 40번째 줄까지의 코드에선 비디오의 재생/일시 정지 기능 실행을 위해 play() / pause() 함수를 호출하고 있고, 또한 비디오의 가로 크기 변경을 위해 width 속성에 지정된 숫자값을 대입하고 있습니다.
결론적으로 위의 예제는 아래와 같은 두 개의 메소드를 호출하고 있습니다.
- play()
- pause()
각각 비디오를 재생하거나 혹은 일시정지 할 수 있는 메소드(함수) 입니다.
그리고 아래와 같은 두 개의 속성을 사용하고 있습니다.
- .paused
- .width
각각 (위에서부터) 비디오가 일시 정지 상태인지 확인하거나, 혹은 가로 길이를 확인할 수 있으며 숫자 대입을 통해 가로 길이를 변경할 수도 있습니다.
예제 코드 실행 결과
위 예제 코드는 실제 웹 브라우저에서 아래와 같은 모습으로 나타납니다.
HTML5 <video> - 메소드, 속성, 그리고 이벤트들
아래쪽에 나열된 항목들은 대부분의 웹 브라우저에서 지원되는 <video> 요소의 메소드, 속성, 그리고 이벤트 들입니다.
메소드
- play()
- pause()
- load()
- canPlayType()
속성
- currentSrc
- currentTime
- videoWidth
- videoHeight
- duration
- ended
- error
- paused
- muted
- seeking
- volume
- height
- width
이벤트
- play
- pause
- progress
- error
- timeupdate
- ended
- abort
- empty
- emptied
- waiting
- loadedmetadata
참고: 비디오의 속성들 중, 오직 videoWidth와 videoHeight 속성만이 즉시 사용 가능합니다. 다른 속성들은 비디오의 총 시간, 사이즈와 같은 관련 정보인 메타 데이터가 모두 로드된 이후에만 접근할 수 있습니다.