txLive

论坛示例

为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

概述

txLive 插件封装了腾讯云直播服务 可参考腾讯云直播集成方案

使用注意: 必须在config.xml里面配置<preference name="backgroundMode" value="audio"/>

使用时请注意: 1.免费申请的license(基础版,有效期28天),体验测试,有效期具体请查看 2.当您的测试License过期了,您需要进入 点播控制台 点击购买正式License

使用此插件之前建议先配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:

  • 名称:txLive
  • 参数:licenceURL、licenceKey
  • 配置示例:
  <feature name="txLive">
    <param name="licenceURL" value="12345"/>
    <param name="licenceKey" value="123456"/>
  </feature>

openPusher

打开推流界面

openPusher({params});

params

x:

  • 类型:数字
  • 描述:(可选项)
  • 默认值:0

y:

  • 类型:数字
  • 描述:(可选项)
  • 默认值:0

w:

  • 类型:数字
  • 描述:(可选项)
  • 默认值:屏幕宽度

h:

  • 类型:数字
  • 描述:(可选项)
  • 默认值:屏幕高度

url:

  • 类型:字符串
  • 描述:必填项,推流的rtmp地址

autoPush:

  • 类型:布尔类型
  • 描述:是否自动推流

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)插件视图添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:插件依附于当前 window

fixed:

  • 类型:布尔
  • 描述:(可选项)是否将插件视图固定到窗口上(不跟随窗口上下滚动)
  • 默认:true

beautyList:

  • 类型:数组
  • 描述:(可选项)美颜的美颜列表
  • 默认:["美颜","美白","红润","大眼","瘦脸","v脸","下巴","短脸","瘦鼻"]

functionList:

  • 类型:数组
  • 描述:(可选项)美颜的功能列表
  • 默认:["风格","美颜","滤镜","动效","抠背","绿幕"]

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:,   //布尔型;打开成功还是失败;true||false
  eventType:'pushBegin'
}

eventType 取值范围:

  • pushBegin 推流开始
  • firstFrameAvailable 首帧可用

示例代码

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

添加推流事件的监听

addPusherListener({params});

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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

推流是否静音

setPusherMute({params});

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否静音
  • 默认:true

示例代码

var txLive = api.require('txLive');
txLive.setPusherMute({
    enable:false
});

可用性

iOS系统,Android系统

可提供的 1.0.9 及更高版本

setLiveBtnsVisibility

控制推流界面按钮可见状态

setLiveBtnsVisibility({params})

params

btnid:

  • 类型:字符串

  • 描述:界面的可见按钮ID,

  • 取值范围:

    • btnPlay 播放,
    • btnCameraChange 摄像头切换
    • autofocus 自动对焦,(仅支持安卓)
    • btnHWEncode 硬件解码,
    • btnFaceBeauty 美颜,
    • btnLog 日志,
    • btnResolution 清晰度,
    • btnScreenOrientation 横竖屏切换
    • btnMirror 镜像(仅支持iOS)

show:

  • 类型:数字
  • 描述:按钮可见状态0为隐藏1为显示

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
        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及更高版本

liveBtnsPerformClickById

通过按钮id来模拟点击按钮

liveBtnsPerformClickById({params})

params

btnid:

  • 类型:字符串

  • 描述:界面的可见按钮ID,

  • 取值范围:

    • btnPlay 播放
    • btnCameraChange 摄像头切换
    • btnHWEncode 硬件解码
    • btnFaceBeauty 美颜
    • btnLog 日志
    • btnResolution 清晰度,
    • btnScreenOrientation 横竖屏切换
    • btnMirror 镜像(仅支持iOS)
    • btnBitrate 码流 (iOS不支持)
    • btnFlash 闪光灯(iOS不支持)

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
   
    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及更高版本

startPush

开始推流

注意:目前只有iOS支持回调

startPush(callback(ret, err));

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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

结束视频推流

stopPush();

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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及更高版本

openPlayer

打开视频播放器

注意:在iOS端本接口的回调函数只是表示播放窗口打开成功,播放器可能并未完全初始化成功。建议在addPlayerListener接口的某个事件回调里再执行开始播放等逻辑操作

openPlayer({params})

params

x:

  • 类型:数字
  • 描述:(可选项)
  • 默认值:0

y:

  • 类型:数字
  • 描述:(可选项)
  • 默认值:0

