본문 바로가기
제가 쓴 책/HTML5, CSS3 and JavaScript

1. Audio

by edupicker(체르니) 2013. 8. 7.

1. Audio


웹사이트를 방문하다 보면 간혹 사운드가 배경에 깔려서 나오거나 플레이가 가능하도록 해놓은 사이트가 있는 것을 보게 됩니다. 일반적으로 웹사이트에서 사용되는 오디오 파일은 mp3, wav, ogg 파일 형식들을 들 수 있는데 mp3, wav 파일 형식은 자주 보아서 그리 낯설지 않을 것입니다만 ogg 파일 형식은 이 책을 통해 처음 보게 되는 분들도 있을 것입니다.


ogg 파일 형식은 비영리 기구인 Xiph.Org Foundation에서 무료 audio, video 파일 형식입니다.
Xiph.Org
재단(Foundation)에서는 ogg 파일이 소리(audio)일 경우 이를 압축하고 해제하는데 사용하는 Vorbis 코덱을 만들었고 비디오(video)일 경우는 압축하고 해제하기 위해서 Theora 코덱을 만들었습니다. 그리고 2007년 이후 Xiph.Org 재단(Foundation) ogg 파일 확장자는 단지 소리(audio)만 포함된 오디오 형식에 사용하고 비디오 파일에 대해서는 ogv 형태로 사용하기를 권고하였습니다.
이 정도로 ogg 파일 형식에 대한 설명을 마치며 ogg 파일의 비디오 파일 형식인 ogv 파일 형식을 이용한 동영상 다루는 부분을 video 요소 부분에서 기존의 동영상 파일 형식을 ogv 파일 형태로 변환부터 설명하였으니 해당 부분에서 확인하시기 바라며 ogg 파일 형식에 대해서 보다 구체적인 내용을 알고자 하는 분들은 Xiph.org 재단의 위키(wiki) 페이지(http://wiki.xiph.org/)를 참고하시기 바랍니다.

HTML5
를 지원하는 다양한 웹 브라우저들 중 방금 전 언급한 3가지 형태의 파일 형식을 모두 지원하는 브라우저는 아직 없습니다. 따라서 해당 오디오 파일 형식과 유저가 사용하는 웹 브라우저에 따라서 오디오 파일이 재생될 수도 있고 재생되지 않을 수도 있다는 점을 미리 염두에 두면 여러분이 관련 프로그램을 생성할 때 도움이 될 것입니다.

이제 HTML5에서 오디오 파일을 다루는 방법을 알아볼까요?
HTML5
에 따라 웹페이지에서 오디오 파일을 실행하는데 사용하는 요소는 audio 요소(Element)  HTML 태그로는 <audio> 태그로 나타낼 수 있으며 이를 이용하여 간단하게 구현할 수 있습니다. 기본적으로 “aa.mp3” 라는 오디오 파일을 실행하기 위해서는 가장 기본적인 속성인 src 속성을 이용하여 다음과 같이 간단한 한 줄로 가능합니다.


<audio src=”aa.mp3”></audio>


위에서 실행할 오디오 파일을 설정해주는데 사용되는 속성으로 src 속성을 사용했습니다. src 속성에 어떠한 속성들을 이용하여 audio 파일을 사용할 수 있는지 알아봅니다.
W3C
에서 현재 진행중인 HTML5 권고안에 보면 audio 요소와 관련하여 다음과 같은 속성들을 정의하고 있으며 이를 통해 오디오 파일을 자동 실행, 반복하여 재생하도록 할 수 있습니다.


속성

기능

autoplay

웹페이지가 로드되고 바로 자동적으로 연주 시작하도록 설정.  속성값은 “autoplay”, “”, 혹은 empty , <audio autoplay> 형태로 사용 가능

controls

플레이를 진행할 수 있는 컨트롤이 노출되도록 하는 속성으로 속성값은 “controls”, “” 혹은 empty 형태로 사용 가능

loop

오디오 파일을 무한 반복할 때 사용하는 속성

preload

오디오 파일이 웹 페이지가 로드될 때 오디오 파일도 전체가 로드되어야 할 지 아니면 부분적, 아니면 아무것도 로드되지 않아야 하는지를 설정해 줄 때 사용하는 속성으로 none, metadata, auto와 같은 값으로 설정될 수 있음. 이 속성은 autoplay와 함께 쓰면 무시됨

src

재생할 오디오 파일을 설정하는데 사용. 보통 URL을 사용

muted

소리없이 조용하게 재생할 때 사용

mediagroup

다수의 오디오 파일을 브라우저에게 함께 링크하도록 하는 속성으로 현재 대부분의 브라우저에서 지원되지 않음



1.1 autoplay 속성

이제 autoplay 속성부터 차례대로 알아볼까요? 메모장을 열어서 다음과 같이 코드를 작성합니다.

<!DOCTYPE HTML>
<html>
<head>
  <meta http-equv="Content-Type" content="text/html; charset=ko">
  <title>
오디오 파일 테스트</title>
</head>
<body>
  autoplay
속성을 이용하여 자동으로 연주됩니다.<br>
  <audio src="Elephant trumpeting animals.wav" autoplay></audio>
</body>
</html>

위와 같이 작성을 완료한 후 “audioEx.html”로 저장합니다. Firefox, Chrome 등을 이용하여 실행해보면 의기양양한 코끼리의 소리가 페이지가 로드되고 바로 자동 연주됩니다.
위에서 autoplay 속성을 설정한 형태가 바로 empty 속성값이라는 형태이고 이를 다시 autoplay=””이나 autoplay=”autoplay” 형태로 수정 저장 후 실행해도 역시 정상적으로 동작합니다.



1.2 controls 속성


controls 속성은 audio 파일을 재생하는 컨트롤이 노출되도록 하는 속성으로 controls 속성을 알아보기 위해 위의 코드에서 <body> … </body> 부분을 다음과 같이 수정한 후 실행해봅니다.

<body>
  controls
속성을 이용하여 audio 파일 연주<br>
  <audio src="Elephant trumpeting animals.wav" controls></audio>
</body>

위와 같이 수정 저장한 후 Firefox에서 실행한 화면을 나타내면 다음과 같습니다. 물론 Opera Chrome에서도 정상적으로 동작하지만 웹 페이지에 나타나는 컨트롤의 모양이 조금씩 다르게 나타납니다.




1.3 loop 속성


loop 속성은 해당 오디오 파일을 무한 반복하는 속성이며 앞서 <body> … </body> 부분을 다음과 같이 수정한 후 실행해봅니다.

<body>
  loop
속성을 이용하여 audio 파일 연주<br>
  <audio src="Elephant trumpeting animals.wav" loop controls></audio>
</body>

Opera
FireFox 등을 이용하여 사이트로 이동한 후 화면에 나타난 컨트롤 버튼의 재생 버튼을 클릭하면 멈춤 버튼을 클릭하지 않는 한 의기양양한 코끼리 울음 소리가 무한 반복됩니다.



1.4 preload 속성

다음으로 preload에 대해서 알아볼까요? preload 속성은 사용자가 사용하는 웹 브라우저로 하여금 해당 오디오 파일에 처리에 대한 힌트를 주는 것으로 다음과 같은 3가지 중 하나의 속성값으로 설정될 수 있습니다.


속성값

의미

none

페이지가 로드될 때 오디오 파일이 로드되지 않아야 할 때 사용

metadata

페이지가 로드될 때 메타 데이터만 로드하도록 할 때 사용

auto

페이지가 로드될 때 오디오 파일 전체가 로드되어야 할 때 사용. 기본값


위의 코드에서 <body> … </body> 부분을 다음과 같이 수정한 후 실행해봅니다.

<body>
  preload
속성을 이용하여 audio 파일 연주<br>
  <audio src="Elephant trumpeting animals.wav" preload controls></audio>
</body>



1.5 muted 속성

muted
속성은 오디오 파일을 소리없이 실행하고자 할 때 사용하는 속성으로 “audioEx.html”파일을 메모장으로 열어서 <body> … </body> 블록 내의 모든 코드를 주석 처리(<!-- -->)한 후 다음과 같이 코드를 추가합니다.

<body>
  preload
속성을 이용하여 audio 파일 연주<br>
  <audio src="Elephant trumpeting animals.wav" preload controls></audio>
</body>

저장하고 Firefox로 연결하여 재생 버튼을 클릭하면 소리없이 오디오 파일이 재생됩니다.



참고 :  위에서 사용한 "Elephant trumpeting animals.wav"파일이 아닌 여러분이 가지고 있는 .wav 파일 형태로 사용해도 무난히 실행됩니다.


- 본 저작물은 본인이 2011년 상반기부터 2012년 여름 즈음까지 도서 출판을 목적으로 약 470 페이지(A4, 폰트 10)으로 작성한 원본 중 Audio에 대한 부분을 그대로를 공개하는 것으로 본 저작물에 대한 모든 권리는 본인(원철연)에서 있음을 알립니다.
개인적인 학습 목적으로 사용을 허용하며 온오프라인의 베포나 펌상업적인 용도의 사용은 삼가해주시기 바랍니다. 끝으로 학교나 비영리 단체에서의 경우 본 저작물을 비상업적인 용도로 활용하고자 할 경우 연락처를 비밀댓글로 남겨주시면 연락드리겠습니다.




'제가 쓴 책 > HTML5, CSS3 and JavaScript' 카테고리의 다른 글

6장 Drag and Drop  (0) 2013.08.08
2. Video  (0) 2013.08.07
11.2 픽셀(pixel)에 기반한 이미지 가공(Manipulation)  (0) 2013.08.07
11. 이미지(Image)  (0) 2013.08.07
10. 변환(Transformation)  (0) 2013.08.07