V2TXLivePusher

最近更新时间:2024-10-09 10:20:51

我的收藏
Copyright (c) 2021 Tencent. All rights reserved.

Module: V2TXLivePusher @ TXLiteAVSDK

Function: 腾讯云直播推流器


功能

腾讯云直播推流器

介绍

主要负责将本地的音频和视频画面进行编码,并推送到指定的推流地址,支持任意的推流服务端。
推流器包含如下能力:
自定义的视频采集,让您可以根据项目需要定制自己的音视频数据源。
美颜、滤镜、贴纸,包含多套美颜磨皮算法(自然&光滑)和多款色彩空间滤镜(支持自定义滤镜)。
Qos 流量控制技术,具备上行网络自适应能力,可以根据主播端网络的具体情况实时调节音视频数据量。
脸型调整、动效挂件,支持基于优图 AI 人脸识别技术的大眼、瘦脸、隆鼻等脸型微调以及动效挂件效果,只需要购买 优图 License 就可以轻松实现丰富的直播效果。

V2TXLivePusher

V2TXLivePusher

函数列表
描述
释放 V2TXLivePusher 资源
设置推流器回调
设置本地摄像头预览 View
设置本地摄像头预览 View
设置本地摄像头预览 View
设置本地摄像头预览镜像
设置视频编码镜像
设置本地摄像头预览画面的旋转角度
设置本地摄像头预览画面的填充模式
打开本地摄像头
关闭本地摄像头
打开麦克风
关闭麦克风
开启图片推流
关闭图片推流
开启屏幕采集
关闭屏幕采集
暂停推流器的音频流
恢复推流器的音频流
暂停推流器的视频流
恢复推流器的视频流
开始音视频数据推流
停止推送音视频数据
当前推流器是否正在推流中
设置推流音频质量
设置推流视频编码参数
获取音效管理对象
获取美颜管理对象
获取设备管理对象
截取推流过程中的本地画面
设置推流器水印。默认情况下,水印不开启
启用采集音量大小提示
开启/关闭自定义视频处理
开启/关闭自定义视频采集
开启/关闭自定义音频采集
在自定义视频采集模式下,将采集的视频数据发送到SDK
在自定义音频采集模式下,将采集的音频数据发送到SDK
开启/关闭对经过前处理后的本地音频帧的监听回调
发送 SEI 消息
打开系统声音采集
关闭系统声音采集
显示仪表盘。
调用 V2TXLivePusher 的高级 API 接口。
设置云端的混流转码参数
开始录制音视频流
停止录制音视频流
启用人声检测

release

release

释放 V2TXLivePusher 资源

setObserver

setObserver
void setObserver
(V2TXLivePusherObserver observer)

设置推流器回调

通过设置回调,可以监听 V2TXLivePusher 推流器的一些回调事件,
包括推流器状态、音量回调、统计数据、警告和错误信息等。
参数
描述
observer
推流器的回调目标对象,更多信息请查看 V2TXLivePusherObserver

setRenderView

setRenderView
int setRenderView
(TXCloudVideoView view)

设置本地摄像头预览 View

本地摄像头采集到的画面,经过美颜、脸型调整、滤镜等多种效果叠加之后,最终会显示到传入的 View 上。
参数
描述
view
本地摄像头预览 View。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK:成功。

setRenderView

setRenderView
int setRenderView
(TextureView view)

设置本地摄像头预览 View

本地摄像头采集到的画面,经过美颜、脸型调整、滤镜等多种效果叠加之后,最终会显示到传入的 View 上。
参数
描述
view
本地摄像头预览 View。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK:成功。

setRenderView

setRenderView
int setRenderView
(SurfaceView view)

设置本地摄像头预览 View

本地摄像头采集到的画面,经过美颜、脸型调整、滤镜等多种效果叠加之后,最终会显示到传入的 View 上。
参数
描述
view
本地摄像头预览 View。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK:成功。

setRenderMirror

setRenderMirror
int setRenderMirror
(V2TXLiveMirrorType mirrorType)

