public class MApplication extends Application {@Overridepublic void onCreate() {super.onCreate();String licenceURL = ""; // 获取到的 licence urlString licenceKey = ""; // 获取到的 licence keyV2TXLivePremier.setEnvironment("GDPR"); // 设置环境V2TXLivePremier.setLicence(this, licenceURL, licenceKey);V2TXLivePremier.setObserver(new V2TXLivePremierObserver() {@Overridepublic void onLicenceLoaded(int result, String reason) {Log.i(TAG, "onLicenceLoaded: result:" + result + ", reason:" + reason);}});}
V2TXLivePusher
对象,该对象负责完成推流的主要工作。// 指定对应的直播协议为 RTMP,该协议不支持连麦V2TXLivePusher mLivePusher = new V2TXLivePusherImpl(this, V2TXLiveDef.V2TXLiveMode.TXLiveMode_RTMP);
TXCloudVideoView
对象,由于 TXCloudVideoView
是继承自 Android 中的 FrameLayout
,所以您可以:<com.tencent.rtmp.ui.TXCloudVideoViewandroid:id="@+id/pusher_tx_cloud_view"android:layout_width="match_parent"android:layout_height="match_parent" />
startCamera
接口开启当前手机摄像头的预览画面。// 启动本地摄像头预览TXCloudVideoView mPusherView = (TXCloudVideoView) findViewById(R.id.pusher_tx_cloud_view);mLivePusher.setRenderView(mPusherView);mLivePusher.startCamera(true);mLivePusher.startMicrophone();
startCamera
接口启动了摄像头预览,就可以调用 V2TXLivePusher 中的 startPush 接口开始推流。// 根据推流协议传入对应的 URL 即可启动推流, RTMP 协议以 rtmp:// 开头,该协议不支持连麦String url = "rtmp://test.com/live/streamid?txSecret=xxxxx&txTime=xxxxxxxx";int ret = mLivePusher.startPush(url);if (ret == V2TXLIVE_ERROR_INVALID_LICENSE) {Log.i(TAG, "startRTMPPush: license 校验失败");}
startPush
接口返回 V2TXLIVE_ERROR_INVALID_LICENSE
,则代表您的 License 校验失败了,请检查 第2步:给 SDK 配置 License 授权 中设置的 url 和 key。// 结束推流mLivePusher.stopPush();
mLivePusher.startMicrophone();// 根据推流协议传入对应的 URL 即可启动推流, RTMP 协议以 rtmp:// 开头,该协议不支持连麦String url = "rtmp://test.com/live/streamid?txSecret=xxxxx&txTime=xxxxxxxx";int ret = mLivePusher.startPush(url);
setVideoQuality
设定的视频编码器的编码质量,观众端可以感受到画质的差异。详情请参见 设定画面质量。TXLiveConstants.java
文件:美颜风格 | 效果说明 |
BEAUTY_STYLE_SMOOTH | 光滑,适用于美女秀场,效果比较明显 |
BEAUTY_STYLE_NATURE | 自然,磨皮算法更多地保留了面部细节,主观感受上会更加自然 |
BEAUTY_STYLE_PITU | 由上海优图实验室提供的美颜算法,磨皮效果介于光滑和自然之间,比光滑保留更多皮肤细节,比自然磨皮程度更高 |
setBeautyStyle
接口设置:美颜风格 | 设置方式 | 接口说明 |
美颜级别 | 通过 TXBeautyManager 的 setBeautyLevel 设置 | 取值范围0 - 9; 0表示关闭,1 - 9值越大,效果越明显 |
美白级别 | 通过 TXBeautyManager 的 setWhitenessLevel 设置 | 取值范围0 - 9; 0表示关闭,1 - 9值越大,效果越明显 |
红润级别 | 通过 TXBeautyManager 的 setRuddyLevel 设置 | 取值范围0 - 9; 0表示关闭,1 - 9值越大,效果越明显 |
setFilter
接口可以设置色彩滤镜效果。所谓色彩滤镜,是指一种将整个画面色调进行区域性调整的技术,例如将画面中的淡黄色区域淡化实现肤色亮白的效果,或者将整个画面的色彩调暖让视频的效果更加清新和温和。我们的设计师团队提供了17种默认的 色彩滤镜 供您使用。setFilterStrength
接口可以设定滤镜的浓度,设置的浓度越高,滤镜效果也就越明显。// 选择期望的色彩滤镜文件,滤镜文件可以在小直播 App 的资源文件中获取(以 tuibeauty_filter_ 开头的 .png 文件)。Bitmap filterBmp = decodeResource(getResources(), R.drawable.tuibeauty_filter_biaozhun);mLivePusher.getBeautyManager().setFilter(filterBmp);mLivePusher.getBeautyManager().setFilterStrength(0.5f);
getDeviceManager
获取 TXDeviceManager 实例进一步进行设备管理,详细用法请参见 TXDeviceManager API。setVideoQuality
接口的参数来设定观众端的画面横竖屏模式。V2TXLiveDef.V2TXLiveVideoEncoderParam param = new V2TXLiveDef.V2TXLiveVideoEncoderParam(V2TXLiveDef.V2TXLiveVideoResolution.V2TXLiveVideoResolution960x540);param.videoResolutionMode = isLandscape ? V2TXLiveVideoResolutionModeLandscape : V2TXLiveVideoResolutionModePortrait;mLivePusher.setVideoQuality(param);
getAudioEffectManager
获取 TXAudioEffectManager 实例可以实现背景混音、耳返、混响等音效功能。背景混音是指主播在直播时可以选取一首歌曲伴唱,歌曲会在主播的手机端播放出来,同时也会被混合到音视频流中被观众端听到,所以被称为“混音”。enableVoiceEarMonitor
选项可以开启耳返功能,“耳返”指的是当主播带上耳机来唱歌时,耳机中要能实时反馈主播的声音。setVoiceReverbType
接口可以设置混响效果,例如 KTV、会堂、磁性、金属等,这些效果也会作用到观众端。setVoiceChangerType
接口可以设置变调效果,例如“萝莉音”,“大叔音”等,用来增加直播和观众互动的趣味性,这些效果也会作用到观众端。(x, y, scale)
参数设置的是水印图片相对于推流分辨率的归一化坐标。假设推流分辨率为:540 × 960,该字段设置为:(0.1,0.1,0.1)
,则水印的实际像素坐标为:(540 × 0.1,960 × 0.1,水印宽度 × 0.1,水印高度会被自动计算)。// 设置视频水印mLivePusher.setWatermark(BitmapFactory.decodeResource(getResources(),R.drawable.watermark), 0.03f, 0.015f, 1f);
@Overridepublic void onWarning(int code, String msg, Bundle extraInfo) {if (code == V2TXLiveCode.V2TXLIVE_WARNING_NETWORK_BUSY) {showNetBusyTips(); // 显示网络繁忙的提示}}
//Android 示例代码int payloadType = 5;String msg = "test";mTXLivePusher.sendSeiMessage(payloadType, msg.getBytes("UTF-8"));
int payloadType = 5;mTXLivePlayer.enableReceiveSeiMessage(true, payloadType)
事件 ID | 数值 | 含义说明 |
V2TXLIVE_ERROR_FAILED | -1 | 暂未归类的通用错误 |
V2TXLIVE_ERROR_INVALID_PARAMETER | -2 | 调用 API 时,传入的参数不合法 |
V2TXLIVE_ERROR_REFUSED | -3 | API 调用被拒绝 |
V2TXLIVE_ERROR_NOT_SUPPORTED | -4 | 当前 API 不支持调用 |
V2TXLIVE_ERROR_INVALID_LICENSE | -5 | license 不合法,调用失败 |
V2TXLIVE_ERROR_REQUEST_TIMEOUT | -6 | 请求服务器超时 |
V2TXLIVE_ERROR_SERVER_PROCESS_FAILED | -7 | 服务器无法处理您的请求 |
事件 ID | 数值 | 含义说明 |
V2TXLIVE_WARNING_NETWORK_BUSY | 1101 | 网络状况不佳:上行带宽太小,上传数据受阻 |
V2TXLIVE_WARNING_VIDEO_BLOCK | 2105 | 当前视频播放出现卡顿 |
V2TXLIVE_WARNING_CAMERA_START_FAILED | -1301 | 摄像头打开失败 |
V2TXLIVE_WARNING_CAMERA_OCCUPIED | -1316 | 摄像头正在被占用中,可尝试打开其他摄像头 |
V2TXLIVE_WARNING_CAMERA_NO_PERMISSION | -1314 | 摄像头设备未授权,通常在移动设备出现,可能是权限被用户拒绝了 |
V2TXLIVE_WARNING_MICROPHONE_START_FAILED | -1302 | 麦克风打开失败 |
V2TXLIVE_WARNING_MICROPHONE_OCCUPIED | -1319 | 麦克风正在被占用中,例如移动设备正在通话时,打开麦克风会失败 |
V2TXLIVE_WARNING_MICROPHONE_NO_PERMISSION | -1317 | 麦克风设备未授权,通常在移动设备出现,可能是权限被用户拒绝了 |
V2TXLIVE_WARNING_SCREEN_CAPTURE_NOT_SUPPORTED | -1309 | 当前系统不支持屏幕分享 |
V2TXLIVE_WARNING_SCREEN_CAPTURE_START_FAILED | -1308 | 开始录屏失败,如果在移动设备出现,可能是权限被用户拒绝了 |
V2TXLIVE_WARNING_SCREEN_CAPTURE_INTERRUPTED | -7001 | 录屏被系统中断 |
本页内容是否解决了您的问题?