LiteAVSDK
腾讯云音视频 SDK ,服务于数万家企业客户的高可用组件,致力于最大限度地节省您的研发成本。
V2TXLivePusher

详细描述

腾讯云直播推流器。
主要负责将本地的音频和视频画面进行编码,并推送到指定的推流地址,支持任意的推流服务端。

推流器包含如下能力:


结构体说明

◆ com::tencent::live2::V2TXLivePusher

class com::tencent::live2::V2TXLivePusher

Public 成员函数

abstract void setObserver (V2TXLivePusherObserver observer)
 
abstract int setRenderView (TXCloudVideoView view)
 
abstract int setRenderView (TextureView view)
 
abstract int setRenderView (SurfaceView view)
 
abstract int setRenderMirror (V2TXLiveMirrorType mirrorType)
 
abstract int setEncoderMirror (boolean mirror)
 
abstract int setRenderRotation (V2TXLiveRotation rotation)
 
abstract int startCamera (boolean frontCamera)
 
abstract int stopCamera ()
 
abstract int startMicrophone ()
 
abstract int stopMicrophone ()
 
abstract int startVirtualCamera (Bitmap image)
 
abstract int stopVirtualCamera ()
 
abstract int startScreenCapture ()
 
abstract int stopScreenCapture ()
 
abstract int pauseAudio ()
 
abstract int resumeAudio ()
 
abstract int pauseVideo ()
 
abstract int resumeVideo ()
 
abstract int startPush (String url)
 
abstract int stopPush ()
 
abstract int isPushing ()
 
abstract int setAudioQuality (V2TXLiveAudioQuality quality)
 
abstract int setVideoQuality (V2TXLiveVideoEncoderParam param)
 
abstract TXAudioEffectManager getAudioEffectManager ()
 
abstract TXBeautyManager getBeautyManager ()
 
abstract TXDeviceManager getDeviceManager ()
 
abstract int snapshot ()
 
abstract int setWatermark (Bitmap image, float x, float y, float scale)
 
abstract int enableVolumeEvaluation (int intervalMs)
 
abstract int enableCustomVideoProcess (boolean enable, V2TXLivePixelFormat pixelFormat, V2TXLiveBufferType bufferType)
 
abstract int enableCustomVideoCapture (boolean enable)
 
abstract int enableCustomAudioCapture (boolean enable)
 
abstract int sendCustomVideoFrame (V2TXLiveVideoFrame videoFrame)
 
abstract int sendCustomAudioFrame (V2TXLiveAudioFrame audioFrame)
 
abstract int sendSeiMessage (int payloadType, byte[] data)
 
abstract void showDebugView (boolean isShow)
 
abstract int setProperty (String key, Object value)
 
abstract int setMixTranscodingConfig (V2TXLiveTranscodingConfig config)
 

成员函数说明

◆ enableCustomAudioCapture()

abstract int enableCustomAudioCapture ( boolean  enable)
abstract

开启/关闭自定义音频采集。
在自定义音频采集模式下,SDK 不再从麦克风采集声音,只保留编码和发送能力。

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

注意
需要在 startPush 前调用才会生效。
参数
enabletrue: 开启自定义采集; false: 关闭自定义采集。【默认值】: false
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ enableCustomVideoCapture()

abstract int enableCustomVideoCapture ( boolean  enable)
abstract

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

在自定义视频采集模式下,SDK 不再从摄像头采集图像,只保留编码和发送能力。

注意
需要在 startPush 之前调用,才会生效。
参数
enabletrue:开启自定义采集;false:关闭自定义采集。【默认值】:false
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ enableCustomVideoProcess()

abstract int enableCustomVideoProcess ( boolean  enable,
V2TXLivePixelFormat  pixelFormat,
V2TXLiveBufferType  bufferType 
)
abstract

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

注意
RTMP 支持格式: format = V2TXLivePixelFormatTexture2D && buffetType = V2TXLiveBufferTypeTexture RTC 支持格式: format = V2TXLivePixelFormatTexture2D && bufferType = V2TXLiveBufferTypeTexture format = V2TXLivePixelFormatI420 && bufferType = V2TXLiveBufferTypeByteBuffer format = V2TXLivePixelFormatI420 && bufferType = V2TXLiveBufferTypeByteArray
参数
enabletrue: 开启; false: 关闭。【默认值】: false
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功
  • V2TXLIVE_ERROR_NOT_SUPPORTED: 不支持的格式

