Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

HTML DOM Audio 객체 완벽 가이드: 주요 속성, 메서드와 활용 예제

HTML DOM의 Audio 객체는 HTML <audio> 요소를 나타내는 인터페이스입니다. <audio> 요소는 HTML5에서 새롭게 도입된 기능으로, 이 객체를 활용하면 오디오 트랙 정보를 가져오거나 자동 재생(autoplay) 설정을 변경하는 등 다양한 작업을 수행할 수 있습니다.

주요 속성(Properties)

HTML DOM Audio 객체가 제공하는 주요 속성은 다음과 같습니다.

속성설명
audioTracks사용 가능한 오디오 트랙 목록을 담고 있는 audioTrackList 객체를 반환합니다.
autoplay오디오가 자동으로 재생되도록 설정하거나 해당 설정 여부를 반환합니다.
buffered오디오에서 버퍼링된 구간 전체를 포함하는 TimeRanges 객체를 반환합니다.
controller오디오의 현재 미디어 컨트롤러를 나타내는 MediaController 객체를 반환합니다.
controls재생/일시정지 컨트롤 UI를 표시할지 여부를 설정하거나 반환합니다.
crossOrigin오디오의 CORS(Cross-Origin Resource Sharing) 설정을 지정하거나 반환합니다.
currentSrc현재 재생 중인 오디오의 URL을 반환합니다.
currentTime현재 재생 위치(초 단위)를 설정하거나 반환합니다.
defaultMuted오디오가 기본적으로 음소거 상태인지 여부를 설정하거나 반환합니다.
defaultPlaybackRate오디오의 기본 재생 속도를 설정하거나 반환합니다.
duration오디오의 전체 길이를 초 단위로 반환합니다.
ended재생이 종료되었는지 여부를 반환합니다.
error오디오의 오류 상태를 나타내는 MediaError 객체를 반환합니다.
loop재생이 끝난 후 오디오를 다시 반복 재생할지 여부를 설정하거나 반환합니다.
mediaGroup오디오가 속한 미디어 그룹 이름을 설정하거나 반환합니다.
muted오디오를 음소거할지 여부를 설정하거나 반환합니다.
networkState오디오의 현재 네트워크 상태를 반환합니다.
paused오디오가 일시정지 상태인지 여부를 설정하거나 반환합니다.
playbackRate오디오의 재생 속도를 설정하거나 반환합니다.
played이미 재생된 구간을 나타내는 TimeRanges 객체를 반환합니다.
preload오디오의 preload 속성값을 설정하거나 반환합니다.
readyState오디오의 현재 준비 상태(ready state)를 반환합니다.
seekable탐색(seek)이 가능한 구간을 나타내는 TimeRanges 객체를 반환합니다.
seeking사용자가 현재 오디오 내에서 탐색 중인지 여부를 반환합니다.
src오디오의 src 속성값을 설정하거나 반환합니다.
textTracks사용 가능한 모든 텍스트 트랙을 나타내는 TextTrackList 객체를 반환합니다.
volume오디오의 볼륨을 설정하거나 반환합니다.

주요 메서드(Methods)

Audio 객체에서 사용할 수 있는 메서드는 다음과 같습니다.

메서드설명
addTextTrack()해당 오디오에 새로운 텍스트 트랙을 추가합니다.
canPlayType()브라우저가 지정된 오디오 형식을 재생할 수 있는지 확인합니다.
fastSeek()오디오 플레이어에서 지정된 시간으로 빠르게 탐색합니다.
getStartDate()현재 타임라인 오프셋을 나타내는 새 Date 객체를 반환합니다.
load()오디오 요소를 다시 로드합니다.
play()오디오 재생을 시작합니다.
pause()현재 재생 중인 오디오를 일시정지합니다.

기본 문법(Syntax)

Audio 객체의 기본적인 사용 문법은 다음과 같습니다.

오디오 요소 생성하기

var x = document.createElement("AUDIO")

기존 오디오 요소 접근하기

var x = document.getElementById("demoAudio")

실전 예제

Audio 객체의 실제 활용 예제를 살펴보겠습니다.

<!DOCTYPE html>
<html>
<body>
<h1>MUSIC</h1>
<audio id="Audio" controls>
<source src="sample.mp3" type="audio/mpeg">
Audio not supported in your browser
</audio>
<p>버튼을 클릭하면 오디오 길이(초 단위)를 확인할 수 있습니다.</p>
<button onclick="AudioDur()">Duration</button>
<button onclick="CreateAudio()">CREATE</button>
<p id="SAMPLE"></p>
<script>
    function AudioDur() {
        var x = document.getElementById("Audio").duration;
        document.getElementById("SAMPLE").innerHTML = x;
    }
    function CreateAudio() {
        var x = document.createElement("AUDIO");
        x.setAttribute("src","sample1.mp3");
        x.setAttribute("controls", "controls");
        document.body.appendChild(x);
    }
</script>
</body>
</html>

실행 결과

위 코드를 실행하면 다음과 같은 화면이 출력됩니다.

HTML DOM Audio 객체 완벽 가이드: 주요 속성, 메서드와 활용 예제

[Duration] 버튼 클릭 시

HTML DOM Audio 객체 완벽 가이드: 주요 속성, 메서드와 활용 예제

[CREATE] 버튼 클릭 시

HTML DOM Audio 객체 완벽 가이드: 주요 속성, 메서드와 활용 예제

예제 코드 분석

위 예제의 동작 원리를 단계별로 살펴보겠습니다.

1. 오디오 요소 생성

먼저 오디오 요소를 생성하고 오디오 소스와 형식을 지정했습니다. 브라우저가 오디오를 지원하지 않을 경우 대체 텍스트가 표시됩니다.

<audio id="Audio" controls>
<source src="sample.mp3" type="audio/mpeg">
Audio not supported in your browser
</audio>

2. 버튼 생성

그다음 각각 AudioDur() 함수와 CreateAudio() 함수를 실행하는 두 개의 버튼인 "Duration"과 "CREATE"를 만들었습니다.

<button onclick="AudioDur()">Duration</button>
<button onclick="CreateAudio()">CREATE</button>

3. AudioDur() 함수 동작

AudioDur() 함수는 id가 "Audio"인 요소에 접근하여 <audio> 요소를 가져온 뒤, duration 속성을 통해 오디오의 전체 길이를 구합니다. 구해진 값은 id가 "SAMPLE"인 단락(<p>)에 표시됩니다.

function AudioDur() {
    var x = document.getElementById("Audio").duration;
    document.getElementById("SAMPLE").innerHTML = x;
}

4. CreateAudio() 함수 동작

CreateAudio() 함수는 새로운 오디오 요소를 동적으로 생성하고, src 속성을 "sample1.mp3"로 지정한 후 controls 속성을 설정하여 컨트롤 UI를 활성화합니다. 마지막으로 appendChild() 메서드를 사용해 해당 요소를 문서의 body에 추가합니다.

function CreateAudio() {
    var x = document.createElement("AUDIO");
    x.setAttribute("src","sample1.mp3");
    x.setAttribute("controls", "controls");
    document.body.appendChild(x);
}

이처럼 HTML DOM Audio 객체를 활용하면 웹 페이지에서 오디오를 동적으로 제어하고, 재생 위치·볼륨·속도 등 다양한 속성을 자유롭게 조작할 수 있습니다.