public class TXLivePusher
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static interface |
TXLivePusher.AudioCustomProcessListener
10.2 自定义音频处理回调类
|
static interface |
TXLivePusher.ITXSnapshotListener
10.4 截图回调类
|
static interface |
TXLivePusher.OnBGMNotify
10.3 背景音乐回调类
|
static interface |
TXLivePusher.VideoCustomProcessListener
10.1 自定义视频处理回调类
|
Modifier and Type | Field and Description |
---|---|
static int |
RGB_BGRA |
static int |
RGB_RGBA |
static int |
YUV_420P |
static int |
YUV_420SP |
static int |
YUV_420YpCbCr |
Constructor and Description |
---|
TXLivePusher(Context context)
1.1 创建 TXLivePusher 实例
|
Modifier and Type | Method and Description |
---|---|
TXLivePushConfig |
getConfig()
1.3 获取推流器配置信息。
|
int |
getMaxZoom()
3.6 获取摄像头支持的焦距
|
int |
getMusicDuration(java.lang.String path)
6.7 获取背景音乐文件的总时长,单位是毫秒
|
boolean |
isPushing()
2.9 查询是否正在推流
|
void |
onLogRecord(java.lang.String str)
9.2 输出自己的 log,保存到 SDK 内部的 xlog 文件中
|
boolean |
pauseBGM()
6.5 暂停播放背景音乐
|
void |
pausePusher()
2.7 暂停摄像头(或屏幕)采集并进入垫片推流状态
SDK 会暂时停止摄像头(或屏幕)采集,并使用 TXLivePushConfig.pauseImg 中指定的图片作为替代图像进行推流,也就是所谓的“垫片”。
这项功能常用于 App 被切到后台运行的场景,尤其是在 iOS 系统中,当 App 切到后台以后,操作系统不会再允许该 App 继续使用摄像头。
此时就可以通过调用 pausePush() 进入垫片状态。
对于绝大多数推流服务器而言,如果超过一定时间不推视频数据,服务器会断开当前的推流链接。
在 TXLivePushConfig 您可以指定:
- pauseImg 设置后台推流的默认图片,不设置该参数,则默认为黑色背景。
- pauseFps 设置后台推流帧率,最小值为5,最大值为20,默认10。
- pauseTime 设置后台推流持续时长,单位秒,默认300秒。
|
boolean |
playBGM(java.lang.String path)
6.3 播放背景音乐
SDK 会将背景音乐和麦克风采集的声音进行混合并一起推送到云端。
|
boolean |
resumeBGM()
6.6 继续播放背音乐
|
void |
resumePusher()
2.8 恢复摄像头采集并结束垫片推流状态
|
void |
sendCustomPCMData(byte[] pcmBuffer)
8.3 自定义音频采集,向 SDK 发送自己采集的音频 PCM 数据。
在自定义音频采集模式下,SDK 不再继续从麦克风采集声音,只保留编码和发送能力,您需要定时地发送自己采集的声音数据(PCM 格式)
要开启自定义音频采集,需要完成如下两个步骤:
- 开启自定义采集:给 TXLivePushConfig 中的 customModeType 属性增加 CUSTOM_MODE_AUDIO_CAPTURE 选项,代表开启自定义音频采集。
- 设定音频采样率:将 TXLivePushConfig 中的 audioSampleRate 属性设置为您期望的音频采样率,audioChannels 设置为期望的声道数,默认值:1(单声道)。
|
int |
sendCustomVideoData(byte[] buffer,
int bufferType,
int w,
int h)
8.2 自定义视频采集,向 SDK 发送自己采集的 YUV 视频数据
在自定义视频采集模式下,SDK 不再继续从摄像头采集图像,只保留编码和发送能力,您需要定时地发送自己采集的视频数据。
要开启自定义视频采集,需要完成如下两个步骤:
- 开启自定义采集:给 TXLivePushConfig 中的 customModeType 属性增加 CUSTOM_MODE_VIDEO_CAPTURE 选项,代表开启自定义视频采集。
- 设定视频分辨率:将 TXLivePushConfig 中的 videoResolution 属性设置为您发送 YUV 数据的 width、height。
|
int |
sendCustomVideoTexture(int textureID,
int w,
int h)
8.1 自定义视频采集,向 SDK 发送自己采集的 texture 视频数据。
在自定义视频采集模式下,SDK 不再继续从摄像头采集图像,只保留编码和发送能力,您需要定时地发送自己采集的视频数据。
要开启自定义视频采集,需要完成如下两个步骤:
- 开启自定义采集:给 TXLivePushConfig 中的 customModeType 属性增加 CUSTOM_MODE_VIDEO_CAPTURE 选项,代表开启自定义视频采集。
- 设定视频分辨率:将 TXLivePushConfig 中的 videoResolution 属性设置为您发送 YUV 数据的 width、height。
|
void |
sendMessage(byte[] msg)
Deprecated.
|
boolean |
sendMessageEx(byte[] msg)
9.1 发送 SEI 消息,播放端
TXLivePlayer 通过 onPlayEvent(EVT_PLAY_GET_MESSAGE) 来接收该消息。
本接口是将数据直接塞入视频数据头中,因此不能太大(几个字节比较合适),一般常用于塞入自定义时间戳等信息。 |
void |
setAudioProcessListener(TXLivePusher.AudioCustomProcessListener listener)
8.5 自定义音频处理回调
自定义音频采集和自定义音频处理不能同时开启,与自定义音频采集不同,自定义音频处理依然是由 SDK 采集麦克风的声音,
但 SDK 会通过 AudioCustomProcessListener 回调将数据回调给您的 App 进行二次加工。
如果要开启自定义音频处理,需要给 TXLivePushConfig 中的 customModeType 属性增加 CUSTOM_MODE_AUDIO_PREPROCESS 选项。
|
boolean |
setBeautyFilter(int style,
int beautyLevel,
int whiteningLevel,
int ruddyLevel)
4.1 设置美颜级别和美白级别
|
void |
setBGMNofify(TXLivePusher.OnBGMNotify notify)
6.2 设置背景音乐的回调接口
|
void |
setBGMPitch(float pitch)
6.10 调整背景音乐的音调高低
|
boolean |
setBGMPosition(int position)
6.13 指定背景音乐的播放位置
|
boolean |
setBGMVolume(float x)
6.8 设置混音时背景音乐的音量大小,仅在播放背景音乐混音时使用
|
void |
setChinLevel(int chinLevel)
5.4 设置下巴拉伸或收缩(商用企业版有效,其它版本设置此参数无效)
|
void |
setConfig(TXLivePushConfig config)
1.2 设置 TXLivePusher 推流配置项
|
void |
setExposureCompensation(float value)
3.8 调整曝光比例
|
void |
setEyeScaleLevel(int eyeScaleLevel)
5.1 设置大眼级别(商用企业版有效,其它版本设置此参数无效)
|
void |
setFaceShortLevel(int faceShortlevel)
5.5 设置短脸级别(商用企业版有效,其它版本设置此参数无效)
|
void |
setFaceSlimLevel(int faceScaleLevel)
5.2 设置瘦脸级别(商用企业版有效,其它版本设置此参数无效)
|
void |
setFaceVLevel(int faceVLevel)
5.3 设置 V 脸级别(商用企业版有效,其它版本设置此参数无效
|
void |
setFilter(Bitmap bmp)
4.2 设置指定素材滤镜特效
|
void |
setFocusPosition(float x,
float y)
8.8 在 Surface 模式下,设置摄像机的对焦位置
|
boolean |
setGreenScreenFile(java.lang.String file)
5.7 设置绿幕背景视频(商用企业版有效,其它版本设置此参数无效)
此处的绿幕功能并非智能抠背,它需要被拍摄者的背后有一块绿色的幕布来辅助产生特效。
|
boolean |
setMicVolume(float x)
6.9 设置混音时麦克风音量大小,仅在播放背景音乐混音时使用。
|
boolean |
setMirror(boolean enable)
3.3 设置视频镜像效果
由于前置摄像头采集的画面是取自手机的观察视角,如果将采集到的画面直接展示给观众,是完全没有问题的。
但如果将采集到的画面也直接显示给主播,则会跟主播照镜子时的体验完全相反,会让主播感觉到很奇怪。
因此,SDK 会默认开启本地摄像头预览画面的镜像效果,让主播直播时跟照镜子时保持一个体验效果。
setMirror 所影响的则是观众端看到的视频效果,如果想要保持观众端看到的效果跟主播端保持一致,需要开启镜像;
如果想要让观众端看到正常的未经处理过的画面(比如主播弹吉他的时候有类似需求),则可以关闭镜像。
|
void |
setMotionMute(boolean motionMute)
5.9 设置动效静音(商用企业版有效,其它版本设置此参数无效)
有些挂件本身会有声音特效,通过此 API 可以关闭这些特效播放时所带的声音效果。
|
void |
setMotionTmpl(java.lang.String motionPath)
5.8 选择使用哪一款 AI 动效挂件(商用企业版有效,其它版本设置此参数无效)
|
void |
setMute(boolean mute)
6.1 开启静音
开启静音后,SDK 并不会继续采集麦克风的声音,但是会用非常低(5kbps 左右)的码率推送伪静音数据,
这样做的目的是为了兼容 H5 上的 video 标签,并让录制出来的 mp4 文件有更好的兼容性。
|
void |
setNoseSlimLevel(int noseSlimLevel)
5.6 设置瘦鼻级别(商用企业版有效,其它版本设置此参数无效)
|
void |
setPushListener(ITXLivePushListener listener)
1.4 设置推流回调接口
|
void |
setRenderRotation(int rotation)
3.4 设置本地摄像头预览画面的旋转方向
该接口仅能够改变主播本地预览画面的方向,而不会改变观众端的画面效果。
如果希望改变观众端看到的视频画面的方向,比如原来是 540x960,希望变成 960x540,则可以通过设置 TXLivePushConfig 中的 homeOrientation 来实现。
|
void |
setReverb(int reverbType)
6.11 设置混响效果
|
void |
setSpecialRatio(float ratio)
4.3 设置滤镜浓度
在美女秀场等应用场景里,滤镜浓度的要求会比较高,以便更加突显主播的差异。
我们默认的滤镜浓度是0.5,如果您觉得滤镜效果不明显,可以使用下面的接口进行调节。
|
void |
setSurface(Surface surface)
8.6 指定 SDK 渲染所使用的 Surface(仅供微信 App 使用)。
该接口是为了支持微信小程序最新版本中的同层渲染能力而增加的,目的是让微信小程序通知设置渲染用的 Surface,
我们推荐您不要使用此接口,建议直接使用 TXCloudVideoView。
|
void |
setSurfaceSize(int width,
int height)
8.7 设置渲染 Surface 的大小(仅供微信 App 使用)。
该接口是为了支持微信小程序最新版本中的同层渲染能力而增加的,目的是让微信小程序通知设置渲染用的 Surface,
我们推荐您不要使用此接口,建议直接使用 TXCloudVideoView。
|
void |
setVideoProcessListener(TXLivePusher.VideoCustomProcessListener listener)
8.4 自定义视频处理回调
自定义视频采集和自定义视频处理不能同时开启,与自定义视频采集不同,自定义视频处理依然是由 SDK 采集摄像头的画面,
但 SDK 会通过 VideoCustomProcessListener 回调将数据回调给您的 App 进行二次加工。
如果要开启自定义视频处理,需要给 TXLivePushConfig 中的 customModeType 属性增加 CUSTOM_MODE_VIDEO_PREPROCESS 选项。
|
void |
setVideoQuality(int quality,
boolean adjustBitrate,
boolean adjustResolution)
3.1 设置视频编码质量
推荐设置:秀场直播 quality:HIGH_DEFINITION;adjustBitrate:NO;adjustResolution:NO。
参考文档:[设定清晰度](https://cloud.tencent.com/document/product/454/7879#step-4.3A-.E8.AE.BE.E5.AE.9A.E6.B8.85.E6.99.B0.E5.BA.A6)。
|
void |
setVideoRecordListener(TXRecordCommon.ITXVideoRecordListener listener)
7.1 设置录制回调接口
|
void |
setVoiceChangerType(int voiceChangerType)
6.12 设置变声类型
|
boolean |
setZoom(int value)
3.7 调整摄像头的焦距
|
void |
snapshot(TXLivePusher.ITXSnapshotListener listener)
7.4 推流过程中本地截图
|
void |
startCameraPreview(com.tencent.rtmp.ui.TXCloudVideoView view)
2.1 启动摄像头预览
启动预览后并不会立即开始 RTMP 推流,需要调用
startPusher(String) 才能真正开始推流。 |
int |
startPusher(java.lang.String rtmpURL)
2.3 启动 RTMP 推流
针对腾讯云的推流地址,会采用 QUIC 协议进行加速,配合改进后的 BBR2 带宽测算方案,可以最大限度的利用主播的上行带宽,降低直播卡顿率。
|
int |
startRecord(java.lang.String videoFilePath)
7.2 开始录制短视频
|
void |
startScreenCapture()
2.5 启动录屏推流(基于 MediaProjection 技术实现)
如果要开启“隐私模式”,请调用
pausePusher() 接口推默认图及静音数据,取消隐私模式调用resumePusher() 。 |
boolean |
stopBGM()
6.4 停止播放背景音乐
|
void |
stopCameraPreview(boolean isNeedClearLastImg)
2.2 停止摄像头预览。
|
void |
stopPusher()
2.4 停止 RTMP 推流
|
void |
stopRecord()
7.3 结束录制短视频,当停止推流后,如果视频还在录制中,SDK 内部会自动结束录制。
|
void |
stopScreenCapture()
2.6 结束录屏推流
|
void |
switchCamera()
3.2 切换前后摄像头
|
boolean |
turnOnFlashLight(boolean enable)
3.5 打开后置摄像头旁边的闪光灯
此操作对于前置摄像头是无效的,因为绝大多数手机都没有给前置摄像头配置闪光灯。
|
public static final int RGB_BGRA
public static final int RGB_RGBA
public static final int YUV_420P
public static final int YUV_420SP
public static final int YUV_420YpCbCr
public TXLivePusher(Context context)
context
- 上下文public TXLivePushConfig getConfig()
public int getMaxZoom()
public int getMusicDuration(java.lang.String path)
path
- 音乐文件路径,如果 path 为空,那么返回当前正在播放的背景音乐的时长。public boolean isPushing()
public void onLogRecord(java.lang.String str)
str
- 存入本地文件的 log.public boolean pauseBGM()
public void pausePusher()
public boolean playBGM(java.lang.String path)
path
- 背景音乐文件路径public boolean resumeBGM()
public void resumePusher()
public void sendCustomPCMData(byte[] pcmBuffer)
pcmBuffer
- pcm 音频数据。public int sendCustomVideoData(byte[] buffer, int bufferType, int w, int h)
buffer
- 视频数据bufferType
- 视频格式 目前仅支持 YUV_420P 、RGB_RGBA 两种数据格式w
- 视频图像的宽度;不能大于 TXLivePushConfig 中的 videoResolution 属性设定的宽度,否则会失败,小于时 SDK 会自动裁剪。h
- 视频图像的高度;不能大于 TXLivePushConfig 中的 videoResolution 属性设定的宽度,否则会失败,小于时 SDK 会自动裁剪。public int sendCustomVideoTexture(int textureID, int w, int h)
textureID
- 视频纹理 IDw
- 视频图像的宽度,不能大于 TXLivePushConfig 中的 videoResolution 属性设定的宽度,否则会失败,小于时 SDK 会自动裁剪。h
- 视频图像的高度,不能大于 TXLivePushConfig 中的 videoResolution 属性设定的宽度,否则会失败,小于时 SDK 会自动裁剪。@Deprecated public void sendMessage(byte[] msg)
public boolean sendMessageEx(byte[] msg)
TXLivePlayer
通过 onPlayEvent(EVT_PLAY_GET_MESSAGE) 来接收该消息。
本接口是将数据直接塞入视频数据头中,因此不能太大(几个字节比较合适),一般常用于塞入自定义时间戳等信息。msg
- public void setAudioProcessListener(TXLivePusher.AudioCustomProcessListener listener)
public boolean setBeautyFilter(int style, int beautyLevel, int whiteningLevel, int ruddyLevel)
style
- 使用哪种磨皮算法,支持光滑和自然两种,光滑风格磨皮更加明显,适合秀场直播。见 TXLiveConstants
中的 BEAUTY_STYLE_XXX 定义。beautyLevel
- 美颜级别,取值范围0 - 9; 0表示关闭,1 - 9值越大,效果越明显。whiteningLevel
- 美白级别,取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。ruddyLevel
- 红润级别,取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。public void setBGMNofify(TXLivePusher.OnBGMNotify notify)
notify
- 回调接口public void setBGMPitch(float pitch)
pitch
- 音调,默认值是0.0f,范围是:[-1 ~ 1] 之间的浮点数;public boolean setBGMPosition(int position)
position
- 背景音乐的播放位置,单位ms。public boolean setBGMVolume(float x)
x
- 音量大小,1为正常音量,建议值为0 - 2之间的浮点数,如果需要增益可以设置更大的值。public void setChinLevel(int chinLevel)
chinLevel
- 下巴拉伸或收缩级别,取值范围 -9 - 9;0 表示关闭,小于0表示收缩,大于0表示拉伸。public void setConfig(TXLivePushConfig config)
config
- 推流配置项,详情见 TXLivePushConfig
public void setExposureCompensation(float value)
value
- 曝光比例,表示该手机支持最大曝光调整值的比例,取值范围从-1到1。
负数表示调低曝光,-1是最小值,对应 getMinExposureCompensation。
正数表示调高曝光,1是最大值,对应 getMaxExposureCompensation。
0表示不调整曝光,默认值为0。public void setEyeScaleLevel(int eyeScaleLevel)
eyeScaleLevel
- 大眼级别,取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。public void setFaceShortLevel(int faceShortlevel)
faceShortlevel
- 短脸级别,取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。public void setFaceSlimLevel(int faceScaleLevel)
faceScaleLevel
- 瘦脸级别,取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。public void setFaceVLevel(int faceVLevel)
faceVLevel
- V 脸级别,取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。public void setFilter(Bitmap bmp)
bmp
- 滤镜图片public void setFocusPosition(float x, float y)
x
- 聚焦点位置 x 值y
- 聚焦点位置 y 值public boolean setGreenScreenFile(java.lang.String file)
file
- 视频文件路径。支持 MP4;null 表示关闭特效。public boolean setMicVolume(float x)
x
- 音量大小,1为正常音量,建议值为0 - 2之间的浮点数,如果需要增益可以设置更大的值。public boolean setMirror(boolean enable)
enable
- true:播放端看到的是镜像画面;false:播放端看到的是非镜像画面。public void setMotionMute(boolean motionMute)
motionMute
- true:静音;false:不静音。public void setMotionTmpl(java.lang.String motionPath)
motionPath
- 动效所在路径public void setMute(boolean mute)
mute
- true:静音;false:不静音public void setNoseSlimLevel(int noseSlimLevel)
noseSlimLevel
- 瘦鼻级别,取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。public void setPushListener(ITXLivePushListener listener)
listener
- 播放器回调,请参考 ITXLivePushListener
public void setRenderRotation(int rotation)
// 竖屏推流(HOME 键在下) _config.homeOrientation = HOME_ORIENTATION_DOWN; [_txLivePublisher setConfig:_config]; [_txLivePublisher setRenderRotation:0]; // 横屏推流(HOME 键在右) _config.homeOrientation = HOME_ORIENTATION_RIGHT; [_txLivePublisher setConfig:_config]; [_txLivePublisher setRenderRotation:90];
rotation
- 取值为 0 ,90,180,270(其他值无效),表示主播端摄像头预览视频的顺时针旋转角度。public void setReverb(int reverbType)
reverbType
- 混响类型,具体值请参考见 TXLiveConstants
中的 REVERB_TYPE_X 定义。public void setSpecialRatio(float ratio)
ratio:
- 取值范围0 - 1的浮点型数字,取值越大滤镜效果越明显,默认取值0.5。public void setSurface(Surface surface)
surface
- 渲染 surface. nonnull:开始渲染;null:停止渲染public void setSurfaceSize(int width, int height)
width
- surface 宽度height
- surface 高度public void setVideoProcessListener(TXLivePusher.VideoCustomProcessListener listener)
public void setVideoQuality(int quality, boolean adjustBitrate, boolean adjustResolution)
quality
- : 画质类型(标清、高清、超高清)adjustBitrate
- : 动态码率开关adjustResolution
- : 动态切分辨率开关public void setVideoRecordListener(TXRecordCommon.ITXVideoRecordListener listener)
listener
- 录制回调接口public void setVoiceChangerType(int voiceChangerType)
voiceChangerType
- 具体值请参考见 TXLiveConstants
中的 VOICECHANGER_TYPE_X 定义。public boolean setZoom(int value)
value
- 焦距大小,取值范围 1 - getMaxZoom()
,默认值建议设置为1即可。public void snapshot(TXLivePusher.ITXSnapshotListener listener)
listener
- 截图完成回调public void startCameraPreview(com.tencent.rtmp.ui.TXCloudVideoView view)
startPusher(String)
才能真正开始推流。view
- 承载视频画面的控件public int startPusher(java.lang.String rtmpURL)
rtmpURL
- 推流地址,参考文档:[获取推流地址](https://cloud.tencent.com/document/product/267/32720 )。public int startRecord(java.lang.String videoFilePath)
videoFilePath
- 视频录制后存储路径public void startScreenCapture()
pausePusher()
接口推默认图及静音数据,取消隐私模式调用resumePusher()
。public boolean stopBGM()
public void stopCameraPreview(boolean isNeedClearLastImg)
isNeedClearLastImg
- 是否需要清除最后一帧画面;true:清除最后一帧画面;false:保留最后一帧画面public void stopPusher()
public void stopRecord()
public void stopScreenCapture()
public void switchCamera()
public boolean turnOnFlashLight(boolean enable)
enable
- true:打开闪光灯; false:关闭闪光灯