腾讯云直播推流器。
主要负责将本地的音频和视频画面进行编码,并推送到指定的推流地址,支持任意的推流服务端。
推流器包含如下能力:
- 自定义的视频采集,让您可以根据项目需要定制自己的音视频数据源;
- 美颜、滤镜、贴纸,包含多套美颜磨皮算法(自然&光滑)和多款色彩空间滤镜(支持自定义滤镜);
- Qos 流量控制技术,具备上行网络自适应能力,可以根据主播端网络的具体情况实时调节音视频数据量;
- 脸形调整、动效挂件,支持基于优图 AI 人脸识别技术的大眼、瘦脸、隆鼻等脸形微调以及动效挂件效果,只需要购买 优图 License 就可以轻松实现丰富的直播效果。
◆ com::tencent::live2::V2TXLivePusher
class com::tencent::live2::V2TXLivePusher |
◆ enableCustomAudioCapture()
abstract int enableCustomAudioCapture |
( |
boolean |
enable | ) |
|
|
abstract |
开启/关闭自定义音频采集。
在自定义音频采集模式下,SDK 不再从麦克风采集声音,只保留编码和发送能力。
开启/关闭自定义音频采集
- 注意
- 需要在 startPush 前调用才会生效。
- 参数
-
enable | true: 开启自定义采集; false: 关闭自定义采集。【默认值】: false |
- 返回
- 返回值 V2TXLiveCode
◆ enableCustomVideoCapture()
abstract int enableCustomVideoCapture |
( |
boolean |
enable | ) |
|
|
abstract |
开启/关闭自定义视频采集。
在自定义视频采集模式下,SDK 不再从摄像头采集图像,只保留编码和发送能力。
- 注意
- 需要在 startPush 之前调用,才会生效。
- 参数
-
enable | true:开启自定义采集;false:关闭自定义采集。【默认值】:false |
- 返回
- 返回值 V2TXLiveCode
◆ enableCustomVideoProcess()
开启/关闭自定义视频处理。
- 注意
- RTMP 支持格式: format = V2TXLivePixelFormatTexture2D && buffetType = V2TXLiveBufferTypeTexture RTC 支持格式: format = V2TXLivePixelFormatTexture2D && bufferType = V2TXLiveBufferTypeTexture format = V2TXLivePixelFormatI420 && bufferType = V2TXLiveBufferTypeByteBuffer format = V2TXLivePixelFormatI420 && bufferType = V2TXLiveBufferTypeByteArray
- 参数
-
enable | true: 开启; false: 关闭。【默认值】: false |
- 返回
- 返回值 V2TXLiveCode
- V2TXLIVE_OK: 成功
- V2TXLIVE_ERROR_NOT_SUPPORTED: 不支持的格式
◆ enableVolumeEvaluation()
abstract int enableVolumeEvaluation |
( |
int |
intervalMs | ) |
|
|
abstract |
◆ getAudioEffectManager()
获取音效管理对象 TXAudioEffectManager。
通过音效管理,您可以使用以下功能:
- 调整麦克风收集的人声音量。
- 设置混响和变声效果。
- 开启耳返,设置耳返音量。
- 添加背景音乐,调整背景音乐的播放效果。
◆ getBeautyManager()
获取美颜管理对象 TXBeautyManager。
通过美颜管理,您可以使用以下功能:
- 设置”美颜风格”、”美白”、“红润”、“大眼”、“瘦脸”、“V脸”、“下巴”、“短脸”、“小鼻”、“亮眼”、“白牙”、“祛眼袋”、“祛皱纹”、“祛法令纹”等美容效果。
- 调整“发际线”、“眼间距”、“眼角”、“嘴形”、“鼻翼”、“鼻子位置”、“嘴唇厚度”、“脸型”。
- 设置人脸挂件(素材)等动态效果。
- 添加美妆。
- 进行手势识别。
◆ getDeviceManager()
获取设备管理对象 TXDeviceManager。
通过设备管理,您可以使用以下功能:
- 切换前后摄像头。
- 设置自动聚焦。
- 设置摄像头缩放倍数。
- 打开或关闭闪光灯。
- 切换耳机或者扬声器。
- 修改音量类型(媒体音量或者通话音量)。
◆ isPushing()
abstract int isPushing |
( |
| ) |
|
|
abstract |
◆ pauseAudio()
abstract int pauseAudio |
( |
| ) |
|
|
abstract |
◆ pauseVideo()
abstract int pauseVideo |
( |
| ) |
|
|
abstract |
◆ resumeAudio()
abstract int resumeAudio |
( |
| ) |
|
|
abstract |
◆ resumeVideo()
abstract int resumeVideo |
( |
| ) |
|
|
abstract |
◆ sendCustomAudioFrame()
◆ sendCustomVideoFrame()
◆ sendSeiMessage()
abstract int sendSeiMessage |
( |
int |
payloadType, |
|
|
byte[] |
data |
|
) |
| |
|
abstract |
◆ setAudioQuality()
设置推流音频质量。
- 参数
-
quality | 音频质量 V2TXLiveAudioQuality
- V2TXLiveAudioQualityDefault 【默认值】: 通用
- V2TXLiveAudioQualitySpeech: 语音
- V2TXLiveAudioQualityMusic: 音乐
|
- 返回
- 返回值 V2TXLiveCode
- V2TXLIVE_OK: 成功
- V2TXLIVE_ERROR_REFUSED: 推流过程中,不允许调整音质
◆ setEncoderMirror()
abstract int setEncoderMirror |
( |
boolean |
mirror | ) |
|
|
abstract |
设置视频编码镜像。
- 注意
- 编码镜像只影响观众端看到的视频效果。
- 参数
-
mirror | 是否镜像
- false【默认值】: 播放端看到的是非镜像画面
- true: 播放端看到的是镜像画面
|
- 返回
- 返回值 V2TXLiveCode
◆ setMixTranscodingConfig()
设置云端的混流转码参数
如果您在实时音视频 控制台 中的功能配置页开启了“启用旁路推流”功能, 房间里的每一路画面都会有一个默认的直播 CDN 地址
一个直播间中可能有不止一位主播,而且每个主播都有自己的画面和声音,但对于 CDN 观众来说,他们只需要一路直播流 所以您需要将多路音视频流混成一路标准的直播流,这就需要混流转码
当您调用 setMixTranscodingConfig() 接口时,SDK 会向腾讯云的转码服务器发送一条指令,目的是将房间里的多路音视频流混合为一路, 您可以通过 mixStreams 参数来调整每一路画面的位置,以及是否只混合声音,也可以通过 videoWidth、videoHeight、videoBitrate 等参数控制混合音视频流的编码参数
【画面1】=> 解码 ====> \
\
【画面2】=> 解码 => 画面混合 => 编码 => 【混合后的画面】
/
【画面3】=> 解码 ====> /
【声音1】=> 解码 ====> \
\
【声音2】=> 解码 => 声音混合 => 编码 => 【混合后的声音】
/
【声音3】=> 解码 ====> /
参考文档:云端混流转码
- 注意
- 关于云端混流的注意事项:
- 仅支持 RTC 模式混流
- 云端转码会引入一定的 CDN 观看延时,大概会增加1 - 2秒
- 调用该函数的用户,会将连麦中的多路画面混合到自己当前这路画面或者 config 中指定的 streamId 上
- 请注意,若您还在房间中且不再需要混流,请务必传入 null 进行取消,因为当您发起混流后,云端混流模块就会开始工作,不及时取消混流可能会引起不必要的计费损失
- 请放心,您退房时会自动取消混流状态
- 参数
-
- 返回
- 返回值 V2TXLiveCode
- V2TXLIVE_OK: 成功
- V2TXLIVE_ERROR_REFUSED: 未开启推流时,不允许设置混流转码参数
◆ setObserver()
设置推流器回调。
通过设置回调,可以监听 V2TXLivePusher 推流器的一些回调事件, 包括推流器状态、音量回调、统计数据、警告和错误信息等。
- 参数
-
◆ setProperty()
abstract int setProperty |
( |
String |
key, |
|
|
Object |
value |
|
) |
| |
|
abstract |
调用 V2TXLivePusher 的高级 API 接口。
- 注意
- 该接口用于调用一些高级功能。
- 参数
-
key | 高级 API 对应的 key。 |
value | 调用 key 所对应的高级 API 时,需要的参数。 |
- 返回
- 返回值 V2TXLiveCode
- V2TXLIVE_OK: 成功
- V2TXLIVE_ERROR_INVALID_PARAMETER: 操作失败,key 不允许为 null
◆ setRenderMirror()
设置本地摄像头预览镜像。
本地摄像头分为前置摄像头和后置摄像头,系统默认情况下,是前置摄像头镜像,后置摄像头不镜像,这里可以修改前置后置摄像头的默认镜像类型。
- 参数
-
mirrorType | 摄像头镜像类型 V2TXLiveMirrorType
- V2TXLiveMirrorTypeAuto 【默认值】: 默认镜像类型. 在这种情况下,前置摄像头的画面是镜像的,后置摄像头的画面不是镜像的
- V2TXLiveMirrorTypeEnable: 前置摄像头 和 后置摄像头,都切换为镜像模式
- V2TXLiveMirrorTypeDisable: 前置摄像头 和 后置摄像头,都切换为非镜像模式
|
- 返回
- 返回值 V2TXLiveCode
◆ setRenderRotation()
设置本地摄像头预览画面的旋转角度。
- 注意
- 只旋转本地预览画面,不影响推流出去的画面。
- 参数
-
rotation | 预览画面的旋转角度 V2TXLiveRotation
- V2TXLiveRotation0【默认值】: 0度, 不旋转
- V2TXLiveRotation90: 顺时针旋转90度
- V2TXLiveRotation180: 顺时针旋转180度
- V2TXLiveRotation270: 顺时针旋转270度
|
- 返回
- 返回值 V2TXLiveCode
◆ setRenderView() [1/3]
abstract int setRenderView |
( |
SurfaceView |
view | ) |
|
|
abstract |
设置本地摄像头预览 View。
本地摄像头采集到的画面,经过美颜、脸形调整、滤镜等多种效果叠加之后,最终会显示到传入的 View 上。
- 参数
-
- 返回
- 返回值 V2TXLiveCode
◆ setRenderView() [2/3]
abstract int setRenderView |
( |
TextureView |
view | ) |
|
|
abstract |
设置本地摄像头预览 View。
本地摄像头采集到的画面,经过美颜、脸形调整、滤镜等多种效果叠加之后,最终会显示到传入的 View 上。
- 参数
-
- 返回
- 返回值 V2TXLiveCode
◆ setRenderView() [3/3]
abstract int setRenderView |
( |
TXCloudVideoView |
view | ) |
|
|
abstract |
设置本地摄像头预览 View。
本地摄像头采集到的画面,经过美颜、脸形调整、滤镜等多种效果叠加之后,最终会显示到传入的 View 上。
- 参数
-
- 返回
- 返回值 V2TXLiveCode
◆ setVideoQuality()
◆ setWatermark()
abstract int setWatermark |
( |
Bitmap |
image, |
|
|
float |
x, |
|
|
float |
y, |
|
|
float |
scale |
|
) |
| |
|
abstract |
设置推流器水印。默认情况下,水印不开启。
- 参数
-
image | 水印图片。如果该值为 null,则等效于禁用水印 |
x | 水印的横坐标,取值范围为0 - 1的浮点数。 |
y | 水印的纵坐标,取值范围为0 - 1的浮点数。 |
scale | 水印图片的缩放比例,取值范围为0 - 1的浮点数。 |
- 返回
- 返回值 V2TXLiveCode
◆ showDebugView()
abstract void showDebugView |
( |
boolean |
isShow | ) |
|
|
abstract |
◆ snapshot()
abstract int snapshot |
( |
| ) |
|
|
abstract |
截取推流过程中的本地画面。
- 返回
- 返回值 V2TXLiveCode
- V2TXLIVE_OK: 成功
- V2TXLIVE_ERROR_REFUSED: 已经停止推流,不允许调用截图操作
◆ startCamera()
abstract int startCamera |
( |
boolean |
frontCamera | ) |
|
|
abstract |
打开本地摄像头。
- 参数
-
frontCamera | 指定摄像头方向是否为前置
- true 【默认值】: 切换到前置摄像头
- false: 切换到后置摄像头
|
- 注意
- startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个采集源可以上行,不同采集源之间切换,请先关闭前一采集源,再开启后一采集源,保证同一采集源的开启和关闭是成对调用的。比如:采集源从Camera切换到VirtualCamera,调用顺序是 startCamera -> stopCamera -> startVirtualCamera。
- 返回
- 返回值 V2TXLiveCode
◆ startMicrophone()
abstract int startMicrophone |
( |
| ) |
|
|
abstract |
◆ startPush()
abstract int startPush |
( |
String |
url | ) |
|
|
abstract |
开始音视频数据推流。
- 参数
-
- 返回
- 返回值 V2TXLiveCode
- V2TXLIVE_OK: 操作成功,开始连接推流目标地址
- V2TXLIVE_ERROR_INVALID_PARAMETER: 操作失败,url 不合法
- V2TXLIVE_ERROR_INVALID_LICENSE: 操作失败,license 不合法,鉴权失败
- V2TXLIVE_ERROR_REFUSED: 操作失败,RTC 不支持同一设备上同时推拉同一个 StreamId
◆ startScreenCapture()
abstract int startScreenCapture |
( |
| ) |
|
|
abstract |
开启屏幕采集。
- 注意
- startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个采集源可以上行,不同采集源之间切换,请先关闭前一采集源,再开启后一采集源,保证同一采集源的开启和关闭是成对调用的。比如:采集源从Camera切换到ScreenCapture,调用顺序是 startCamera -> stopCamera -> startScreenCapture。
- 返回
- 返回值 V2TXLiveCode
◆ startVirtualCamera()
abstract int startVirtualCamera |
( |
Bitmap |
image | ) |
|
|
abstract |
开启图片推流。
- 参数
-
- 注意
- startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个采集源可以上行,不同采集源之间切换,请先关闭前一采集源,再开启后一采集源,保证同一采集源的开启和关闭是成对调用的。比如:采集源从Camera切换到VirtualCamera,调用顺序是 startCamera -> stopCamera -> startVirtualCamera。
- 返回
- 返回值 V2TXLiveCode
◆ stopCamera()
abstract int stopCamera |
( |
| ) |
|
|
abstract |
◆ stopMicrophone()
abstract int stopMicrophone |
( |
| ) |
|
|
abstract |
◆ stopPush()
abstract int stopPush |
( |
| ) |
|
|
abstract |
◆ stopScreenCapture()
abstract int stopScreenCapture |
( |
| ) |
|
|
abstract |
◆ stopVirtualCamera()
abstract int stopVirtualCamera |
( |
| ) |
|
|
abstract |