设置本地摄像头预览镜像

本地摄像头分为前置摄像头和后置摄像头,系统默认情况下,是前置摄像头镜像,后置摄像头不镜像,这里可以修改前置后置摄像头的默认镜像类型。
参数
描述
mirrorType
摄像头镜像类型 V2TXLiveMirrorType
V2TXLiveMirrorTypeAuto 【默认值】: 默认镜像类型. 在这种情况下,前置摄像头的画面是镜像的,后置摄像头的画面不是镜像的。
V2TXLiveMirrorTypeEnable: 前置摄像头 和 后置摄像头,都切换为镜像模式。
V2TXLiveMirrorTypeDisable: 前置摄像头 和 后置摄像头,都切换为非镜像模式。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

setEncoderMirror

setEncoderMirror
int setEncoderMirror
(boolean mirror)

设置视频编码镜像

参数
描述
mirror
是否镜像。
false【默认值】: 播放端看到的是非镜像画面。
true: 播放端看到的是镜像画面。
注意
编码镜像只影响观众端看到的视频效果。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

setRenderRotation

setRenderRotation
int setRenderRotation
(V2TXLiveRotation rotation)

设置本地摄像头预览画面的旋转角度

参数
描述
rotation
预览画面的旋转角度 V2TXLiveRotation
V2TXLiveRotation0【默认值】: 0度, 不旋转。
V2TXLiveRotation90: 顺时针旋转90度。
V2TXLiveRotation180: 顺时针旋转180度。
V2TXLiveRotation270: 顺时针旋转270度。
注意
只旋转本地预览画面,不影响推流出去的画面。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

setRenderFillMode

setRenderFillMode
int setRenderFillMode
(V2TXLiveFillMode mode)

设置本地摄像头预览画面的填充模式

参数
描述
mode
画面填充模式 V2TXLiveFillMode
V2TXLiveFillModeFill 【默认值】: 图像铺满屏幕,不留黑边,如果图像宽高比不同于屏幕宽高比,部分画面内容会被裁剪掉。
V2TXLiveFillModeFit: 图像适应屏幕,保持画面完整,但如果图像宽高比不同于屏幕宽高比,会有黑边的存在。
V2TXLiveFillModeScaleFill: 图像拉伸铺满,因此长度和宽度可能不会按比例变化。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

startCamera

startCamera
int startCamera
(boolean frontCamera)

打开本地摄像头

参数
描述
frontCamera
指定摄像头方向是否为前置。
true 【默认值】: 切换到前置摄像头。
false: 切换到后置摄像头。
注意
startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个采集源可以上行,不同采集源之间切换,请先关闭前一采集源,再开启后一采集源,保证同一采集源的开启和关闭是成对调用的。比如:采集源从Camera切换到VirtualCamera,调用顺序是 startCamera -> stopCamera -> startVirtualCamera。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

stopCamera

stopCamera

关闭本地摄像头

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

startMicrophone

startMicrophone

打开麦克风

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

stopMicrophone

stopMicrophone

关闭麦克风

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

startVirtualCamera

startVirtualCamera
int startVirtualCamera
(Bitmap image)

开启图片推流

参数
描述
image
图片。
注意
startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个采集源可以上行,不同采集源之间切换,请先关闭前一采集源,再开启后一采集源,保证同一采集源的开启和关闭是成对调用的。比如:采集源从Camera切换到VirtualCamera,调用顺序是 startCamera -> stopCamera -> startVirtualCamera。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

stopVirtualCamera

stopVirtualCamera

关闭图片推流

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

startScreenCapture

startScreenCapture

开启屏幕采集

注意
startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个采集源可以上行,不同采集源之间切换,请先关闭前一采集源,再开启后一采集源,保证同一采集源的开启和关闭是成对调用的。比如:采集源从Camera切换到ScreenCapture,调用顺序是 startCamera -> stopCamera -> startScreenCapture。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

stopScreenCapture

stopScreenCapture

关闭屏幕采集

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

