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