# 设置音频编码属性 (/zh-CN/realtime-media/rtc/build/audio/audio-profile)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<_PlatformTabsGroup>
<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="android" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理]

SDK 默认使用 `AUDIO_PROFILE_DEFAULT` 编码属性和 `AUDIO_SCENARIO_DEFAULT` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API                                                          | 描述                                                         |
| :----------------------------------------------------------- | :----------------------------------------------------------- |
| `create(config)` | 在创建 `RtcEngine` 实例时，设置音频应用场景。默认值为 `AUDIO_SCENARIO_DEFAULT`。 |
| `setAudioProfile(profile)`                                   | 在加入频道前后均可设置音频编码属性。                         |
| `setAudioScenario`                         | 在加入频道前后均可设置音频应用场景。               |

## 前提条件 [#前提条件]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法]

本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你项目的 `/app/java/com.example.<projectname>/MainActivity` 文件中。

### 一对一互动教学 [#一对一互动教学]

一对一互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码：

```java
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.DEFAULT);
engine = RtcEngine.create(config);

// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_DEFAULT);
```

### 游戏开黑 [#游戏开黑]

该场景主要要求传输人声、无杂音、节省码率。声网推荐如下设置：

```java
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.CHATROOM);
engine = RtcEngine.create(config);

// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_SPEECH_STANDARD);
```

### 剧本杀 [#剧本杀]

该场景主要要求声音表现力好，上下麦时无音量、音质变化。声网推荐如下设置：

```java
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.CHATROOM);
engine = RtcEngine.create(config);

// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_STANDARD);
```

### KTV [#ktv]

KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码：

```java
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.GAME_STREAMING);
engine = RtcEngine.create(config);

// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_HIGH_QUALITY);
```

### 语音电台 [#语音电台]

语音电台一般会使用专业的音频设备，主要要求高音质和立体声。在你的项目中添加如下代码：

```java
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.GAME_STREAMING);
engine = RtcEngine.create(config);

// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO);
```

### 音乐教学 [#音乐教学]

该场景主要要求高音质，支持将扬声器播放的音效传输到远端。声网推荐如下设置：

```java
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.GAME_STREAMING);
engine = RtcEngine.create(config);

// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_STANDARD_STEREO);
```

### 双师课堂 [#双师课堂]

该场景主要要求高音质，呈现丰富的声音效果，上下麦时无音量、音质变化。声网推荐如下设置：

```java

// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenario.getValue(Constants.AudioScenario.CHATROOM);
engine = RtcEngine.create(config);

// 设置音频编码属性
RtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_STANDARD_STEREO);
```

## 参考信息 [#参考信息]

### 相关文档 [#相关文档]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)
- [实现高音质](/zh-CN/realtime-media/rtc/build/audio/optimal-audio-quality)

### 示例项目 [#示例项目]