◆ enableVolumeEvaluation()

abstract int enableVolumeEvaluation ( int  intervalMs)
abstract

启用采集音量大小提示。

开启后可以在 V2TXLivePusherObserver#onMicrophoneVolumeUpdate(int) 回调中获取到 SDK 对音量大小值的评估。

参数
intervalMs决定了 onMicrophoneVolumeUpdate 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms;【默认值】:0,不开启
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ getAudioEffectManager()

abstract TXAudioEffectManager getAudioEffectManager ( )
abstract

获取音效管理对象 TXAudioEffectManager

通过音效管理,您可以使用以下功能:

  • 调整麦克风收集的人声音量。
  • 设置混响和变声效果。
  • 开启耳返,设置耳返音量。
  • 添加背景音乐,调整背景音乐的播放效果。

◆ getBeautyManager()

abstract TXBeautyManager getBeautyManager ( )
abstract

获取美颜管理对象 TXBeautyManager

通过美颜管理,您可以使用以下功能:

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

◆ getDeviceManager()

abstract TXDeviceManager getDeviceManager ( )
abstract

获取设备管理对象 TXDeviceManager

通过设备管理,您可以使用以下功能:

  • 切换前后摄像头。
  • 设置自动聚焦。
  • 设置摄像头缩放倍数。
  • 打开或关闭闪光灯。
  • 切换耳机或者扬声器。
  • 修改音量类型(媒体音量或者通话音量)。

◆ isPushing()

abstract int isPushing ( )
abstract

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

返回
是否正在推流
  • 1: 正在推流中
  • 0: 已经停止推流

◆ pauseAudio()

abstract int pauseAudio ( )
abstract

暂停推流器的音频流。

返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ pauseVideo()

abstract int pauseVideo ( )
abstract

暂停推流器的视频流。

返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ resumeAudio()

abstract int resumeAudio ( )
abstract

恢复推流器的音频流。

返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ resumeVideo()

abstract int resumeVideo ( )
abstract

恢复推流器的视频流。

返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ sendCustomAudioFrame()

abstract int sendCustomAudioFrame ( V2TXLiveAudioFrame  audioFrame)
abstract

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

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

注意
需要在 startPush 之前调用 V2TXLivePusher#enableCustomAudioCapture(boolean) 开启自定义采集。
参数
audioFrame向 SDK 发送的 音频帧数据 V2TXLiveAudioFrame
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功
  • V2TXLIVE_ERROR_REFUSED: 发送失败,您必须先调用 enableCustomAudioCapture 开启自定义音频采集

◆ sendCustomVideoFrame()

abstract int sendCustomVideoFrame ( V2TXLiveVideoFrame  videoFrame)
abstract

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

在自定义视频采集模式下,SDK不再采集摄像头数据,仅保留编码和发送功能。

注意
需要在 V2TXLivePusher#startPush(String) 之前调用 V2TXLivePusher#enableCustomVideoCapture(boolean) 开启自定义采集。
参数
videoFrame向 SDK 发送的 视频帧数据 V2TXLiveVideoFrame
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功
  • V2TXLIVE_ERROR_INVALID_PARAMETER: 发送失败,视频帧数据不合法
  • V2TXLIVE_ERROR_REFUSED: 发送失败,您必须先调用 enableCustomVideoCapture 开启自定义视频采集。

◆ sendSeiMessage()

abstract int sendSeiMessage ( int  payloadType,
byte[]  data 
)
abstract

发送 SEI 消息

播放端 V2TXLivePlayer 通过 V2TXLivePlayerObserver 中的 onReceiveSeiMessage 回调来接收该消息。

参数
payloadType数据类型,支持 5、242。推荐填:242
data待发送的数据
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ setAudioQuality()

abstract int setAudioQuality ( V2TXLiveAudioQuality  quality)
abstract

设置推流音频质量。