pauseAudio

pauseAudio

暂停推流器的音频流

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

resumeAudio

resumeAudio

恢复推流器的音频流

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

pauseVideo

pauseVideo

暂停推流器的视频流

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

resumeVideo

resumeVideo

恢复推流器的视频流

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

startPush

startPush
int startPush
(String url)

开始音视频数据推流

参数
描述
url
推流的目标地址,支持任意推流服务端。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 操作成功,开始连接推流目标地址。
V2TXLIVE_ERROR_INVALID_PARAMETER: 操作失败,url 不合法。
V2TXLIVE_ERROR_INVALID_LICENSE: 操作失败,license 不合法,鉴权失败。
V2TXLIVE_ERROR_REFUSED: 操作失败,RTC 不支持同一设备上同时推拉同一个 StreamId。

stopPush

stopPush

停止推送音视频数据

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

isPushing

isPushing

当前推流器是否正在推流中

返回值说明:

是否正在推流。
1: 正在推流中。
0: 已经停止推流。

setAudioQuality

setAudioQuality
int setAudioQuality
(V2TXLiveAudioQuality quality)

设置推流音频质量

参数
描述
quality
音频质量 V2TXLiveAudioQuality
V2TXLiveAudioQualityDefault 【默认值】: 通用。
V2TXLiveAudioQualitySpeech: 语音。
V2TXLiveAudioQualityMusic: 音乐。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。
V2TXLIVE_ERROR_REFUSED: 推流过程中,不允许调整音质。

setVideoQuality

setVideoQuality
int setVideoQuality

设置推流视频编码参数

参数
描述
param
视频编码参数 V2TXLiveVideoEncoderParam

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

getAudioEffectManager

getAudioEffectManager

获取音效管理对象


通过音效管理,您可以使用以下功能:
调整麦克风收集的人声音量。
设置混响和变声效果。
开启耳返,设置耳返音量。
添加背景音乐,调整背景音乐的播放效果。


getBeautyManager

getBeautyManager

获取美颜管理对象


通过美颜管理,您可以使用以下功能:
设置”美颜风格”、”美白”、“红润”、“大眼”、“瘦脸”、“V脸”、“下巴”、“短脸”、“小鼻”、“亮眼”、“白牙”、“祛眼袋”、“祛皱纹”、“祛法令纹”等美容效果。
调整“发际线”、“眼间距”、“眼角”、“嘴形”、“鼻翼”、“鼻子位置”、“嘴唇厚度”、“脸型”。
设置人脸挂件(素材)等动态效果。
添加美妆。
进行手势识别。

参考 TXBeautyManager

getDeviceManager

getDeviceManager

获取设备管理对象


通过设备管理,您可以使用以下功能:
切换前后摄像头。
设置自动聚焦。
设置摄像头缩放倍数。
打开或关闭闪光灯。
切换耳机或者扬声器。
修改音量类型(媒体音量或者通话音量)。

参考 TXDeviceManager

snapshot

snapshot

截取推流过程中的本地画面

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。
V2TXLIVE_ERROR_REFUSED: 已经停止推流,不允许调用截图操作。

setWatermark

setWatermark
int setWatermark
(Bitmap image

float x

float y

float scale)

设置推流器水印。默认情况下,水印不开启

参数
描述
image
水印图片。如果该值为 null,则等效于禁用水印。
scale
水印图片的缩放比例,取值范围为0 - 1的浮点数。
x
水印的横坐标,取值范围为0 - 1的浮点数。
y
水印的纵坐标,取值范围为0 - 1的浮点数。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功

enableVolumeEvaluation

enableVolumeEvaluation
int enableVolumeEvaluation
(int intervalMs)

启用采集音量大小提示

开启后可以在 onMicrophoneVolumeUpdate 回调中获取到 SDK 对音量大小值的评估。
参数
描述
intervalMs
决定了 onMicrophoneVolumeUpdate 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms;【默认值】:0,不开启。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

enableCustomVideoProcess

