设置音频编码属性

最近更新时间:2022-09-20 05:17:40

功能描述

为了满足不同应用场景对音质的不同需求,SDK 提供了可对音频质量配置的接口,根据应用场景自定义搭配实现预期效果。比如语音电台、唱歌比赛类等。

实现方法

在通信之前,调用 SDK 提供的 setAudioProfile 方法可以根据场景需求灵活配置适合的音质属性。

参数说明

参数描述
profile代表不同的音频参数配置(音质),比如采样率、码率和编码模式等:
  • AUDIO_PROFILE_DEFAULT(0):默认设置。通信场景下为 SPEECH_STANDARD(1),直播场景下为 MUSIC_STANDARD(2)
  • AUDIO_PROFILE_SPEECH_STANDARD(1):指定 32 kHz 的采样率,语音编码,单声道,编码码率最大值为 18 Kbps
  • AUDIO_PROFILE_MUSIC_STANDARD(2):指定 48 kHz 的采样率,音乐编码,单声道,编码码率最大值为 48 Kbps
  • AUDIO_PROFILE_MUSIC_STANDARD_STEREO(3):指定 48 kHz 的采样率,音乐编码,双声道,编码码率最大值为 56 Kbps
  • AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4):指定 48 kHz 的采样率,音乐编码,单声道,编码码率最大值为 128 Kbps
  • AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5):指定 48 kHz 的采样率,音乐编码,双声道,编码码率最大值为 192 Kbps
scenario设置音频的使用场景,如娱乐、教学和游戏直播等。声音的流畅度、噪声抑制、音质等会根据不同的场景做出优化:
  • AUDIO_SCENARIO_DEFAULT(0):默认的音频应用场景
  • AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT(1):娱乐应用,适用于需要频繁上下麦的场景
  • AUDIO_SCENARIO_EDUCATION(2):教育场景
  • AUDIO_SCENARIO_GAME_STREAMING(3):游戏直播以及高音质互动应用,音质优先,适用于聊天房唱歌表演的场景
  • AUDIO_SCENARIO_SHOWROOM(4):秀场应用,连麦下音质仅次于 GAME_STREAMING,拥有更好的专业外设支持
  • AUDIO_SCENARIO_CHATROOM_GAMING(5):游戏应用,适用于游戏开黑场景,如吃鸡

API 时序图

下图展示使用设置音频属性的 API 调用时序:

参数搭配

你可以参考下图,根据应用场景对音质的不同需求,选择不同的参数搭配。

参数 场景需求 选项
profile 高音质
  • MUSIC_HIGH_QUALITY
  • MUSIC_HIGH_QUALITY_STEREO
  • 有一定音质要求
  • MUSIC_STANDARD
  • MUSIC_STANDARD_STEREO
  • 对音质无要求
  • DEFAULT
  • SPEECH_STANDARD
  • scenario 音质/音效优先 GAME_STREAMING
    频繁上下麦 CHATROOM_ENTERTAINMENT
    支持外放设备 SHOWROOM
    开黑少杂音 CHATROOM_GAMING
    传输质量稳定 DEFAULT

    也可以根据下表中提供的场景,直接选择参数进行搭配。

    场景profilescenario特性
    1 v 1 小班课DEFAULTDEFAULT传输流畅、音质高清,优先保证通话质量
    游戏开黑SPEECH_STANDARDCHATROOM_GAMING只保留语音,非语音部分(键盘声、外放音乐等)不会被传输。节省码率的同时减少杂音,适合多人团战
    狼人杀MUSIC_STANDARDCHATROOM_ENTERTAINMENT优秀的音乐编解码技术,提供更为丰富的声音呈现。上下麦没有音量、音质变化
    K 歌达人MUSIC_HIGH_QUALITYGAME_STREAMING高音质搭配丰富音效,适用于对音质要求高的场景
    语音电台MUSIC_HIGH_QUALITY_STEREOSHOWROOM高音质,立体声,支持专业外放设备
    音乐教学MUSIC_STANDARD_STEREOGAME_STREAMING优先保证音质。适用于外放音效也能直播出去的场景
    双师课堂MUSIC_STANDARD_STEREOCHATROOM_ENTERTAINMENT保证音质的同时,呈现更丰富的声音效果。上下麦没有音量、音质变化

    示例代码

    // 高音质
    mRtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO, 
                               Constants.AUDIO_SCENARIO_SHOWROOM);
    
    // 游戏开黑
    mRtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_SPEECH_STANDARD, 
                               Constants.AUDIO_SCENARIO_CHATROOM_GAMING);
    
    // 娱乐
    mRtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_STANDARD,
                               Constants.AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT);
    
    // KTV
    mRtcEngine.setAudioProfile(Constants.AUDIO_AUDIO_PROFILE_MUSIC_HIGH_QUALITY, 
                               Constants.AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT);
    

    API 参考

    开发注意事项

    该方法需要在 joinChannel 之前调用。

    不同的 Audio scenario 下,设备的系统音量是不同的。

    系统音量分通话音量和媒体音量两种:

    • 通话音量:进行语音、视频通话时的音量。通话音量有较好的回声消除。
    • 媒体音量:播放音乐、视频或游戏的音效、背景音的音量。媒体音量有较好的声音表现力。

    两者的差异在于媒体音量可以调整到 0,而通话音量不可以。

    SDK 在 setAudioProfile 中提供 6 种不同的 Audio scenario,其中不同的 Audio scenario 使用的音量不同。如果需要将音量调整到 0,建议使用媒体音量控制的 Audio scenario

    Audio scenario 音量
    GAME_STREAMING 媒体音量
    DEFAULT
  • 通信场景下,所有用户使用通话音量
  • 直播场景下,主播及连麦主播使用通话音量,观众使用媒体音量
  • EDUCATION
    SHOWROOM
    CHATROOM_ENTERTAINMENT 通话音量
    CHATROOM_GAMING 通话音量