快直播概述
快直播(Live Event Broadcasting,LEB)是标准直播在超低延迟播放场景下的延伸,比传统直播协议延迟更低,为观众提供毫秒级的极致直播观看体验。 能够满足一些对延迟性能要求更高的特定场景需求,例如在线教育、体育赛事直播、在线答题等。
方案优势
适用场景
本插件封装了腾讯的快直播视频播放器。直播(LIVE)的视频源是主播实时推送的。因此,主播停止推送后,播放端的画面也会随即停止,而且由于是实时直播,所以播放器在播直播 URL 的时候是没有进度条的。
通常使用的直播协议如下,App 端推荐使用 FLV 协议的直播地址(以“http”打头,以“.flv”结尾):
关于AVM方式
本插件支持 AVM 方式打开。通过 AVM 标签方式打开的插件,在 js 代码中需要通过 document.getElementById 的形式获取该插件实例对象然后进行其它逻辑的操作。否则会产生莫名其妙的问题。
该插件同时也支持 api.require 方式调用,通过 configView 接口相当于 AVM 的标签打开了一个视频播放区域的 frame(view)插件,用户点击全屏按钮后,插件自动代码一个 window 来全屏播放视频。
关于后台播放功能
如需支持后台播放功能请参考 config.xml 配置说明文档里关于 BackgroundMode 的配置
配置实例如下:
<preference name="backgroundMode" value="audio"/>
注意:iOS端1.0.1版(原生SDK 10.1版本)本开始增加授权校验,详情参考腾讯文档
设置验证
setLicence({params})
licenceURL:
licenceKey:
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.setLicence({
licenceURL:'',
licenceKey:''
})
iOS 系统
可提供的 1.0.1 及更高版本
配置直播播放器视图。
注意:本接口仅支持引擎2.0方式调用。引擎3.0上可直接通过 mo-txliveplayerv2 标签配置使用播放器。
configPlayerView({params})
rect:
{
x: 0, //(可选项)数字类型;插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(可选项)数字类型;插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w:300, //(可选项)数字类型;插件宽度(相对于所属的 Window 或 Frame;默认:100%
h:600 //(可选项)数字类型;插件高度(相对于所属的 Window 或 Frame;默认:100%
}
fixedOn:
fixed:
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.configPlayerView({
rect:{
x:,
y:,
w:,
h:
},
fixedOn:'',
fixed:false
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
重设播放器位置和大小
注意:本接口仅对 configPlayerView 打开的播放器有效
resizePlayerView({params})
rect:
{
x: 0, //(可选项)数字类型;插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:原x坐标
y: 0, //(可选项)数字类型;插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:原y坐标
w:300, //(可选项)数字类型;插件宽度(相对于所属的 Window 或 Frame;默认:原宽度
h:600 //(可选项)数字类型;插件高度(相对于所属的 Window 或 Frame;默认:原高度
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.resizePlayerView({
rect:{
x:,
y:,
w:,
h:
}
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
隐藏播放试图的 frame
hidePlayerView()
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.hidePlayerView()
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
恢复显示播放试图的 frame
showPlayerView()
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.showPlayerView()
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
初始化播放器
initPlayer()
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.initPlayer()
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
关闭播放器
closePlayer()
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.closePlayer()
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
设置本地摄像头预览画面的旋转角度。
setRenderRotation({params},callback(ret))
rotation:
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.setRenderRotation({
rotation:90
},function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
设置画面的填充模式。
setRenderFillMode({params},callback(ret))
mode:
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.setRenderFillMode({
mode:'fill'
},function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
开始播放
startPlay({params},callback(ret))
videoURL:
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.startPlay({
videoURL:'http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8'
},function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
停止播放音视频流
stopPlay(callback(ret))
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.stopPlay(function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
isPlaying()
是否正在播放
ret:
{
isPlaying:, //布尔类型;是否正在播放
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.isPlaying(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
暂停音频播放
pauseAudio(callback(ret))
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.pauseAudio(function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
恢复音频播放
resumeAudio(callback(ret))
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.resumeAudio(function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
暂停视频播放
pauseVideo(callback(ret))
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.pauseVideo(function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
恢复视频播放
resumeVideo(callback(ret))
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.resumeVideo(function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
设置音量
setPlayoutVolume({params},callback(ret))
volume:
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.setPlayoutVolume({
volume: 1
},function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
设置播放器缓存自动调整的最小和最大时间 ( 单位:秒 )。
注意:要在开始播放之前设置!
setCacheParams({params},callback(ret))
minTime:
maxTime:
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.setCacheParams({
minTime: 1,
maxTime: 5
},function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
启用播放音量大小提示。
enableVolumeEvaluation({params},callback(ret))
intervalMs:
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode,仅首次回调有值
volume: //数字类型;音量大小,首次回调无值
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.enableVolumeEvaluation({
intervalMs: 100
},function(ret){
console.log(JSON.stringify(ret));
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
获取截图
snapshot(callback(ret))
ret:
{
status:, //布尔类型;是否获取成功
path: //字符串类型;截图路径
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.snapshot(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
开启接收 SEI 消息
enableReceiveSeiMessage({params},callback(ret))
enable:
payloadType:
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.enableReceiveSeiMessage({
payloadType: 5,
enable: true
},function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
是否显示播放器状态信息的调试浮层
showDebugView({params},callback(ret))
showDebug:
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.showDebugView({
showDebug: true
},function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
调用高级 API 接口。该接口用于调用一些高级功能。
setProperty({params},callback(ret))
key:
value:
ret:
{
status: //数字类型;状态码,详情参考 V2TXLiveCode
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.setProperty({
key: '',
value:''
},function(ret){
api.alert({msg:JSON.stringify(ret)});
})
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
addEventListener(callback(ret))
添加直播事件监听
ret:
{
eventType: '', //字符串类型;回调事件类型,取值范围:
//onError
//onWarning
//onVideoPlayStatusUpdate
//onAudioPlayStatusUpdate
//onStatisticsUpdate
//onReceiveSeiMessage
payloadType:, //字符串类型;仅当onReceiveSeiMessage时有值
data:'', //字符串类型;仅当onReceiveSeiMessage时有值
statistics: { //JSON对象;仅当onStatisticsUpdate时有值
appCpu:, //数字类型;当前 App 的 CPU 使用率(%)
systemCpu:, //数字类型;当前系统的 CPU 使用率(%)
width:, //数字类型;视频宽度
height: //数字类型;视频高度
fps: //数字类型;帧率(fps)
videoBitrate: //数字类型;视频码率(Kbps)
audioBitrate: //数字类型;音频码率(Kbps)
}
status:'', //数字类型;状态码,仅当onVideoPlayStatusUpdate和onAudioPlayStatusUpdate时有值
reason:'', //数字类型;状态对应的原因,仅当onVideoPlayStatusUpdate和onAudioPlayStatusUpdate时有值
code:, //数字类型;错误码,仅当onError和onWarning时有值
msg:'', //字符串类型;错误信息,仅当onError和onWarning时有值
}
var TXLivePlayerV2 = api.require('TXLivePlayerV2');
TXLivePlayerV2.addEventListener(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
/// 没有错误 V2TXLIVE_OK = 0,
/// 暂未归类的通用错误
V2TXLIVE_ERROR_FAILED = -1,
/// 调用 API 时,传入的参数不合法
V2TXLIVE_ERROR_INVALID_PARAMETER = -2,
/// API 调用被拒绝
V2TXLIVE_ERROR_REFUSED = -3,
/// 当前 API 不支持调用
V2TXLIVE_ERROR_NOT_SUPPORTED = -4,
/// license 不合法,调用失败
V2TXLIVE_ERROR_INVALID_LICENSE = -5,
/// 请求服务器超时
V2TXLIVE_ERROR_REQUEST_TIMEOUT = -6,
/// 服务器无法处理您的请求
V2TXLIVE_ERROR_SERVER_PROCESS_FAILED = -7,
/////////////////////////////////////////////////////////////////////////////////
//
// 网络相关的警告码
//
/////////////////////////////////////////////////////////////////////////////////
/// 网络状况不佳:上行带宽太小,上传数据受阻
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,