声网提供了设置音频编码属性和应用场景功能的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">JoinChannelAudio</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/blob/main/Android/APIExample/app/src/main/java/io/agora/api/example/examples/basic/JoinChannelAudio.java" />
  <Card title={<RepositoryCardTitle provider="github">JoinChannelAudio</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/blob/main/Android/APIExample/app/src/main/java/io/agora/api/example/examples/basic/JoinChannelAudio.java" />
</Cards>

### API 参考 [#api-参考]

- [`create`[2/2]](/zh-CN/api-reference/rtc/android/initialize#api_irtcengine_initialize)
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/android/audio/audio-basic#api_irtcengine_setaudioprofile2)
- [`setAudioScenario`](/zh-CN/api-reference/rtc/android/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="ios" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理-1]

SDK 默认使用 `AgoraAudioProfileDefault` 编码属性和 `AgoraAudioScenarioHighDefault` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API                                                          | 描述                                                         |
| :----------------------------------------------------------- | :----------------------------------------------------------- |
| `sharedEngineWithConfig(config.audioScenario)` | 在创建 `AgoraRtcEngineKit` 实例时，设置音频应用场景。默认值为 `AgoraAudioScenarioHighDefault`。 |
| `setAudioProfile(profile)`                                   | 在加入频道前后均可设置音频编码属性。                         |
| `setAudioScenario`                         | 在加入频道前后均可设置音频应用场景。               |

## 前提条件 [#前提条件-1]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-1]

本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你项目的 `ViewController.swift` 文件中。

### 一对一互动教学 [#一对一互动教学-1]

一对一互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .default
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .default
agoraKit.setAudioProfile(audioProfile)
```

### 游戏开黑 [#游戏开黑-1]

该场景主要要求传输人声、无杂音、节省码率。声网推荐如下设置：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .chatRoom
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .speechStandard
agoraKit.setAudioProfile(audioProfile)
```

### 剧本杀 [#剧本杀-1]

该场景主要要求声音表现力好，上下麦时无音量、音质变化。声网推荐如下设置：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .chatRoom
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .musicStandard
agoraKit.setAudioProfile(audioProfile)
```

### KTV [#ktv-1]

KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .gameStreaming
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .musicHighQuality
agoraKit.setAudioProfile(audioProfile)
```

### 语音电台 [#语音电台-1]

语音电台一般会使用专业的音频设备，主要要求高音质和立体声。在你的项目中添加如下代码：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .gameStreaming
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .musicHighqQalityStereo
agoraKit.setAudioProfile(audioProfile)
```

### 音乐教学 [#音乐教学-1]

该场景主要要求高音质，支持将扬声器播放的音效传输到远端。声网推荐如下设置：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .gameStreaming
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .musicStandardStereo
agoraKit.setAudioProfile(audioProfile)
```

### 双师课堂 [#双师课堂-1]

该场景主要要求高音质，呈现丰富的声音效果，上下麦时无音量、音质变化。声网推荐如下设置：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var audioScenario:AgoraAudioScenario = .chatRoom
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .musicStandardStereo
agoraKit.setAudioProfile(audioProfile)
```

## 参考信息 [#参考信息-1]

### 注意事项 [#注意事项]

由于 iOS 系统限制，部分音频路由在通话音量模式下无法识别。因此，如需使用外接声卡，建议将音频应用场景设置为高音质场景 `AgoraAudioScenarioGameStreaming`(3)。在这种场景下，SDK 会切换到媒体音量规避该问题。

### 相关文档 [#相关文档-1]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)
- [实现高音质](/zh-CN/realtime-media/rtc/build/audio/optimal-audio-quality)

### 示例项目 [#示例项目-1]

声网提供了设置音频编码属性和应用场景功能的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">JoinChannelAudio</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/iOS/APIExample/APIExample/Examples/Basic/JoinChannelAudio" />
  <Card title={<RepositoryCardTitle provider="github">JoinChannelAudio</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/tree/main/iOS/APIExample/APIExample/Examples/Basic/JoinChannelAudio" />
</Cards>

### API 参考 [#api-参考-1]

- [`sharedEngineWithConfig`](/zh-CN/api-reference/rtc/ios/initialize#api_irtcengine_initialize)
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/ios/audio/audio-basic#api_irtcengine_setaudioprofile2)
- [`setAudioScenario`](/zh-CN/api-reference/rtc/ios/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="macos" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理-2]

SDK 默认使用 `AgoraAudioProfileDefault` 编码属性和 `AgoraAudioScenarioHighDefault` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API                                                          | 描述                                                         |
| :----------------------------------------------------------- | :----------------------------------------------------------- |
| `sharedEngineWithConfig(config.audioScenario)` | 在创建 `AgoraRtcEngineKit` 实例时，设置音频应用场景。默认值为 `AgoraAudioScenarioHighDefault`。 |
| `setAudioProfile(profile)`                                   | 在加入频道前后均可设置音频编码属性。                         |
| `setAudioScenario`                         | 在加入频道前后均可设置音频应用场景。               |

## 前提条件 [#前提条件-2]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-2]

本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你项目的 `ViewController.swift` 文件中。

### 一对一互动教学 [#一对一互动教学-2]

一对一互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .default
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .default
agoraKit.setAudioProfile(audioProfile)
```

### 游戏开黑 [#游戏开黑-2]

该场景主要要求传输人声、无杂音、节省码率。声网推荐如下设置：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .chatRoom
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .speechStandard
agoraKit.setAudioProfile(audioProfile)
```

### 剧本杀 [#剧本杀-2]

该场景主要要求声音表现力好，上下麦时无音量、音质变化。声网推荐如下设置：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .chatRoom
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .musicStandard
agoraKit.setAudioProfile(audioProfile)
```

### KTV [#ktv-2]

KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .gameStreaming
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .musicHighQuality
agoraKit.setAudioProfile(audioProfile)
```

### 语音电台 [#语音电台-2]

语音电台一般会使用专业的音频设备，主要要求高音质和立体声。在你的项目中添加如下代码：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .gameStreaming
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .musicHighqQalityStereo
agoraKit.setAudioProfile(audioProfile)
```

### 音乐教学 [#音乐教学-2]

该场景主要要求高音质，支持将扬声器播放的音效传输到远端。声网推荐如下设置：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var scenario:AgoraAudioScenario = .gameStreaming
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .musicStandardStereo
agoraKit.setAudioProfile(audioProfile)
```

### 双师课堂 [#双师课堂-2]

该场景主要要求高音质，呈现丰富的声音效果，上下麦时无音量、音质变化。声网推荐如下设置：

```swift
// Swift
// 在创建 AgoraRtcEngineKit 实例时，设置音频应用场景
var audioScenario:AgoraAudioScenario = .chatRoom
config.audioScenario = audioScenario
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)

// 设置音频编码属性
var profile:AgoraAudioProfile = .musicStandardStereo
agoraKit.setAudioProfile(audioProfile)
```

## 参考信息 [#参考信息-2]

### 相关文档 [#相关文档-2]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)
- [实现高音质](/zh-CN/realtime-media/rtc/build/audio/optimal-audio-quality)

### 示例项目 [#示例项目-2]

声网提供了设置音频编码属性和应用场景功能的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">JoinChannelAudio</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/macOS/APIExample/Examples/Basic/JoinChannelAudio" />
  <Card title={<RepositoryCardTitle provider="github">JoinChannelAudio</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/blob/main/macOS/APIExample/Examples/Basic/JoinChannelAudio" />
</Cards>

### API 参考 [#api-参考-2]

- [`sharedEngineWithConfig`](/zh-CN/api-reference/rtc/macos/initialize#api_irtcengine_initialize)
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/macos/audio/audio-basic#api_irtcengine_setaudioprofile2)
- [`setAudioScenario`](/zh-CN/api-reference/rtc/macos/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="web" />
在一些比较专业的场景里，用户对声音的效果尤为敏感，比如语音电台，此时就需要对双声道和高音质的支持。
这里的高音质是指采样率为 48 kHz、码率为 192 Kbps 的音频编码能力，可用于实现高保真的音乐场景，常见于语音电台、唱歌比赛等直播场景。

## 前提条件 [#前提条件-3]

开始前，请确保你已参考[快速开始](/zh-CN/realtime-media/rtc/get-started/quick-start)在你的项目中实现基本的实时音视频功能。
## 实现方法 [#实现方法-3]

声网 Web SDK 提供以下三种方法创建本地音频轨道：

- `createMicrophoneAudioTrack`
- `createBufferSourceAudioTrack`
- `createCustomAudioTrack`

你可以通过修改这些方法中的 `encoderConfig` 参数来调整音频的编码配置。`encoderConfig` 支持以下两种设置：

- 使用 SDK 预设的音频编码属性。
- 自定义各种音频编码参数的对象。

**使用预设音频编码属性**

```javascript
AgoraRTC.createMicrophoneAudioTrack({
  encoderConfig: "high_quality_stereo",
}).then(/**...**/);
```

**自定义音频编码属性**

```javascript
AgoraRTC.createMicrophoneAudioTrack({
  encoderConfig: {
    sampleRate: 48000,
    stereo: true,
    bitrate: 128,
  },
}).then(/**...**/);
```

## 参考信息 [#参考信息-3]

### 开发注意事项 [#开发注意事项]

请在调用 `AgoraRTCClient.publish` 方法发布音频轨道之前设置好音频编码属性，音频轨道发布后无法修改音频编码属性。

### API 参考 [#api-参考-3]

- [`createMicrophoneAudioTrack`](/zh-CN/api-reference/rtc/web/interfaces/iagorartc#createmicrophoneaudiotrack)
- [`createBufferSourceAudioTrack`](/zh-CN/api-reference/rtc/web/interfaces/iagorartc#createbuffersourceaudiotrack)
- [`createCustomAudioTrack`](/zh-CN/api-reference/rtc/web/interfaces/iagorartc#createcustomaudiotrack)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="windows" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理-3]

SDK 默认使用 `AUDIO_PROFILE_DEFAULT` 编码属性和 `AUDIO_SCENARIO_DEFAULT` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API                                                          | 描述                                                         |
| :----------------------------------------------------------- | :----------------------------------------------------------- |
| `initialize(context.audioScenario)` | 在创建 `IRtcEngine` 实例时，设置音频应用场景。默认值为 `AUDIO_SCENARIO_DEFAULT`。 |
| `setAudioProfile(profile)`                                   | 在加入频道前后均可设置音频编码属性。                         |
| `setAudioScenario`                         | 在加入频道前后均可设置音频应用场景。               |

## 前提条件 [#前提条件-4]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-4]

本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你的项目中。

### 一对一互动教学 [#一对一互动教学-3]

一对一互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码：

```cpp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AUDIO_SCENARIO_DEFAULT
m_rtcEngine->initialize(context);

// 设置音频编码属性
m_rtcEngine->setAudioProfile(AUDIO_PROFILE_DEFAULT);
```

### KTV [#ktv-3]

KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码：

```cpp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AUDIO_SCENARIO_GAME_STREAMING
m_rtcEngine->initialize(context);

// 设置音频编码属性
m_rtcEngine->setAudioProfile(AUDIO_PROFILE_MUSIC_HIGH_QUALITY);
```

### 语音电台 [#语音电台-3]

语音电台一般会使用专业的音频设备，主要要求高音质和立体声。在你的项目中添加如下代码：

```cpp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AUDIO_SCENARIO_GAME_STREAMING
m_rtcEngine->initialize(context);

// 设置音频编码属性
m_rtcEngine->setAudioProfile(AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO);
```

### 音乐教学 [#音乐教学-3]

该场景主要要求高音质，支持将扬声器播放的音效传输到远端。声网推荐如下设置：

```cpp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AUDIO_SCENARIO_GAME_STREAMING
m_rtcEngine->initialize(context);

// 设置音频编码属性
m_rtcEngine->setAudioProfile(AUDIO_PROFILE_MUSIC_STANDARD_STEREO);
```

## 参考信息 [#参考信息-4]

### 相关文档 [#相关文档-3]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)
- [实现高音质](/zh-CN/realtime-media/rtc/build/audio/optimal-audio-quality)

### 示例项目 [#示例项目-3]

声网提供了设置音频编码属性和应用场景功能的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">AudioProfile</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/windows/APIExample/APIExample/Advanced/AudioProfile" />
  <Card title={<RepositoryCardTitle provider="github">AudioProfile</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/tree/main/windows/APIExample/APIExample/Advanced/AudioProfile" />
</Cards>

### API 参考 [#api-参考-4]

- [`initialize`](/zh-CN/api-reference/rtc/cpp-all-platforms/initialize#api_irtcengine_initialize)
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_setaudioprofile2)
- [`setAudioScenario`](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="harmonyos" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理-4]

SDK 默认使用 `DEFAULT` 编码属性和 `DEFAULT` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API                                | 描述                                                        |
| :--------------------------------- | :--------------------------------------------------------- |
| `create(config.mAudioScenario)`    | 在创建 `RtcEngine` 实例时，设置音频应用场景。                   |
| `setAudioProfile`                  | 在加入频道前后均可设置音频编码属性。                             |
| `setAudioScenario`                 | 在加入频道前后均可设置音频应用场景。                             |

## 前提条件 [#前提条件-5]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-5]

本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你的项目中。

### 一对一互动教学 [#一对一互动教学-4]

一对一互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码：

```arkts
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenarioType.DEFAULT;
this.rtcEngine = RtcEngine.create(config);

// 设置音频编码属性
this.rtcEngine?.setAudioProfile(Constants.AudioProfileType.DEFAULT);
```

### 游戏开黑 [#游戏开黑-3]

该场景主要要求传输人声、无杂音、节省码率。推荐如下设置：

```arkts
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenarioType.CHATROOM;
this.rtcEngine = RtcEngine.create(config);

// 设置音频编码属性
this.rtcEngine?.setAudioProfile(Constants.AudioProfileType.SPEECH_STANDARD);
```

### 剧本杀 [#剧本杀-3]

该场景主要要求声音表现力好，上下麦时无音量、音质变化。推荐如下设置：

```arkts
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenarioType.CHATROOM;
this.rtcEngine = RtcEngine.create(config);

// 设置音频编码属性
this.rtcEngine?.setAudioProfile(Constants.AudioProfileType.MUSIC_STANDARD);
```

### KTV [#ktv-4]

KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码：

```arkts
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenarioType.GAME_STREAMING;
this.rtcEngine = RtcEngine.create(config);

// 设置音频编码属性
this.rtcEngine?.setAudioProfile(Constants.AudioProfileType.MUSIC_HIGH_QUALITY);
```

### 语音电台 [#语音电台-4]

语音电台一般会使用专业的音频设备，主要要求高音质和立体声。在你的项目中添加如下代码：

```arkts
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenarioType.GAME_STREAMING;
this.rtcEngine = RtcEngine.create(config);

// 设置音频编码属性
this.rtcEngine?.setAudioProfile(Constants.AudioProfileType.MUSIC_HIGH_QUALITY_STEREO);
```

### 音乐教学 [#音乐教学-4]

该场景主要要求高音质，支持将扬声器播放的音效传输到远端。推荐如下设置：

```arkts
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenarioType.GAME_STREAMING;
this.rtcEngine = RtcEngine.create(config);

// 设置音频编码属性
this.rtcEngine?.setAudioProfile(Constants.AudioProfileType.MUSIC_STANDARD_STEREO);
```

### 双师课堂 [#双师课堂-3]

该场景主要要求高音质，呈现丰富的声音效果，上下麦时无音量、音质变化。推荐如下设置：

```arkts
// 在创建 RtcEngine 实例时，设置音频应用场景
config.mAudioScenario = Constants.AudioScenarioType.CHATROOM;
this.rtcEngine = RtcEngine.create(config);

// 设置音频编码属性
this.rtcEngine?.setAudioProfile(Constants.AudioProfileType.MUSIC_STANDARD_STEREO);
```

## 参考信息 [#参考信息-5]

### 相关文档 [#相关文档-4]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)
- [实现高音质](/zh-CN/realtime-media/rtc/build/audio/optimal-audio-quality)

### 示例项目 [#示例项目-4]

声网提供了设置音频编码属性和应用场景功能的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title={<RepositoryCardTitle provider="gitee">JoinAudioChannel</RepositoryCardTitle>} href="https://gitee.com/agoraio-community/API-Examples/tree/main/HarmonyOS/APIExample/entry/src/main/ets/pages/basic/JoinAudioChannel.ets" />
  <Card title={<RepositoryCardTitle provider="github">JoinAudioChannel</RepositoryCardTitle>} href="https://github.com/Shengwang-Community/API-Examples/tree/main/HarmonyOS/APIExample/entry/src/main/ets/pages/basic/JoinAudioChannel.ets" />
</Cards>

### API 参考 [#api-参考-5]

- [`create`](/zh-CN/api-reference/rtc/harmonyos/initialize#api_irtcengine_initialize)
- [`setAudioProfile`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-basic#api_irtcengine_setaudioprofile2)
- [`setAudioScenario`](/zh-CN/api-reference/rtc/harmonyos/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="electron" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理-5]

SDK 默认使用 `AudioProfileDefault` 编码属性和 `AudioScenarioDefault` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API                                     | 描述                                                         |
| :-------------------------------------- | :----------------------------------------------------------- |
| `initialize(RtcEngineContext context);` | 在创建 `IRtcEngine` 实例时，设置音频应用场景。默认值为 `AudioScenarioDefault`。 |
| `setAudioProfile(profile)`              | 在加入频道前后均可设置音频编码属性。                         |
| `setAudioScenario(scenario)`            | 在加入频道前后均可设置音频应用场景。                         |

## 前提条件 [#前提条件-6]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-6]

本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你的项目中。

### 一对一互动教学 [#一对一互动教学-5]

一对一互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码：

```typescript
// 在初始化 IRtcEngine 实例时，设置音频应用场景
const engine = createAgoraRtcEngine();
engine.initialize({
  appId,
  ...,
  audioScenario: AudioScenarioType.AudioScenarioDefault,
});
// 设置音频编码属性
engine.setAudioProfile(AudioProfileType.AudioProfileDefault);
```

### KTV [#ktv-5]

KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码：

```typescript
// 在初始化 IRtcEngine 实例时，设置音频应用场景
const engine = createAgoraRtcEngine();
engine.initialize({
  appId,
  ...,
  audioScenario: AudioScenarioType.AudioScenarioDefault,
});
// 设置音频编码属性
engine.setAudioProfile(AudioProfileType.AudioProfileMusicHighQuality);
```

### 语音电台 [#语音电台-5]

语音电台一般会使用专业的音频设备，主要要求高音质和立体声。在你的项目中添加如下代码：

```typescript
// 在初始化 IRtcEngine 实例时，设置音频应用场景
const engine = createAgoraRtcEngine();
engine.initialize({
  appId,
  ...,
  audioScenario: AudioScenarioType.AudioScenarioGameStreaming,});
// 设置音频编码属性
engine.setAudioProfile(AudioProfileType.AudioProfileMusicHighQualityStereo);
```

### 音乐教学 [#音乐教学-5]

该场景主要要求高音质，支持将扬声器播放的音效传输到远端。声网推荐如下设置：

```typescript
// 在初始化 IRtcEngine 实例时，设置音频应用场景
const engine = createAgoraRtcEngine();
engine.initialize({
  appId,
  ...,
  audioScenario: AudioScenarioType.AudioScenarioDefault,
  });
  // 设置音频编码属性
engine.setAudioProfile(AudioProfileType.AudioProfileMusicStandardStereo);
```

## 参考信息 [#参考信息-6]

### 相关文档 [#相关文档-5]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)
- [实现高音质](/zh-CN/realtime-media/rtc/build/audio/optimal-audio-quality)

### API 参考 [#api-参考-6]

- [`initialize`](/zh-CN/api-reference/rtc/electron/initialize#api_irtcengine_initialize)
- [`setAudioProfile`](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_setaudioprofile)
- [`setAudioScenario`](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="unity" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理-6]

SDK 默认使用 `AUDIO_PROFILE_DEFAULT` 编码属性和 `AUDIO_SCENARIO_DEFAULT` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API                                                          | 描述                                                         |
| :----------------------------------------------------------- | :----------------------------------------------------------- |
| `Initialize(RtcEngineContext context)` | 在创建 `IRtcEngine` 实例时，设置音频应用场景。默认值为 `AUDIO_SCENARIO_DEFAULT`。 |
| `SetAudioProfile(profile)`                                   | 在加入频道前后均可设置音频编码属性。                         |
| `SetAudioScenario(scenario)`                         | 在加入频道前后均可设置音频应用场景。               |

## 前提条件 [#前提条件-7]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-7]

本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你的项目中。

### 一对一互动教学 [#一对一互动教学-6]

一对一互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码：

```csharp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context = new RtcEngineContext();
context.audioScenario = AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_DEFAULT
RtcEngine.Initialize(context);
 
// 设置音频编码属性
RtcEngine.SetAudioProfile(AUDIO_PROFILE_TYPE.AUDIO_PROFILE_DEFAULT);
```

### KTV [#ktv-6]

KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码：

```csharp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context = new RtcEngineContext();
context.audioScenario = AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_GAME_STREAMING
RtcEngine.Initialize(context);
 
// 设置音频编码属性
RtcEngine.SetAudioProfile(AUDIO_PROFILE_TYPE.AUDIO_PROFILE_MUSIC_HIGH_QUALITY);
```

### 语音电台 [#语音电台-6]

语音电台一般会使用专业的音频设备，主要要求高音质和立体声。在你的项目中添加如下代码：

```csharp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context = new RtcEngineContext();
context.audioScenario = AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_GAME_STREAMING
RtcEngine.Initialize(context);
 
// 设置音频编码属性
RtcEngine.SetAudioProfile(AUDIO_PROFILE_TYPE.AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO);
```

### 音乐教学 [#音乐教学-6]

该场景主要要求高音质，支持将扬声器播放的音效传输到远端。声网推荐如下设置：

```csharp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context = new RtcEngineContext();
context.audioScenario = AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_GAME_STREAMING
RtcEngine.Initialize(context);
 
// 设置音频编码属性
RtcEngine.SetAudioProfile(AUDIO_PROFILE_TYPE.AUDIO_PROFILE_MUSIC_STANDARD_STEREO);
```

## 参考信息 [#参考信息-7]

### 注意事项 [#注意事项-1]

由于 iOS 系统限制，部分音频路由在通话音量模式下无法识别。因此，如需使用外接声卡，建议将音频应用场景设置为高音质场景 `AUDIO_SCENARIO_GAME_STREAMING`(3)。在这种场景下，SDK 会切换到媒体音量规避该问题。

### 相关文档 [#相关文档-6]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)
- [实现高音质](/zh-CN/realtime-media/rtc/build/audio/optimal-audio-quality)

### API 参考 [#api-参考-7]

- [`Initialize`](/zh-CN/api-reference/rtc/unity/initialize#api_irtcengine_initialize)
- [`SetAudioProfile`[2/2]](/zh-CN/api-reference/rtc/unity/audio/audio-basic#api_irtcengine_setaudioprofile2)
- [`SetAudioScenario`](/zh-CN/api-reference/rtc/unity/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="flutter" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理-7]

SDK 默认使用 `audioProfileDefault` 编码属性和 `audioScenarioDefault` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API     | 描述   |
| :--------- | :------------------- |
| `initialize(context.audioScenario)` | 在创建 `RtcEngine` 实例时，设置音频应用场景。默认值为 `audioScenarioDefault`。 |
| `setAudioProfile(profile, scenario)`   | 在加入频道前后均可设置音频编码属性和应用场景。  |
| `setAudioScenario(scenario)`   | 在加入频道前后均可设置音频应用场景。  |

## 前提条件 [#前提条件-8]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-8]

本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你的项目中。

### 一对一互动教学 [#一对一互动教学-7]

一对一互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码：

```dart
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AudioScenarioType.audioScenarioDefault;
await rtcEngine.initialize(context);

// 设置音频编码属性
await rtcEngine.setAudioProfile(AudioProfileType.audioProfileDefault);
```

### KTV [#ktv-7]

KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码：

```dart
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AudioScenarioType.audioScenarioGameStreaming;
await rtcEngine.initialize(context);

// 设置音频编码属性
await rtcEngine.setAudioProfile(AudioProfileType.audioScenarioGameStreaming);
```

### 语音电台 [#语音电台-7]

语音电台一般会使用专业的音频设备，主要要求高音质和立体声。在你的项目中添加如下代码：

```dart
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AudioProfileType.audioScenarioChorus;
await rtcEngine.initialize(context);

// 设置音频编码属性
await rtcEngine.setAudioProfile(AudioProfileType.audioScenarioChorus);
```

### 音乐教学 [#音乐教学-7]

该场景主要要求高音质，支持将扬声器播放的音效传输到远端。推荐如下设置：

```dart
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AudioProfileType.audioScenarioMeeting;
await rtcEngine.initialize(context);

// 设置音频编码属性
await rtcEngine.setAudioProfile(AudioProfileType.audioScenarioMeeting);
```

## 参考信息 [#参考信息-8]

### 注意事项 [#注意事项-2]

由于 iOS 系统限制，部分音频路由在通话音量模式下无法识别。因此，如需使用外接声卡，建议将音频应用场景设置为高音质场景 `audioScenarioGameStreaming`(3)。在这种场景下，SDK 会切换到媒体音量规避该问题。

### 相关文档 [#相关文档-7]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)
- [实现高音质](/zh-CN/realtime-media/rtc/build/audio/optimal-audio-quality)

### API 参考 [#api-参考-8]

- [`initialize`](/zh-CN/api-reference/rtc/flutter/initialize#api_irtcengine_initialize)
- [`setAudioProfile`](/zh-CN/api-reference/rtc/flutter/audio/audio-basic#api_irtcengine_setaudioprofile)
- [`setAudioScenario`](/zh-CN/api-reference/rtc/flutter/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="react-native" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理-8]

SDK 默认使用 `AudioProfileDefault` 编码属性和 `AudioScenarioDefault` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API                                     | 描述                                                         |
| :-------------------------------------- | :----------------------------------------------------------- |
| `initialize(RtcEngineContext context);` | 在创建 `IRtcEngine` 实例时，设置音频应用场景。默认值为 `AudioScenarioDefault`。 |
| `setAudioProfile(profile)`              | 在加入频道前后均可设置音频编码属性。                         |
| `setAudioScenario(scenario)`            | 在加入频道前后均可设置音频应用场景。                         |

## 前提条件 [#前提条件-9]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-9]

本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你的项目中。

### 一对一互动教学 [#一对一互动教学-8]

一对一互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码：

```typescript
// 在初始化 IRtcEngine 实例时，设置音频应用场景
const engine = createAgoraRtcEngine();
engine.initialize({
  appId,
  ...,
  audioScenario: AudioScenarioType.AudioScenarioDefault,
});
// 设置音频编码属性
engine.setAudioProfile(AudioProfileType.AudioProfileDefault);
```

### KTV [#ktv-8]

KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码：

```typescript
// 在初始化 IRtcEngine 实例时，设置音频应用场景
const engine = createAgoraRtcEngine();
engine.initialize({
  appId,
  ...,
  audioScenario: AudioScenarioType.AudioScenarioDefault,
});
// 设置音频编码属性
engine.setAudioProfile(AudioProfileType.AudioProfileMusicHighQuality);
```

### 语音电台 [#语音电台-8]

语音电台一般会使用专业的音频设备，主要要求高音质和立体声。在你的项目中添加如下代码：

```typescript
// 在初始化 IRtcEngine 实例时，设置音频应用场景
const engine = createAgoraRtcEngine();
engine.initialize({
  appId,
  ...,
  audioScenario: AudioScenarioType.AudioScenarioGameStreaming,});
// 设置音频编码属性
engine.setAudioProfile(AudioProfileType.AudioProfileMusicHighQualityStereo);
```

### 音乐教学 [#音乐教学-8]

该场景主要要求高音质，支持将扬声器播放的音效传输到远端。声网推荐如下设置：

```typescript
// 在初始化 IRtcEngine 实例时，设置音频应用场景
const engine = createAgoraRtcEngine();
engine.initialize({
  appId,
  ...,
  audioScenario: AudioScenarioType.AudioScenarioDefault,
  });
  // 设置音频编码属性
engine.setAudioProfile(AudioProfileType.AudioProfileMusicStandardStereo);
```

## 参考信息 [#参考信息-9]

### 注意事项 [#注意事项-3]

由于 iOS 系统限制，部分音频路由在通话音量模式下无法识别。因此，如需使用外接声卡，建议将音频应用场景设置为高音质场景 `AudioScenarioGameStreaming`(3)。在这种场景下，SDK 会切换到媒体音量规避该问题。

### 相关文档 [#相关文档-8]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)
- [实现高音质](/zh-CN/realtime-media/rtc/build/audio/optimal-audio-quality)

### API 参考 [#api-参考-9]

- [`initialize`](/zh-CN/api-reference/rtc/react-native/initialize#api_irtcengine_initialize)
- [`setAudioProfile`](/zh-CN/api-reference/rtc/react-native/audio/audio-basic#api_irtcengine_setaudioprofile)
- [`setAudioScenario`](/zh-CN/api-reference/rtc/react-native/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="unreal" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理-9]

SDK 默认使用 `AUDIO_PROFILE_DEFAULT` 编码属性和 `AUDIO_SCENARIO_DEFAULT` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API                                                          | 描述                                                         |
| :----------------------------------------------------------- | :----------------------------------------------------------- |
| `initialize(context.audioScenario)` | 在创建 `IRtcEngine` 实例时，设置音频应用场景。默认值为 `AUDIO_SCENARIO_DEFAULT`。 |
| `setAudioProfile(profile)`                                   | 在加入频道前后均可设置音频编码属性。                         |
| `setAudioScenario`                         | 在加入频道前后均可设置音频应用场景。               |

## 前提条件 [#前提条件-10]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-10]

本节介绍如何为常见应用设置音频编码属性和应用场景。你可以将如下示例代码添加至你的项目中。

### 一对一互动教学 [#一对一互动教学-9]

一对一互动教学主要要求保证通话质量、传输流畅。在你的项目中添加如下代码：

```cpp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AUDIO_SCENARIO_DEFAULT
m_rtcEngine->initialize(context);

// 设置音频编码属性
m_rtcEngine->setAudioProfile(AUDIO_PROFILE_DEFAULT);
```

### KTV [#ktv-9]

KTV 主要要求高音质、对音乐和歌声的表现力好。在你的项目中添加如下代码：

```cpp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AUDIO_SCENARIO_GAME_STREAMING
m_rtcEngine->initialize(context);

// 设置音频编码属性
m_rtcEngine->setAudioProfile(AUDIO_PROFILE_MUSIC_HIGH_QUALITY);
```

### 语音电台 [#语音电台-9]

语音电台一般会使用专业的音频设备，主要要求高音质和立体声。在你的项目中添加如下代码：

```cpp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AUDIO_SCENARIO_GAME_STREAMING
m_rtcEngine->initialize(context);

// 设置音频编码属性
m_rtcEngine->setAudioProfile(AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO);
```

### 音乐教学 [#音乐教学-9]

该场景主要要求高音质，支持将扬声器播放的音效传输到远端。声网推荐如下设置：

```cpp
// 在初始化 IRtcEngine 实例时，设置音频应用场景
RtcEngineContext context;
context.audioScenario = AUDIO_SCENARIO_GAME_STREAMING
m_rtcEngine->initialize(context);

// 设置音频编码属性
m_rtcEngine->setAudioProfile(AUDIO_PROFILE_MUSIC_STANDARD_STEREO);
```

## 参考信息 [#参考信息-10]

### 注意事项 [#注意事项-4]

由于 iOS 系统限制，部分音频路由在通话音量模式下无法识别。因此，如需使用外接声卡，建议将音频应用场景设置为高音质场景 `AUDIO_SCENARIO_GAME_STREAMING`(3)。在这种场景下，SDK 会切换到媒体音量规避该问题。

### 相关文档 [#相关文档-9]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)

### 示例项目 [#示例项目-5]

声网提供了设置音频编码属性和应用场景功能的开源示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title="Unreal C++ 示例项目" href="https://github.com/AgoraIO-Extensions/Agora-Unreal-RTC-SDK/tree/main/Agora-Unreal-SDK-CPP-Example" />
</Cards>

### API 参考 [#api-参考-10]

- [`initialize`](/zh-CN/api-reference/rtc/unreal-cpp/initialize#api_irtcengine_initialize)
- [`setAudioProfile`[2/2]](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-basic#api_irtcengine_setaudioprofile2)
- [`setAudioScenario`](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />

<_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="blueprint" />
不同的 App 需要设置不同的音频编码属性或应用场景。本文介绍如何使用声网 RTC SDK 在你的 App 中设置合适的音频编码属性和应用场景。

## 技术原理 [#技术原理-10]

SDK 默认使用 `AUDIO_PROFILE_DEFAULT` 编码属性和 `AUDIO_SCENARIO_DEFAULT` 应用场景。如果默认设置无法满足你的需求，调用如下 API 设置音频编码属性和应用场景。

| API                                   | 描述                                                          |
| :------------------------------------ | :----------------------------------------------------------- |
| `Initialize(context.audioScenario)`    | 在创建 `IRtcEngine` 实例时，设置音频应用场景。默认值为 `AUDIO_SCENARIO_DEFAULT`。 |
| `SetAudioProfile(profile, scenario)`   | 在加入频道前后均可设置音频编码属性和应用场景。                       |
| `SetAudioScenario`                     | 在加入频道前后均可设置音频应用场景。                                |

## 前提条件 [#前提条件-11]

在实现设置音频编码属性和应用场景前，请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频互动](/zh-CN/realtime-media/rtc/get-started/quick-start)。

## 实现方法 [#实现方法-11]

本节介绍如何为常见应用设置音频编码属性和音频应用场景。

### 设置音频编码属性 [#设置音频编码属性]

本小节介绍如何调用 `SetAudioProfile` 设置音频编码属性。

#### 1. 创建 UMG [#1-创建-umg]

创建一个 **ComboBoxString**（下拉列表框）控件，命名为 **CBS_Audio_Profile**，你可以在下拉列表中按需选择音频编码属性，其中默认选项为 **AUDIO_PROFILE_DEFAULT**，其他选项详见 [`EAUDIO_PROFILE_TYPE`](/zh-CN/api-reference/rtc/unreal-blueprint/enum-audioprofiletype)。如下图所示：

![音频编码属性下拉列表框控件示意图](https://web-cdn.agora.io/docs-portal/img/rtc/audio-profile-umg-profile.png)

#### 2. 绑定 UI 事件 [#2-绑定-ui-事件]

创建 **Bind Event to On Selection Changed** 节点，分别连接 **CBS_Audio_Profile** 控件和 **OnSetAudioProfile** 回调。当你在 **CBS_Audio_Profile** 下拉列表框中选择不同的音频编码属性时，会触发 **OnSetAudioProfile** 回调。如下图所示：

![绑定音频编码属性选择事件的蓝图节点示意图](https://web-cdn.agora.io/docs-portal/img/rtc/audio-profile-bind-profile.png)

#### 3. 实现回调函数 [#3-实现回调函数]

创建 **OnSetAudioProfile** 回调函数，配置以下参数：

  | 输入参数 | 数据类型 | 参数描述 |
  | ------- | -------- | --------- |
  | `SelectedItem` | String | 音频编码属性选项。 |
  | `SelectionType` | Enum | 选择信息枚举类型，详见 [ESelectInfo](https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/SlateCore/Types/ESelectInfo__Type?application_version=4.27)。 |

触发该回调后，你选择的音频编码属性会传入 **Set Audio Profile** 的 **Profile** 参数，并调用 **Set Audio Profile** 方法完成设置。如下图所示：

![设置音频编码属性回调函数蓝图示意图](https://web-cdn.agora.io/docs-portal/img/rtc/audio-profile-callback-profile.png)

### 设置音频应用场景 [#设置音频应用场景]

本小节介绍如何调用 `SetAudioScenario` 设置音频应用场景。

#### 1. 创建 UMG [#1-创建-umg-1]

创建一个 **ComboBoxString**（下拉列表框）控件，命名为 **CBS_Audio_Scenario**，你可以在下拉列表中按需选择音频应用场景，其中默认选项为 **AUDIO_SCENARIO_DEFAULT**，其他选项详见 [`EAUDIO_SCENARIO_TYPE`](/zh-CN/api-reference/rtc/unreal-blueprint/enum-audioscenariotype)。如下图所示：

![音频应用场景下拉列表框控件示意图](https://web-cdn.agora.io/docs-portal/img/rtc/audio-profile-umg-scenario.png)

#### 2. 绑定 UI 事件 [#2-绑定-ui-事件-1]

创建 **Bind Event to On Selection Changed** 节点，分别连接 **CBS_Audio_Scenario** 控件和 **OnSetAudioScenario** 回调。当你在 **CBS_Audio_Scenario** 下拉列表框中选择不同的音频应用场景时，会触发 **OnSetAudioScenario** 回调。如下图所示：

![绑定音频应用场景选择事件的蓝图节点示意图](https://web-cdn.agora.io/docs-portal/img/rtc/audio-profile-bind-scenario.png)

#### 3. 实现回调函数 [#3-实现回调函数-1]

创建 **OnSetAudioScenario** 回调函数，配置以下参数：

  | 输入参数 | 数据类型 | 参数描述 |
  | ------- | -------- | --------- |
  | `SelectedItem` | String | 音频应用场景选项。 |
  | `SelectionType` | Enum | 选择信息枚举类型，详见 [ESelectInfo](https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/SlateCore/Types/ESelectInfo__Type?application_version=4.27)。 |

触发该回调后，你选择的音频应用场景会传入 **Set Audio Scenario** 的 **Scenario** 参数，并调用 **Set Audio Scenario** 方法完成设置。如下图所示：

![设置音频应用场景回调函数蓝图示意图](https://web-cdn.agora.io/docs-portal/img/rtc/audio-profile-callback-scenario.png)

### 推荐设置 [#推荐设置]

常见应用的音频编码属性和音频应用场景推荐设置如下：

| 常见应用 | 音频编码属性 | 音频应用场景 |
| --- | --- | --- |
| 一对一互动教学，主要要求保证通话质量、传输流畅 | `AUDIO_PROFILE_DEFAULT` | `AUDIO_SCENARIO_DEFAULT` |
| KTV，主要要求高音质、对音乐和歌声的表现力好 | `AUDIO_PROFILE_MUSIC_HIGH_QUALITY` | `AUDIO_SCENARIO_GAME_STREAMING` |
| 语音电台，一般会使用专业的音频设备，主要要求高音质和立体声 | `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO` | `AUDIO_SCENARIO_GAME_STREAMING` |
| 音乐教学，主要要求高音质，支持将扬声器播放的音效传输到远端 | `AUDIO_PROFILE_MUSIC_STANDARD_STEREO` | `AUDIO_SCENARIO_GAME_STREAMING` |

## 参考信息 [#参考信息-11]

### 注意事项 [#注意事项-5]

由于 iOS 系统限制，部分音频路由在通话音量模式下无法识别。因此，如需使用外接声卡，建议将音频应用场景设置为高音质场景 `AUDIO_SCENARIO_GAME_STREAMING`(3)。在这种场景下，SDK 会切换到媒体音量规避该问题。

### 相关文档 [#相关文档-10]

- [如何区分媒体音量和通话音量？](/zh-CN/reference/faq/integration/system_volume)

### 示例项目 [#示例项目-6]

声网提供了开源的示例项目供你参考，你可以前往下载或查看其中的源代码。

<Cards>
  <Card title="Blueprint 示例项目" href="https://github.com/AgoraIO-Extensions/Agora-Unreal-RTC-SDK/tree/main/Agora-Unreal-SDK-Blueprint-Example" />
  <Card title="JoinChannelAudio" href="https://github.com/AgoraIO-Extensions/Agora-Unreal-RTC-SDK/tree/main/Agora-Unreal-SDK-Blueprint-Example/Content/API-Example/Basic/JoinChannelAudio" />
</Cards>

### API 参考 [#api-参考-11]

- [`Initialize`](/zh-CN/api-reference/rtc/unreal-blueprint/initialize#api_irtcengine_initialize)
- [`SetAudioProfile`](/zh-CN/api-reference/rtc/unreal-blueprint/audio/audio-basic#api_irtcengine_setaudioprofile)
- [`SetAudioScenario`](/zh-CN/api-reference/rtc/unreal-blueprint/audio/audio-basic#api_irtcengine_setaudioscenario)
<_PlatformProcessedMarker close="true" />
</_PlatformTabsGroup>
