为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
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 及更高版本
为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。