场景模式

对于不同的音视频实际使用场景,用户对于流量和音质的要求都是不一样的,由于人声和音乐的特性不同,音质要求也不同。我们总结归纳了四种模式:基础通话模式高清通话模式高清音乐模式自适应高清音乐模式

类似的,基于用户场景对于视频清晰度与流畅度的不同要求,我们在精准探测带宽的基础上,提供两种通用视频调控策略:清晰优先策略流畅优先策略和一种场景调控策略屏幕共享场景调控策略

音频场景模式

在不同的音视频使用场景中,对于流量音质人声音乐的要求都不同。我们归纳了四种模式: 基础通话模式、高清通话模式、自适应高清音乐模式、强制高清音乐模式。不同的模式通过setChannelProfilesetParameters接口设置相关参数。

    /**
     * 设置通话场景模式,需要在发起通话前设置。
     *
     * @param profile 通话场景
     * @return {@code true} 方法调用成功,{@code false} 方法调用失败
     * @see AVChatChannelProfile
     */
    public abstract boolean setChannelProfile(int profile);

    /**
     * 设置参数。
     * 参数类型参考 {@link AVChatParameters.Key#type()}。
     * 参数可设置时机参考 {@link AVChatParameters.Key#runtime()},支持 {@code runtime} 代表通话过程中可操作,不支持则仅能通话前操作。
     * 参数是否可设置参考 {@link AVChatParameters.Key#writable()}, 支持 {@code writable} 代表能够设置参数值,不支持则仅能获取参数值。
     *
     * @param params 设置参数
     * @throws IllegalArgumentException 参数值非法或者参数不支持运行时设置
     * @see AVChatParameters
     * @see AVChatParameters.Key
     * @see AVChatMediaCodecMode
     * @see AVChatAudioEffectMode
     */
    public abstract void setParameters(AVChatParameters params) throws IllegalArgumentException;

视频调控模式

设置视频质量调整策略,可以设置清晰优先或者流畅优先以及屏幕共享模式。

    /**
     * <p>视频质量调整策略设置</p>
     *
     * <p>目前视频调整支持三种模式:
     * <ul>
     *     <li>清晰优先。 在此模式下会优先保证视频的清晰度, 网络不稳定时会优先降低帧率来保证视频的清晰度</li>
     *     <li>流畅优先。 在此模式下会优先保证视频的流畅度, 网络不稳定是会优先降低视频分辨率来保证视频的流畅度</li>
     *     <li>录屏模式。 在此模式下会保持分辨率不变, 初始码率较低,IP帧比例增大</li>
     * </ul>
     * </p>
     *
     * @param strategy 策略类型 {@link AVChatVideoQualityStrategy}
     * @return {@code true} 方法调用成功,{@code false} 方法调用失败
     * @see AVChatVideoQualityStrategy
     */
    public abstract boolean setVideoQualityStrategy(int strategy);
参数 说明
strategy 调控策略
  //设置清晰优先
  AVChatManager.getInstance().setVideoQualityStrategy(AVChatVideoQualityStrategy.PreferImageQuality);
  //设置流畅优先
  AVChatManager.getInstance().setVideoQualityStrategy(AVChatVideoQualityStrategy.PreferFrameRate);
  //设置屏幕共享
  AVChatManager.getInstance().setVideoQualityStrategy(AVChatVideoQualityStrategy.ScreenSharing);