音视频编解码

本章介绍互动直播中编解码相关的功能。网易云允许开发者在互动直播过程中修改视频的最大编码码率,允许切换视频编解码器(硬编码、软编码)。 编码码率可以设置最大码率,设置范围是0 到5Mbps。

切换视频解码器

设置视频硬件编码模式,目前仅支持高通CPU系列的硬件编码,如果设备不支持硬件编码,设置硬件编码后会自动回滚到软件编码模式。

    /**
     * 视频硬件编码模式。
     *
     * 目前仅支持高通CPU系列的硬件编码,如果设备不支持硬件编码,设置硬件编码后会自动回滚到软件编码模式。
     *
     * Compatibility - 存在设备兼容性问题,部分设备已加入黑名单。
     *
     * @see AVChatMediaCodecMode#MEDIA_CODEC_AUTO 系统自动选择编解码器
     * @see AVChatMediaCodecMode#MEDIA_CODEC_HARDWARE 优先使用硬件编解码器
     * @see AVChatMediaCodecMode#MEDIA_CODEC_SOFTWARE 优先使用软件编解码器
     */
    public static final Key<String> KEY_VIDEO_ENCODER_MODE = new Key<>(RtcParameters.KEY_VIDEO_ENCODER_MODE, String.class);
参数 说明
value 编解码模式,参考AVChatMediaCodecMode
AVChatManager.getInstance().setParameter(AVChatParameters.KEY_VIDEO_ENCODER_MODE, MEDIA_CODEC_AUTO);

切换视频解码器

设置视频硬件解码模式,目前仅支持高通CPU系列的硬件解码,如果设备不支持硬件解码,设置硬件解码后会自动回滚到软件解码模式。

    /**
     * 视频硬件解码模式。
     *
     * 目前仅支持高通CPU系列的硬件解码,如果设备不支持硬件解码,设置硬件解码后会自动回滚到软件解码模式。
     * @see AVChatMediaCodecMode#MEDIA_CODEC_AUTO
     * @see AVChatMediaCodecMode#MEDIA_CODEC_HARDWARE
     * @see AVChatMediaCodecMode#MEDIA_CODEC_SOFTWARE
     */
    public static final Key<String> KEY_VIDEO_DECODER_MODE = new Key<>(RtcParameters.KEY_VIDEO_DECODER_MODE, String.class);
参数 说明
value 编解码模式,参考AVChatMediaCodecMode
AVChatManager.getInstance().setParameter(AVChatParameters.KEY_VIDEO_DECODER_MODE, MEDIA_CODEC_AUTO);

设置视频最大编码码率

设置视频流的最大码率,码率需要结合分辨率来设置,不能设置过小。

    /**
     * 视频最大码率。
     *
     * 设置视频流的最大码率,码率需要结合分辨率来设置,不能设置过小。
     *
     */
    public static final Key<Integer> KEY_VIDEO_MAX_BITRATE = new Key<>(RtcParameters.KEY_VIDEO_MAX_BITRATE, Integer.class);
参数 说明
value 码率值,0 到5Mbps,单位bps。
AVChatManager.getInstance().setParameter(AVChatParameters.KEY_VIDEO_MAX_BITRATE,  videoMaxBitrate * 1024);

切换视频质量

切换视频质量是通过setParameters或者setParameter接口设置的。

    /**
     * 视频清晰度。
     *
     * 在视频通话时,可以设置你期望的视频发送分辨率。
     * 实际采集分辨率和你设置的会有一定的区别, 对于{@code 720P} 可能存在 {@code 960x720} 或者 {@code 1280x720}。
     * 更极端的情况下,设备摄像头不支持采集某一档次的清晰度,会自动降低到下一档次。实际采用的清晰度级别可以通过此参数获取。
    public static final Key<Integer> KEY_VIDEO_QUALITY = new Key<>(RtcParameters.KEY_VIDEO_QUALITY, Integer.class);
AVChatVideoQuality 视频清晰度
QUALITY_DEFAULT 默认。
QUALITY_LOW 低分辨率。
QUALITY_MEDIUM 中等分辨率。
QUALITY_HIGH 高分辨率。
QUALITY_480P 480P。
QUALITY_540P 540P。
QUALITY_720P 720P。
   //设置高分辨率
   AVChatManager.getInstance().setParameter(AVChatParameters.KEY_VIDEO_QUALITY, AVChatVideoQuality.QUALITY_HIGH);