推流参数配置
LiveConfig用于配置视频采集/编码参数、音频采集/编码参数、及推流参数配置等。 视频采集/编码配置信息包括: 前后置摄像头:设置初始化拍摄器时使用前置或后置相机。 摄像头旋转角度:设置摄像头方向。 视频分辨率:视频采集及编码分辨率,视频编码场景中分辨率与清晰度正相关。 视频帧率:视频采集及编码帧率,视频编码场景中帧率与画面连贯正相关。 视频码率:视频编码码率,视频编码场景中码率与清晰度正相关。 视频gop长度:视频编码关键帧间隔,视频编码场景中关键帧间隔时间。
音频采集/编码配置信息包括: 音频采样率:音频编码采样率,音频编码场景中可以修改音频的采样率。 音频通道数:音频通道数,可配置单通道及立体声双通道。 音频码率:音频编码码率,音频编码场景中码率与清晰度成正相关。
推流配置信息包括: 横屏模式推流设置:设置横屏模式推流。 断流重连设置:设置SDK内部重连次数。 推流码率自适应:设置是否开启推流码率自适应及码率参数。 图片推流设置:设置开启推流暂停时是否推静态图片及设置图片地址。
对于不熟悉音视频产品的用户,直播SDK提供默认的参数配置,方便用户初始化。对于熟悉音视频直播推流的用户,可以自行修改参数以适配业务场景。
1.1视频采集与编码参数配置
视频采集支持设置前后置摄像头、摄像头旋转角度、分辨率、帧率、预览翻转。视频编码参数支持分辨率、帧率、码率、关键帧间隔。相关接口及说明如下:
// 设置摄像头ID,默认为前置摄像头CAMERA_FACING_FRONT
public final Builder setCameraId(int cameraId)
// 设置摄像头方向,该参数最终用于Camera的setDisplayOrientation接口, 默认竖屏 0
public final Builder setCameraOrientation(int cameraOrientation)
// 设置采集及输出视频宽度, 默认 1280
public final Builder setVideoWidth(int videoWidth)
// 设置采集及输出视频高度, 默认 720
public final Builder setVideoHeight(int videoHeight)
// 设置视频采集及编码帧率, 默认25fps
public final Builder setVideoFPS(int videoFPS)
// 设置视频初始码率, 默认1024000 bps
public final Builder setInitVideoBitrate(int initVideoBitrate)
// 设置I帧间隔时长,单位为秒,默认为2秒
public final Builder setGopLengthInSeconds(int gopLengthInSeconds)
// 设置本地预览初始水平翻转
public final Builder setPreviewHFlip(boolean preivewFlip)
// 是否使能视频推流,默认为true. 若设置为false,可实现纯音频推流
public final Builder setVideoEnabled(boolean videoEnabled)
1.2 音频采集及编码参数配置
音频采集编码配置支持音频采集率、音频通道及音频码率设置,相关接口如下:
// 设置音频采样率 默认 44100
public final Builder setAudioSampleRate(int audioSampleRate)
// 设置音频通道数 默认 2
public final Builder setAudioChannels(int channels)
// 设置音频码率
public final Builder setAudioBitrate(int audioBitrate)
// 是使能音频推流,默认为true. 若setVideoEnabled(false) 则进行纯音频推流
public final Builder setAudioEnabled(boolean audioEnabled)
注:音频采样率44100 是各平台普通支持的采样率,不容易出现兼容性问题。
1.3 推流参数配置
可通过如下接口设置推流及视频连麦时远端视频是否默认水平翻转:
// 设置直播推流初始水平翻转
public final Builder setLiveHFlip(boolean liveFlip)
// 设置连麦互动推流水平翻转
public final Builder setInteractHFlip(boolean interactHFlip)
推流视频翻转 可通过如下接口设置推流及视频连麦时远端视频是否默认水平翻转:
// 设置直播推流初始水平翻转
public final Builder setLiveHFlip(boolean liveFlip)
// 设置连麦互动推流水平翻转
public final Builder setInteractHFlip(boolean interactHFlip)
横屏推流
/**
* 设置屏幕方向
* @param orientation 传入屏幕方向 横屏{@link ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}
* 或竖屏{@link ActivityInfo#SCREEN_ORIENTATION_PORTRAIT}
*/
public final Builder setScreenOrientation(int orientation)
注: 可通过getWindowManager().getDefaultDisplay().getRotation() 获得旋转角度分析屏幕方向。
断流重连 当直播推流遇到异常后,SDK 支持内部重连,可设置内部重连次数:
// 设置内部出错重连次数 默认 3次
public final Builder setReconnectTimes(int reconnectTimes)
注:SDK 内部重试N次仍然失败后,用户可在监听到相关Error后再次发起外部重连。
推流码率自适应 SDK 支持根据当前推流质量动态切换推流码率,相关的设置接口包括:
// 开启或关闭动态码率自动调整
public final Builder setQosEnabled(boolean qosEnabled)
SDK 内部通过多次探测推流质量后调整一次码率,每次探测的周期为2S,参数 qosSensitivity 为调整一次码率的推流质量探测次数。调整一次码率的周期为:qosSensitivity*2s
// 设置动态码率灵敏度-探测几次调整一次码率 范围[5, 10]
public final Builder setQosSensitivity(int qosSensitivity)
// 动态码率设置-视频最大码率 默认 1024000 bps
public final Builder setMaxVideoBitrate(int maxVideoBitrate)
// 动态码率设置-视频最小码率 默认 200000 bps
public final Builder setMinVideoBitrate(int minVideoBitrate)
注:最大码率不得小于100000bps, 最小码率不得小于100000bps
图片推流 推流配置支持开启及配置图片推流,若开启图片推流则可以使得在推流页进入后台时继续推流,由于推流进入后台,摄像头被动关闭,可通过配置一个静态图片,当后台推流画面呈现预设图片。若关闭后台推流,则推流进入后台时暂停音视频推流,声音、画面静止。
// 设置是否开图片推流
public final Builder setPicStreamingEnabled(boolean enabled)
// 设置推流暂停图片位置
public final Builder setPausePicPath(String pausePicPath)
注:推流暂停图片可以是sdcard的本地图片,也可以是apk 里的resource。若为sdcard 本地图片则path 为图片文件绝对路径,若为rec/drawable 下的png 格式 resource 则path只需传入文件名称。
外部采集 直播SDK支持音视频源外部采集即外部媒体源导入,通过下面两个接口分别开启/关闭视频及音频的外部采集。
/**
* 设置视频外部采集
* @param extAudioCaptureEnabled 是否开启视频外部采集
* @return
*/
public final Builder setExtAudioCaptureEnabled(boolean extAudioCaptureEnabled)
/**
* 设置音频外部采集
* @param extAudioCaptureEnabled 是否开启音频外部采集
* @return
*/
public final Builder setExtVideoCaptureEnabled(boolean extVideoCaptureEnabled)
注:当前ARMediaStreamingPusher 及InteractStreamingPusher 支持音视频外部采集。使用外部采集,除使能外部采集外,还需要通过数据导入接口输入音视频数据。