参数
quality音频质量 V2TXLiveAudioQuality
  • V2TXLiveAudioQualityDefault 【默认值】: 通用
  • V2TXLiveAudioQualitySpeech: 语音
  • V2TXLiveAudioQualityMusic: 音乐
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功
  • V2TXLIVE_ERROR_REFUSED: 推流过程中,不允许调整音质

◆ setEncoderMirror()

abstract int setEncoderMirror ( boolean  mirror)
abstract

设置视频编码镜像。

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

◆ setMixTranscodingConfig()

abstract int setMixTranscodingConfig ( V2TXLiveTranscodingConfig  config)
abstract

设置云端的混流转码参数

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

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

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

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

参考文档:云端混流转码

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

◆ setObserver()

abstract void setObserver ( V2TXLivePusherObserver  observer)
abstract

设置推流器回调。

通过设置回调,可以监听 V2TXLivePusher 推流器的一些回调事件, 包括推流器状态、音量回调、统计数据、警告和错误信息等。

参数
observer推流器的回调目标对象,更多信息请查看 V2TXLivePusherObserver

◆ 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()

abstract int setRenderMirror ( V2TXLiveMirrorType  mirrorType)
abstract

设置本地摄像头预览镜像。

本地摄像头分为前置摄像头和后置摄像头,系统默认情况下,是前置摄像头镜像,后置摄像头不镜像,这里可以修改前置后置摄像头的默认镜像类型。

参数
mirrorType摄像头镜像类型 V2TXLiveMirrorType
  • V2TXLiveMirrorTypeAuto 【默认值】: 默认镜像类型. 在这种情况下,前置摄像头的画面是镜像的,后置摄像头的画面不是镜像的
  • V2TXLiveMirrorTypeEnable: 前置摄像头 和 后置摄像头,都切换为镜像模式
  • V2TXLiveMirrorTypeDisable: 前置摄像头 和 后置摄像头,都切换为非镜像模式
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ setRenderRotation()

abstract int setRenderRotation ( V2TXLiveRotation  rotation)
abstract

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

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

◆ setRenderView() [1/3]

abstract int setRenderView ( SurfaceView  view)
abstract

设置本地摄像头预览 View。

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

参数
view本地摄像头预览 View
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK:成功

◆ setRenderView() [2/3]

abstract int setRenderView ( TextureView  view)
abstract

设置本地摄像头预览 View。

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

参数
view本地摄像头预览 View
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK:成功

◆ setRenderView() [3/3]

abstract int setRenderView ( TXCloudVideoView  view)
abstract

设置本地摄像头预览 View。

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

参数
view本地摄像头预览 View
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK:成功

◆ setVideoQuality()

abstract int setVideoQuality ( V2TXLiveVideoEncoderParam  param)
abstract

设置推流视频编码参数

参数
param视频编码参数 V2TXLiveVideoEncoderParam
返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ 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
  • V2TXLIVE_OK: 成功

◆ showDebugView()

abstract void showDebugView ( boolean  isShow)
abstract

显示仪表盘。

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

◆ 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
  • V2TXLIVE_OK: 成功

◆ startMicrophone()

abstract int startMicrophone ( )
abstract

打开麦克风。

返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ startPush()

abstract int startPush ( String  url)
abstract

开始音视频数据推流。

参数
url推流的目标地址,支持任意推流服务端
返回
返回值 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
  • V2TXLIVE_OK: 成功

◆ startVirtualCamera()

abstract int startVirtualCamera ( Bitmap  image)
abstract

开启图片推流。

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

◆ stopCamera()

abstract int stopCamera ( )
abstract

关闭本地摄像头。

返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ stopMicrophone()

abstract int stopMicrophone ( )
abstract

关闭麦克风。

返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ stopPush()

abstract int stopPush ( )
abstract

停止推送音视频数据。

返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ stopScreenCapture()

abstract int stopScreenCapture ( )
abstract

关闭屏幕采集。

返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功

◆ stopVirtualCamera()

abstract int stopVirtualCamera ( )
abstract

关闭图片推流。

返回
返回值 V2TXLiveCode
  • V2TXLIVE_OK: 成功