为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
txLive 插件封装了腾讯云直播服务 可参考腾讯云直播集成方案
使用注意: 必须在config.xml里面配置<preference name="backgroundMode" value="audio"/>
使用时请注意: 1.免费申请的license(基础版,有效期28天),体验测试,有效期具体请查看 2.当您的测试License过期了,您需要进入 点播控制台 点击购买正式License
使用此插件之前建议先配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:
<feature name="txLive">
<param name="licenceURL" value="12345"/>
<param name="licenceKey" value="123456"/>
</feature>
字段描述:
licenceURL:(必须配置)从腾讯云平台获取的LicenseUrl。参考腾讯官方申请说明
licenceKey:(必须配置)从腾讯云平台获取的Key。参考腾讯官方申请说明
打开推流界面
openPusher({params});
x:
y:
w:
h:
url:
autoPush:
fixedOn:
fixed:
beautyList:
functionList:
ret:
{
status:, //布尔型;打开成功还是失败;true||false
eventType:'pushBegin'
}
eventType 取值范围:
var txLive = api.require('txLive');
txLive.openPusher({
x : 0,
y : 0,
h : height,
w : width,
url : "rtmp://xxxxx.livepush.myqcloud.com/xxxxxxx"
},function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
添加推流事件的监听
addPusherListener({params});
ret:
{
EvtID: //字符串类型;取值范围如下:
CONNECT_SUCC ///< 直播: 已经连接RTMP推流服务器
PUSH_BEGIN ///< 直播: 已经与RTMP服务器握手完毕,开始推流
OPEN_CAMERA_SUCC ///< 打开摄像头成功
CHANGE_RESOLUTION ///< 推流动态调整分辨率
CHANGE_BITRATE ///< 推流动态调整码率
FIRST_FRAME_AVAILABLE ///< 首帧画面采集完成
START_VIDEO_ENCODER ///< 编码器启动
ROOM_IN ///< 已经在webrtc房间里面,进房成功后通知
ROOM_IN_FAILED ///< 进房失败通知
ROOM_OUT ///< 不在webrtc房间里面,进房失败或者中途退出房间时通知
ROOM_USERLIST ///< 下发webrtc房间成员列表(不包括自己)
ROOM_NEED_REENTER ///< WiFi切换到4G会触发断线重连,此时需要重新进入webrtc房间(拉取最优的服务器地址)
ROOM_USER_ENTER ///< 进房通知
ROOM_USER_EXIT ///< 退房通知
ROOM_USER_VIDEO_STATE ///< 视频状态位变化通知
ROOM_USER_AUDIO_STATE ///< 音频状态位变化通知
OPEN_CAMERA_FAIL ///< 打开摄像头失败
OPEN_MIC_FAIL ///< 打开麦克风失败
VIDEO_ENCODE_FAIL ///< 视频编码失败
AUDIO_ENCODE_FAIL ///< 音频编码失败
UNSUPPORTED_RESOLUTION ///< 不支持的视频分辨率
UNSUPPORTED_SAMPLERATE ///< 不支持的音频采样率
NET_DISCONNECT ///< 网络断连,且经多次重连抢救无效,可以放弃治疗,更多重试请自行重启推流
AUDIO_SYSTEM_NOT_WORK ///< 系统异常,录音失败
INVALID_ADDRESS ///< 推流地址非法
NET_BUSY ///< 网络状况不佳:上行带宽太小,上传数据受阻
RECONNECT ///< 网络断连, 已启动自动重连 (自动重连连续失败超过三次会放弃)
HW_ACCELERATION_FAIL ///< 硬编码启动失败,采用软编码
VIDEO_ENCODE_FAIL ///< 视频编码失败,非致命错,内部会重启编码器
BEAUTYSURFACE_VIEW_INIT_FAIL ///< 视频编码码率异常,警告
VIDEO_ENCODE_BITRATE_OVERFLOW ///< 视频编码码率异常,警告
DNS_FAIL ///< RTMP -DNS解析失败
SEVER_CONN_FAIL ///< RTMP服务器连接失败
SHAKE_FAIL ///< RTMP服务器握手失败
SERVER_DISCONNECT ///< RTMP服务器主动断开,请检查推流地址的合法性或防盗链有效期
READ_WRITE_FAIL ///< RTMP 读/写失败,将会断开连接。
SET_BITRATE_4_SCREEN_CAPTURE ///< 动态设置录屏编码码率
BGM_PLAY_FINISH = 100002 ///< BGM播放完毕
}
var txLive = api.require('txLive');
txLive.addPusherListener(function(ret) {
if (ret) {
api.alert({msg:JSON.stringify(ret)});
}
});
iOS 系统
可提供的 1.1.2 及更高版本
推流是否静音
setPusherMute({params});
enable:
var txLive = api.require('txLive');
txLive.setPusherMute({
enable:false
});
iOS系统,Android系统
可提供的 1.0.9 及更高版本
控制推流界面按钮可见状态
setLiveBtnsVisibility({params})
btnid:
类型:字符串
描述:界面的可见按钮ID,
取值范围:
show:
ret:
{
status:, //数字类型;0为隐藏成功;1为显示成功
}
var txLive = api.require('txLive');
txLive.setLiveBtnsVisibility({
"btnid" : "btnLog",
"show" : 1
},function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
通过按钮id来模拟点击按钮
liveBtnsPerformClickById({params})
btnid:
类型:字符串
描述:界面的可见按钮ID,
取值范围:
ret:
{
status:, //数字类型;0为点击状态。1为未点击状态
}
var txLive = api.require('txLive');
txLive.liveBtnsPerformClickById({
"btnid" : "btnLog"
},function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
开始推流
注意:目前只有iOS支持回调
startPush(callback(ret, err));
ret:
{
returnBack:0, //数字;0: 启动成功;-1: 启动失败;-5:license 校验失败。
}
var txLive = api.require('txLive');
txLive.startPush(function(ret, err){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
结束视频推流
stopPush();
ret:
{
status:0, //数字;0:结束成功;1: 结束失败;
}
var txLive = api.require('txLive');
txLive.stopPush(function(ret, err){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
打开视频播放器
注意:在iOS端本接口的回调函数只是表示播放窗口打开成功,播放器可能并未完全初始化成功。建议在addPlayerListener接口的某个事件回调里再执行开始播放等逻辑操作
openPlayer({params})
x:
y:
w:
h:
url:
type:
fixedOn:
fixed:
ret:
{
status:0, //数字;0:打开成功;1: 打开失败;
eventType:"playBegin"
}
eventType 取值范围:
playBegin 播放开始
playLoading 播放加载中
firstFrameRender 首帧渲染
var txLive = api.require('txLive');
txLive.openPlayer({
x : 0,
y : 0,
url : "视频播放地址"
},function(ret, err){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
添加播放事件的监听
addPlayerListener({params});
ret:
{
EvtID: //字符串类型;取值范围如下:
CONNECT_SUCC ///< 直播,已经连接RTMP拉流服务器
RTMP_STREAM_BEGIN ///< 直播,已经与RTMP服务器握手完毕,开始拉流
RCV_FIRST_I_FRAME ///< 渲染首个视频数据包(IDR)
PLAY_BEGIN ///< 视频播放开始
PLAY_PROGRESS ///< 视频播放进度
PLAY_END ///< 视频播放结束
PLAY_LOADING ///< 视频播放loading
START_VIDEO_DECODER ///< 解码器启动
CHANGE_RESOLUTION ///< 视频分辨率改变
GET_PLAYINFO_SUCC ///< 获取点播文件信息成功
CHANGE_ROTATION ///< MP4视频旋转角度
GET_MESSAGE ///< 消息事件
VOD_PLAY_PREPARED ///< 点播,视频加载完毕
VOD_LOADING_END ///< 点播,loading结束
STREAM_SWITCH_SUCC ///< 直播,切流成功(切流可以播放不同画面大小的视频)
GET_METADATA ///< TXLivePlayer 接收到视频流中的 metadata 头信息(一条视频流仅触发一次)
GET_FLVSESSIONKEY ///< TXLivePlayer 接收到http响应头中的 flvSessionKey 信息
NET_DISCONNECT ///< 直播,网络断连,且经多次重连抢救无效,可以放弃治疗,更多重试请自行重启播放
GET_RTMP_ACC_URL_FAIL ///< 直播,获取加速拉流地址失败。这是由于您传给 liveplayer 的加速流地址中没有携带 txTime 和 txSecret 签名,或者是签名计算的不对。出现这个错误时,liveplayer 会放弃拉取加速流转而拉取 CDN 上的视频流,从而导致延迟很大。
FILE_NOT_FOUND ///< 播放文件不存在
HEVC_DECODE_FAIL ///< H265解码失败
HLS_KEY ///< HLS解码key获取失败
GET_PLAYINFO_FAIL ///< 获取点播文件信息失败
STREAM_SWITCH_FAIL ///< 直播,切流失败(切流可以播放不同画面大小的视频)
VIDEO_DECODE_FAIL ///< 当前视频帧解码失败
AUDIO_DECODE_FAIL ///< 当前音频帧解码失败
RECONNECT ///< 网络断连, 已启动自动重连 (自动重连连续失败超过三次会放弃)
RECV_DATA_LAG ///< 网络来包不稳:可能是下行带宽不足,或由于主播端出流不均匀
VIDEO_PLAY_LAG ///< 当前视频播放出现卡顿(用户直观感受)
HW_ACCELERATION_FAIL ///< 硬解启动失败,采用软解
VIDEO_DISCONTINUITY ///< 当前视频帧不连续,可能丢帧
FIRST_IDR_HW_DECODE_FAIL ///< 当前流硬解第一个I帧失败,SDK自动切软解
DNS_FAIL ///< RTMP -DNS解析失败
SEVER_CONN_FAIL ///< RTMP服务器连接失败
SHAKE_FAIL ///< RTMP服务器握手失败
SERVER_DISCONNECT ///< RTMP服务器主动断开
READ_WRITE_FAIL ///< RTMP 读/写失败,将会断开连接。
UGC_WRITE_FILE_FAIL ///< UGC写文件失败
}
var txLive = api.require('txLive');
txLive.addPlayerListener(function(ret) {
if (ret) {
api.alert({msg:JSON.stringify(ret)});
}
});
iOS 系统
可提供的 1.1.2 及更高版本
播放器静音
setPlayerMute({params});
enable:
var txLive = api.require('txLive');
txLive.setPlayerMute({
enable:false
});
iOS系统,Android系统
可提供的 1.0.9 及更高版本
设置播放界面按钮
setPlayBtnsVisibility();
btnid:
show:
ret:
{
status:0, //数字;0:隐藏成功;1: 显示成功;
}
var txLive = api.require('txLive');
txLive.setPlayBtnsVisibility({
"btnid" : "btnLog",
"show" : 1
},function(ret, err){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
开始播放视频
startPlay()
ret:
{
status:0, //数字;0:点击播放按钮成功;1: 点击播放按钮失败;
}
var txLive = api.require('txLive');
txLive.startPlay(function(ret, err){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
停止播放视频
stopPlay()
ret:
{
status:0, //数字;0:点击停止按钮成功;1: 点击停止按钮失败;
}
var txLive = api.require('txLive');
txLive.stopPlay(function(ret, err){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
通过按钮id来模拟点击按钮
playBtnsPerformClickById({params})
btnid:
ret:
{
status:, //数字类型;0为点击状态;1为未点击状态
}
var txLive = api.require('txLive');
txLive.playBtnsPerformClickById({
"btnid" : "btnLog"
},function(ret, err){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
隐藏视频
hidePlayer()
ret:
{
status:, //数字类型;0为隐藏成功;1为隐藏失败。
}
var txLive = api.require('txLive');
txLive.hidePlayer(function(ret, err){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
显示视频
showPlayer()
ret:
{
status:, //数字类型;0为显示成功;1为显示失败。
}
var txLive = api.require('txLive');
txLive.showPlayer(function(ret, err){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
恢复推流
resumePush()
ret:
{
status:, //数字类型;0为恢复推流成功;1为恢复推流失败。
}
var txLive = api.require('txLive');
txLive.resumePush(function(ret, err){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统
可提供的1.0.0及更高版本
美颜面板显示/隐藏监听
addBeautyBoardListener(callback(ret))
ret:
{
show:, //布尔类型;是否显示,true/false
}
var txLive = api.require('txLive');
txLive.addBeautyBoardListener(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 1.0.8 及更高版本
设置视频分辨率
setVideoQuality()
definition:
adjustBitrate:
var txLive = api.require('txLive');
txLive.setVideoQuality({
definition:1,
adjustBitrate:false
});
Android 系统
可提供的 1.0.8 及更高版本
隐藏播放器加载动画
hideLoadingView()
var txLive = api.require('txLive');
txLive.hideLoadingView();
Android 系统
可提供的 1.0.8 及更高版本
为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。