enableCustomVideoProcess
int enableCustomVideoProcess
(boolean enable

V2TXLivePixelFormat pixelFormat

V2TXLiveBufferType bufferType)

开启/关闭自定义视频处理

参数
描述
enable
true: 开启; false: 关闭。【默认值】: false。
注意
支持的格式组合:
V2TXLivePixelFormatTexture2D+V2TXLiveBufferTypeTexture
V2TXLivePixelFormatI420+V2TXLiveBufferTypeByteBuffer

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。
V2TXLIVE_ERROR_NOT_SUPPORTED: 不支持的格式。

enableCustomVideoCapture

enableCustomVideoCapture
int enableCustomVideoCapture
(boolean enable)

开启/关闭自定义视频采集


在自定义视频采集模式下,SDK 不再从摄像头采集图像,只保留编码和发送能力。
参数
描述
enable
true:开启自定义采集;false:关闭自定义采集。【默认值】:false。
注意
需要在 startPush 之前调用,才会生效。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

enableCustomAudioCapture

enableCustomAudioCapture
int enableCustomAudioCapture
(boolean enable)

开启/关闭自定义音频采集


@brief 开启/关闭自定义音频采集。
在自定义音频采集模式下,SDK 不再从麦克风采集声音,只保留编码和发送能力。
参数
描述
enable
true: 开启自定义采集; false: 关闭自定义采集。【默认值】: false。
注意
需要在 startPush 前调用才会生效。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

sendCustomVideoFrame

sendCustomVideoFrame
int sendCustomVideoFrame
(V2TXLiveVideoFrame videoFrame)

在自定义视频采集模式下,将采集的视频数据发送到SDK


在自定义视频采集模式下,SDK不再采集摄像头数据,仅保留编码和发送功能。
参数
描述
videoFrame
向 SDK 发送的 视频帧数据 V2TXLiveVideoFrame
注意
需要在 startPush 之前调用 enableCustomVideoCapture 开启自定义采集。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。
V2TXLIVE_ERROR_INVALID_PARAMETER: 发送失败,视频帧数据不合法。

sendCustomAudioFrame

sendCustomAudioFrame
int sendCustomAudioFrame
(V2TXLiveAudioFrame audioFrame)

在自定义音频采集模式下,将采集的音频数据发送到SDK


@info 在自定义音频采集模式下,将采集的音频数据发送到SDK,SDK不再采集麦克风数据,仅保留编码和发送功能。

@param audioFrame 向 SDK 发送的 音频帧数据 V2TXLiveAudioFrame
@return 返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。
V2TXLIVE_ERROR_INVALID_PARAMETER: 发送失败,音频帧数据不合法。
@note 需要在 startPush 之前调用 enableCustomAudioCapture 开启自定义采集。

enableAudioProcessObserver

enableAudioProcessObserver
int enableAudioProcessObserver
(boolean enable

V2TXLiveDef.V2TXLiveAudioFrameObserverFormat format)

开启/关闭对经过前处理后的本地音频帧的监听回调

参数
描述
enable
是否开启。 【默认值】:false。
format
设置回调出的 AudioFrame 的格式。
注意
需要在 startPush 之前调用,才会生效。

sendSeiMessage

sendSeiMessage
int sendSeiMessage
(int payloadType

byte[] data)

发送 SEI 消息


播放端 V2TXLivePlayer 通过 V2TXLivePlayerObserver 中的 onReceiveSeiMessage 回调来接收该消息。
参数
描述
data
待发送的数据。
payloadType
数据类型,支持 5、242。推荐填:242。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。

startSystemAudioLoopback

startSystemAudioLoopback

打开系统声音采集

开启后可以采集整个操作系统的播放声音,并将其混入到当前麦克风采集的声音中一起发送到云端。
注意
1. 该接口只在 Android API 29 及以上的版本生效。
2. 您需要先使用该接口来开启系统声音采集,当使用屏幕分享接口开启屏幕分享时才会真正生效。
3. 您需要添加一个前台服务来确保系统声音采集不被静默,并设置 android:foregroundServiceType="mediaProjection"。
4. SDK 只采集满足捕获策略和音频用法的应用音频,目前采集的音频用法包括USAGE_MEDIA, USAGE_GAME。

