# 웹의 오디오

> Information about audio capabilities in Web.

이 페이지에서는 웹 플랫폼의 오디오 기능에 대한 정보만 제공합니다. Unity 프로젝트에서 오디오를 사용하는 방법을 알아보려면 [오디오 개요](/engine/6000.0/manual/audio/overview.md)를 참조하십시오.

Unity는 플랫폼의 오디오를 관리하기 위해 [FMOD](https://www.fmod.com)를 사용하므로 웹 플랫폼은 기본 기능만 포함하는 제한된 오디오 기능을 지원합니다. FMOD는 WebGL API가 지원하지 않는 스레드를 사용합니다. 이러한 이유로 Unity는 브라우저가 오디오 재생 및 믹싱을 처리할 수 있도록 내부 웹 오디오 API를 기반으로 구현을 사용합니다.

**참고:** Google Chrome의 새로운 자동 재생 정책은 특정 조건에서 오디오 및 동영상의 자동 재생을 방지합니다. 예를 들어 게임이 로드된 직후 일부 배경 음악을 자동으로 재생하도록 설정되어 있을 수 있지만 웹사이트를 클릭하거나 탭하지 않으면 자동으로 재생되지 않습니다. 이 정책을 활성화하거나 비활성화하는 방법에 대한 자세한 내용은 Google Chrome의 [Chrome의 자동 재생 정책](https://developer.chrome.com/blog/autoplay/) 기술 자료를 참조하십시오.

## 지원되는 클래스##supported-classes

Unity 웹은 다음 API 클래스를 지원합니다.

| **클래스**                                                                                                    | **WebGL 지원 상태**                                                                                                           |
| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **[AudioSource](/engine/6000.0/script-reference/unity-engine/audio-source.md)**                            | WebGL은 일부 API를 지원합니다. 구체적인 지원 세부 사항은 [AudioSource](/engine/6000.0/script-reference/unity-engine/audio-source.md)를 참조하십시오. |
| **[AudioListener](/engine/6000.0/script-reference/unity-engine/audio-listener.md)**                        | 모든 API가 지원됩니다.                                                                                                            |
| **[AudioClip](/engine/6000.0/script-reference/unity-engine/audio-clip.md)**                                | WebGL은 일부 API를 지원합니다. 구체적인 지원 세부 사항은 [AudioClip](#audioclip)을 참조하십시오.                                                     |
| **[AudioMixer](/engine/6000.0/script-reference/unity-engine-audio/audio-mixer.md)**                        | WebGL은 일부 API를 지원합니다. 구체적인 지원 세부 사항은 [오디오 믹서](#audio-mixer)를 참조하십시오.                                                      |
| **[SystemInfo.supportsAudio](/engine/6000.0/script-reference/unity-engine/system-info/supports-audio.md)** | 브라우저가 WebGL에 대한 오디오 지원을 제공합니다. 따라서 `SystemInfo.supportsAudio`는 항상 true입니다.                                                |
| **[Microphone](/engine/6000.0/script-reference/unity-engine/microphone.md)**                               | 지원되지 않음.                                                                                                                  |

## AudioSource##audiosource

[AudioSource](/engine/6000.0/script-reference/unity-engine/audio-source.md) API는 다음을 비롯한 기본 포지셔널 오디오 재생을 지원합니다.

* 일시 정지 및 다시 시작
* 롤오프
* 피치 설정
* 도플러 효과 지원

Unity WebGL은 다음 AudioSource API를 지원합니다.

| **설정**                                                                                                             | **설명**                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
| **[Clip](/engine/6000.0/script-reference/unity-engine/audio-source/clip.md)**                                      | 다음에 재생할 오디오 클립을 결정합니다.                                                                                                   |
| **[dopplerLevel](/engine/6000.0/script-reference/unity-engine/audio-source/doppler-level.md)**                     | AudioSource의 도플러 스케일을 설정합니다.                                                                                             |
| **[ignoreListenerPause](/engine/6000.0/script-reference/unity-engine/audio-source/ignore-listener-pause.md)**      | AudioSource가 `AudioListener.pause`를 무시하고 오디오를 계속 재생하도록 허용합니다.                                                            |
| **[ignoreListenerVolume](/engine/6000.0/script-reference/unity-engine/audio-source/ignore-listener-volume.md)**    | 최종 사용자의 AudioSource 볼륨을 무시합니다.                                                                                           |
| **[isPlaying](/engine/6000.0/script-reference/unity-engine/audio-source/is-playing.md)**                           | `AudioSource.clip`이 재생 중이면 true를 반환합니다.                                                                                  |
| **[loop](/engine/6000.0/script-reference/unity-engine/audio-source/loop.md)**                                      | 애플리케이션이 `AudioSource.clip`을 반복하도록 허용합니다.                                                                                 |
| **[maxDistance](/engine/6000.0/script-reference/unity-engine/audio-source/max-distance.md)**                       | `AudioSource.clip`이 감쇠를 멈추거나 들리지 않게 되는 최대 거리를 설정합니다.                                                                     |
| **[minDistance](/engine/6000.0/script-reference/unity-engine/audio-source/min-distance.md)**                       | AudioSource.clip이 더 이상 볼륨을 높이지 않는 최소 거리를 설정합니다. 최소 거리를 넘으면 사운드가 감쇠되기 시작합니다.                                              |
| **[mute](/engine/6000.0/manual/audio-source-mute.md)**                                                             | AudioSource를 음소거합니다.                                                                                                     |
| **[pitch](/engine/6000.0/script-reference/unity-engine/audio-source/pitch.md)**                                    | `AudioSource.clip`의 피치를 설정합니다. WebGL은 양의 피치 값만 지원합니다.                                                                    |
| **[playOnAwake](/engine/6000.0/script-reference/unity-engine/audio-source/play-on-awake.md)**                      | 활성 상태일 때 AudioSource를 재생합니다.                                                                                             |
| **[rolloffMode](/engine/6000.0/script-reference/unity-engine/audio-source/rolloff-mode.md)**                       | 거리에 따른 AudioSource 감쇠를 설정합니다.                                                                                            |
| **[time](/engine/6000.0/script-reference/unity-engine/audio-source/time.md)**                                      | 재생 위치를 초 단위로 설정합니다.                                                                                                      |
| **[timeSamples](/engine/6000.0/script-reference/unity-engine/audio-source/time-samples.md)**                       | PCM(펄스 코드 변조) 샘플의 재생 위치를 설정합니다.                                                                                          |
| **[velocityUpdateMode](/engine/6000.0/script-reference/unity-engine/audio-source/velocity-update-mode.md)**        | AudioSource가 고정 또는 동적 업데이트 루프에서 업데이트되는지 여부를 설정합니다.                                                                       |
| **[volume](/engine/6000.0/script-reference/unity-engine/audio-source/volume.md)**                                  | AudioSource의 볼륨을 설정합니다(0.0-1.0).                                                                                         |
| **[Pause](/engine/6000.0/script-reference/unity-engine/audio-source/pause.md)**                                    | `AudioSource.clip`을 일시 정지합니다.                                                                                            |
| **[Play](/engine/6000.0/script-reference/unity-engine/audio-source/play.md)**                                      | `AudioSource.clip`을 재생합니다.                                                                                               |
| **[PlayDelayed](/engine/6000.0/script-reference/unity-engine/audio-source/play-delayed.md)**                       | 지정한 지연 시간(초)으로 `AudioSource.clip`을 재생합니다.                                                                                |
| **[PlayOneShot](/engine/6000.0/script-reference/unity-engine/audio-source/play-one-shot.md)**                      | [AudioClip](/engine/6000.0/script-reference/unity-engine/audio-source/clip.md)을 재생하고 volumeScale로 AudioSource 볼륨을 조정합니다. |
| **[PlayScheduled](/engine/6000.0/script-reference/unity-engine/audio-source/play-scheduled.md)**                   | 지정된 시간에 AudioSource를 재생합니다.                                                                                              |
| **[SetScheduledEndTime](/engine/6000.0/script-reference/unity-engine/audio-source/set-scheduled-end-time.md)**     | 예약된 `AudioSource.clip`이 종료되는 시간을 설정합니다.                                                                                  |
| **[SetScheduledStartTime](/engine/6000.0/script-reference/unity-engine/audio-source/set-scheduled-start-time.md)** | 예약된 `AudioSource.clip`이 시작되는 시간을 설정합니다.                                                                                  |
| **[Stop](/engine/6000.0/script-reference/unity-engine/audio-source/stop.md)**                                      | `AudioSource.clip` 재생을 정지합니다.                                                                                            |
| **[UnPause](/engine/6000.0/script-reference/unity-engine/audio-source/un-pause.md)**                               | 일시 정지된 `AudioSource.clip`을 해제합니다.                                                                                        |
| **[PlayClipAtPoint](/engine/6000.0/script-reference/unity-engine/audio-source/play-clip-at-point.md)**             | 월드 공간의 특정 위치에서 `AudioSource.clip`을 재생합니다.                                                                                |

## AudioClip##audioclipscrollpoint-id=audioclip-/

Unity WebGL은 대부분의 브라우저에서 지원하는 AAC 포맷의 [AudioClip](/engine/6000.0/script-reference/unity-engine/audio-clip.md) 파일을 임포트합니다. Unity WebGL은 다음 AudioClip API를 지원합니다.

| **프로퍼티**                                                                               | **설명**                                            |
| -------------------------------------------------------------------------------------- | ------------------------------------------------- |
| **[length](/engine/6000.0/script-reference/unity-engine/audio-clip/length.md)**        | 초 단위의 AudioClip 길이입니다.                            |
| **[loadState](/engine/6000.0/script-reference/unity-engine/audio-clip/load-state.md)** | AudioClip과 연결된 오디오 데이터의 현재 로드 상태를 반환합니다.          |
| **[samples](/engine/6000.0/script-reference/unity-engine/audio-clip/samples.md)**      | 샘플 단위의 AudioClip 길이입니다.                           |
| **[loadType](/engine/6000.0/script-reference/unity-engine/audio-clip/load-type.md)**   | 클립의 로드 유형입니다. 인스펙터에서 AudioClip 로드 유형을 설정할 수 있습니다. |

| **메서드**                                                                                      | **설명**                                    | **추가 정보**                                                                                                                                                      |
| -------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **[AudioClip.Create](/engine/6000.0/script-reference/unity-engine/audio-clip/create.md)**    | 지정된 이름과 길이의 AudioClip을 만듭니다.              | Unity WebGL은 `AudioClip.Create`를 부분적으로 지원합니다. 브라우저는 동적 스트리밍을 지원하지 않으므로 `AudioClip.Create`를 사용하려면 Stream을 false로 설정합니다.                                         |
| **[AudioClip.SetData](/engine/6000.0/script-reference/unity-engine/audio-clip/set-data.md)** | AudioSource.clip의 샘플 데이터를 설정합니다.          | Unity WebGL은 `AudioClip.SetData`를 부분적으로 지원합니다. 이 방법은 **Load Type**이 **Decompress on Load**로 설정된 압축된 오디오 파일에만 사용할 수 있습니다. [압축된 오디오](#compressed-audio)를 참조하십시오. |
| **[AudioClip.GetData](/engine/6000.0/script-reference/unity-engine/audio-clip/get-data.md)** | AudioSource.clip에서 샘플 데이터가 포함된 배열을 가져옵니다. | Unity WebGL은 `AudioClip.GetData`를 부분적으로 지원합니다. 이 방법은 **Load Type**이 **Decompress on Load**로 설정된 압축된 오디오 파일에만 사용할 수 있습니다. [압축된 오디오](#compressed-audio)를 참조하십시오. |

**참고:** Linux에서 오디오 클립을 지원하려면 [ffmpeg](https://ffmpeg.org/) 패키지가 설치되어 있는지 확인하십시오.

## 오디오 믹서##audio-mixerscrollpoint-id=audio-mixer-/

Unity 웹은 일부 [오디오 믹서](/engine/6000.0/manual/audio/mixer.md) 에셋의 기능을 지원합니다.

웹의 오디오 믹서로 다음을 수행할 수 있습니다.

* 오디오 믹서 에셋을 생성합니다.
* 계층 구조에 AudioMixerGroups를 추가합니다.
* 각 그룹의 볼륨을 조정합니다. 스크립팅을 사용하여 볼륨을 노출하거나 변경하려면 [AudioMixer.SetFloat](/engine/6000.0/script-reference/unity-engine-audio/audio-mixer/set-float.md)를 사용하십시오.

**참고**: 볼륨은 웹에서 유일하게 변경할 수 있는 프로퍼티입니다. 다른 프로퍼티와 음향 효과는 지원되지 않습니다.

## 압축된 오디오##compressed-audioscrollpoint-id=compressed-audio-/

Unity에서 WebGL과 함께 압축된 오디오를 사용하려면 AudioClip [loadType](/engine/6000.0/script-reference/unity-engine/audio-clip/load-type.md)을 다음 옵션 중 하나로 설정하십시오.

* [CompressedInMemory](/engine/6000.0/script-reference/unity-engine/audio-clip-load-type/compressed-in-memory.md)
* [DecompressOnLoad](/engine/6000.0/script-reference/unity-engine/audio-clip-load-type/decompress-on-load.md)

| **압축 방식**              | **설명**                                                                 | **고려 사항**                                                                                                                                                            |
| ---------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **CompressedInMemory** | 디스크의 오디오를 압축하고, 애플리케이션 메모리에 로드한 후 압축된 상태를 유지합니다.                       | 압축된 오디오는 지연이 발생할 수 있으며 오디오 재생 시 정밀도가 떨어집니다. 하지만 압축된 오디오는 압축 해제된 오디오보다 애플리케이션에서 메모리를 더 적게 사용합니다. `CompressedInMemory`는 정밀도에 영향을 받지 않는 오디오(예: 배경 음악)에 사용하는 것이 가장 좋습니다. |
| **DecompressOnLoad**   | CompressedInMemory와 마찬가지로 디스크의 오디오를 압축하고, 애플리케이션 메모리에 로드할 때 압축을 해제합니다. | 압축 해제된 오디오는 압축된 오디오에 비해 상당한 양의 메모리를 사용하지만 지연 시간이 더 짧고 오디오 유연성이 더 높습니다. 정밀도에 영향을 받는 오디오(예: 캐릭터 다이얼로그 또는 음향 효과)에는 `DecompressedOnLoad`를 사용하십시오.                        |

## 오디오 재생 및 브라우저 보안##audio-playback-and-browser-security

보안상의 이유로 최종 사용자가 마우스 클릭, 터치 이벤트 또는 키 누르기를 통해 애플리케이션 웹 페이지와 상호 작용할 때까지 브라우저에서 오디오 재생을 허용하지 않습니다. 로딩 화면을 사용하면 최종 사용자가 애플리케이션과 상호 작용하고 메인 콘텐츠가 시작되기 전에 오디오 재생을 시작할 수 있습니다.