w:

  • 类型:数字
  • 描述:(可选项)
  • 默认值:屏幕宽度

h:

  • 类型:数字
  • 描述:(可选项)
  • 默认值:屏幕高度

url:

  • 类型:字符串
  • 描述:必填项,播放视频地址

type:

  • 类型:数字类型
  • 描述:播放类型(仅支持Android)
  • 默认:1
  • 取值范围:
    • 0 => PLAY_TYPE_LIVE_FLV
      • 1 => PLAY_TYPE_LIVE_RTMP
      • 2 => PLAY_TYPE_LIVE_RTMP_ACC
      • 3 => PLAY_TYPE_LOCAL_VIDEO
      • 4 => PLAY_TYPE_VOD_FLV
      • 5 => PLAY_TYPE_VOD_HLS
      • 6 => PLAY_TYPE_VOD_MP4

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)插件视图添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:插件依附于当前 window

fixed:

  • 类型:布尔
  • 描述:(可选项)是否将插件视图固定到窗口上(不跟随窗口上下滚动)
  • 默认:true

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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

添加播放事件的监听

addPlayerListener({params});

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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

播放器静音

setPlayerMute({params});

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否静音
  • 默认:true

示例代码

var txLive = api.require('txLive');
txLive.setPlayerMute({
    enable:false
});

可用性

iOS系统,Android系统

可提供的 1.0.9 及更高版本

setPlayBtnsVisibility

设置播放界面按钮

setPlayBtnsVisibility();

params

btnid:

  • 类型:字符串
  • 描述:界面的可见按钮ID,
    • btnPlay 播放,
    • playbtnbox 整个播放控制栏,
    • play_progress 进度条(Android 不支持),
    • btnHWDecode 硬件解码,
    • btnRenderMode 渲染方式,
    • btnLog 日志,
    • btnScreenOrientation 横竖屏切换
    • btnCacheStrategy 缓存设置,播放直播流时不可用

show:

  • 类型:数字
  • 描述:按钮可见状态0为隐藏1为显示

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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

开始播放视频

startPlay()

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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

停止播放视频

stopPlay()

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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及更高版本

playBtnsPerformClickById

通过按钮id来模拟点击按钮

playBtnsPerformClickById({params})

params

btnid:

  • 类型:字符串
  • 描述:界面的可见按钮ID,
    • btnPlay 播放,
    • btnLog 日志,
    • btnHWDecode 硬件解码,
    • btnScreenOrientation 横竖屏切换,
    • btnRenderMode ,填充适应切换
    • btnCacheStrategy 码流,

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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

隐藏视频

hidePlayer()

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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

显示视频

showPlayer()

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    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

恢复推流

resumePush()

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:,   //数字类型;0为恢复推流成功;1为恢复推流失败。
}

示例代码

var txLive = api.require('txLive');
txLive.resumePush(function(ret, err){
    api.alert({msg: JSON.stringify(ret)});
});

可用性

iOS系统

可提供的1.0.0及更高版本

addBeautyBoardListener

美颜面板显示/隐藏监听

addBeautyBoardListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    show:,   //布尔类型;是否显示,true/false
}

示例代码

var txLive = api.require('txLive');
txLive.addBeautyBoardListener(function(ret){
    api.alert({msg: JSON.stringify(ret)});
});

可用性

iOS 系统,Android 系统

可提供的 1.0.8 及更高版本

setVideoQuality

设置视频分辨率

setVideoQuality()

Params

definition:

  • 类型:数字类型
  • 描述:视频分辨率
    • 1 (standard 标清 360*640)
    • 2 (high 高清 540*960)
    • 3 (super 超清 720*1280)

adjustBitrate:

  • 类型:布尔类型
  • 描述:是否自适应比特率
  • 默认:false

示例代码

var txLive = api.require('txLive');
txLive.setVideoQuality({
    definition:1,
    adjustBitrate:false
});

可用性

Android 系统

可提供的 1.0.8 及更高版本

hideLoadingView

隐藏播放器加载动画

hideLoadingView()

示例代码

var txLive = api.require('txLive');
txLive.hideLoadingView();

可用性

Android 系统

可提供的 1.0.8 及更高版本

论坛示例

为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

是否仍需要帮助? 请保持联络!
最后更新于 2024/11/18