stopSystemAudioLoopback

stopSystemAudioLoopback

关闭系统声音采集

showDebugView

showDebugView
void showDebugView
(boolean isShow)

显示仪表盘。

参数
描述
isShow
是否显示。【默认值】:false。

setProperty

setProperty
int setProperty
(String key

Object value)

调用 V2TXLivePusher 的高级 API 接口。

参数
描述
key
高级 API 对应的 key, 详情请参考 V2TXLiveProperty 定义。
value
调用 key 所对应的高级 API 时,需要的参数。
注意
该接口用于调用一些高级功能。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。
V2TXLIVE_ERROR_INVALID_PARAMETER: 操作失败,key 不允许为空。

setMixTranscodingConfig

setMixTranscodingConfig
int setMixTranscodingConfig

设置云端的混流转码参数


如果您在实时音视频 控制台 中的功能配置页开启了“启用旁路推流”功能,
房间里的每一路画面都会有一个默认的直播 CDN 地址


一个直播间中可能有不止一位主播,而且每个主播都有自己的画面和声音,但对于 CDN 观众来说,他们只需要一路直播流,
所以您需要将多路音视频流混成一路标准的直播流,这就需要混流转码。


当您调用 setMixTranscodingConfig() 接口时,SDK 会向腾讯云的转码服务器发送一条指令,目的是将房间里的多路音视频流混合为一路,
您可以通过 mixStreams 参数来调整每一路画面的位置,以及是否只混合声音,也可以通过 videoWidth、videoHeight、videoBitrate 等参数控制混合音视频流的编码参数。



【画面1】=> 解码 ====> \\
\\
【画面2】=> 解码 => 画面混合 => 编码 => 【混合后的画面】
/
【画面3】=> 解码 ====> /

【声音1】=> 解码 ====> \\
\\
【声音2】=> 解码 => 声音混合 => 编码 => 【混合后的声音】
/
【声音3】=> 解码 ====> /



参考文档:云端混流转码
参数
描述
config
请参考 V2TXLiveDef.java 中关于 V2TXLiveTranscodingConfig 的介绍。如果传入 null 则取消云端混流转码。
注意
关于云端混流的注意事项:
仅支持 RTC 模式混流。
云端转码会引入一定的 CDN 观看延时,大概会增加1 - 2秒。
调用该函数的用户,会将连麦中的多路画面混合到自己当前这路画面或者 config 中指定的 streamId 上。
请注意,若您还在房间中且不再需要混流,请务必传入 null 进行取消,因为当您发起混流后,云端混流模块就会开始工作,不及时取消混流可能会引起不必要的计费损失。
请放心,您退房时会自动取消混流状态。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK: 成功。
V2TXLIVE_ERROR_REFUSED: 未开启推流时,不允许设置混流转码参数。

startLocalRecording

startLocalRecording
int startLocalRecording

开始录制音视频流

注意
推流开启后才能开始录制,非推流状态下开启录制无效。
录制过程中不要动态切换分辨率和软/硬剪辑,生成的视频极有可能出现异常。

返回值说明:

返回值 V2TXLiveCode
V2TXLIVE_OK : 成功。
V2TXLIVE_ERROR_INVALID_PARAMETER : 参数不合法,比如filePath 为空。
V2TXLIVE_ERROR_REFUSED : API被拒绝,推流尚未开始。

stopLocalRecording

stopLocalRecording

停止录制音视频流

注意
当停止推流后,如果视频还在录制中,SDK 内部会自动结束录制。

enableVoiceActivityDetection

enableVoiceActivityDetection
void enableVoiceActivityDetection
(boolean enable)

启用人声检测

注意
开启后可以在 OnVoiceActivityDetectionUpdate 回调中获取到语音活动的开始与停止