aliyunLive 封装了阿里云视频直播的sdk,该原生插件包括视频流采集和视频流播放两部分。使用该原生插件,需要在阿里云官网注册,在控制台创建直播流,并获取播放端相关参数,详情可以参照阿里云直播官网。阿里云视频直播
不能同时添加的原生插件:alivcLivePusher 等同样是封装阿里云SDK的原生插件。
本原生插件封装的阿里云直播SDK为旧版本的,阿里云官方已停止更新。已将直播SDK拆分为推流和拉流两套SDK,分别对应 Yonbuilder 移动开发平台上的原生插件是: alivcLivePusher 和 alivcLivePlayer。推荐开发者使用这个两个原生插件。
注意:该原生插件android版 播放器只适用于android 4.4+,推流需要 android 4.5 以上版本支持。iOS版最低版本为8.0。(iOS云编译的时候需要勾选相机和麦克风权限,并在高级设置里选择iOS版本为8.0)
配置直播流
configStream({params},callback(ret, err))
rect:
{
x: 0, //(可选项)数字类型;原生插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(可选项)数字类型;原生插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 375, //(可选项)数字类型;原生插件的宽度;默认父视图的宽度
h: 667 //(可选项)数字类型;原生插件的宽度;默认父视图的高度
}
url:
bitRate:
{
videoMaxBitRate: 1500 * 1000, //(可选项)数字类型;最大码率,默认“1500 * 1000”,网速变化的时候会根据这个值来提供建议码率
videoMinBitRate: 400 * 1000, //(可选项)数字类型;最小码率,默认“400 * 1000”,网速变化的时候会根据这个值来提供建议码率
videoBitRate: 600 * 1000, //(可选项)数字类型;当前码率,默认“600 * 1000”,在最大码率和最小码率之间
audioBitRate: 64 * 1000 //(可选项)数字类型;音频码率,默认“64 * 1000”
}
fps:
screenOrientation:
reconnectTimeout:
videoResolution :
outputResolution:
exposure:
videoPreset:
cameraPosition:
frontMirror:
waterMarkImage:
path: '', //字符串类型,图片的路径,支持fs://,widget://
location: ’‘, //字符串类型,图片位置,取值范围:rightTop,leftTop,leftBottom,rightBottom,默认leftTop
maginX: 20, //数字类型,水印图片左上角顶点的x坐标,默认20
maginY: 20 //数字类型,水印图片左上角顶点的y坐标,默认20
fixedOn:
fixed:
ret:
{
status : true // 预览界面是否打开成功
}
var aliyunLive = api.require('aliyunLive');
aliyunLive.configStream({
rect: {
x: 0,
y: 0,
w: 375,
h: 667
},
url: '',
bitRate: {
videoMaxBitRate: 1500 * 1000,
videoMinBitRate: 400 * 1000,
videoBitRate: 600 * 1000,
audioBitRate: 64 * 1000
},
fps: 20,
screenOrientation: 'vertical',
reconnectTimeout: 5,
videoResolution: '720P',
videoPreset: '1280*720',
cameraPosition: 'front',
waterMarkImage: {
path: '',
location: 'leftTop',
maginX: 20,
maginY: 20
},
fixed: true
},function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
开始推流
startStream(callback(ret, err))
ret:
{
status : true // 布尔类型,是否推流成功
errorMsg:'' //当status为false时返回,重连超时的错误信息
}
var aliyunLive = api.require('aliyunLive');
aliyunLive.startStream(function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
停止推流
stopStream(callback(ret,err))
ret:
{
status : true // 是否停止成功
}
var aliyunLive = api.require('aliyunLive');
aliyunLive.stopStream(function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置闪关灯(前置摄像头打开时不支持操作闪光灯)
setFlash({params})
flash:
var aliyunLive = api.require('aliyunLive');
aliyunLive.setFlash({
flash: 'on'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置静音
setMute({params})
mute:
var aliyunLive = api.require('aliyunLive');
aliyunLive.setMute({
mute: 'on'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置美颜
setBeauty({params})
beauty:
var aliyunLive = api.require('aliyunLive');
aliyunLive.setBeauty({
beauty: 'on',
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置美颜度
setSkinValue({params})
value:
var aliyunLive = api.require('aliyunLive');
aliyunLive.setSkinValue({
value:1
});
iOS系统
可提供的1.0.0及更高版本
设置美颜级别(注意:只有打开美颜是调用该方法才有效)
setBeautyLevel({params})
level:
var aliyunLive = api.require('aliyunLive');
aliyunLive.setBeautyLevel({
level:3
});
Android系统
可提供的1.0.0及更高版本
设置相机曝光度
setExposureValue({params})
value:
var aliyunLive = api.require('aliyunLive');
aliyunLive.setExposureValue({
value:1
});
iOS系统
可提供的1.0.0及更高版本
转换摄像头
toggleCamera()
var aliyunLive = api.require('aliyunLive');
aliyunLive.toggleCamera();
销毁推流,释放资源
destroyStream()
var aliyunLive = api.require('aliyunLive');
aliyunLive.destroyStream();
iOS系统,Android系统
可提供的1.0.0及更高版本
添加连接状态监听者
addConnectStatusListener(callback(ret,err))
ret:
{
code : 0 // 0 代表未知状态
// 1 代表开始连接
// 2 代表连接成功
// 3 代表连接失败
// 4 代表连接销毁
// 5 代表网络繁忙
}
var aliyunLive = api.require('aliyunLive');
aliyunLive.addConnectStatusListener(function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});****
iOS系统,Android系统
可提供的1.0.0及更高版本
自动对焦
focusing()
xRatio:
yRatio:
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.focusing(0.5, 0.5);
iOS系统,Android系统
可提供的1.0.0及更高版本
设置缩放比例
setZoom()
scaleFactor:
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setZoom(1);
iOS系统,Android系统
可提供的1.0.0及更高版本
初始化媒体播放器
init({params}, callback(ret, err))
rect:
{
x: 0, //(可选项)数字类型;原生插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(可选项)数字类型;原生插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 300, //(可选项)数字类型;原生插件的宽度;页面从x位置开始自动充满所属的 Window 或 Frame 的宽度;默认:300
h: 300 //(可选项)数字类型;原生插件的高度;默认:300
}
accessKeyId:
accessKeySecret:
businessId:
fixedOn:
fixed:
ret:
{
status : true //布尔类型;表示是否初始化成功
}
err:
{
msg : '初始化失败' //字符串类型;错误描述
}
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.init({
rect: {
x: 0,
y: 200,
w: 375,
h: 267
},
accessKeyId : 'QxJIheGFRL926hFX',
accessKeySecret : 'hipHJKpt0TdznQG2J4D0EVSavRH7mR',
businessId : 'video_live'
}, function(ret, err) {
if(ret){
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
准备播放(注意play之前需要调用此方法)
prepareToPlay({params}, callback(ret, err))
url:
ret:
{
status : true //布尔类型;表示是否准备就绪
}
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.prepareToPlay({
url:'rtmp://live.hkstv.hk.lxdns.com/live/hks'
}, function(ret, err) {
if(ret && ret.status){
alert("MediaPlayer Prepare Ready");
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
播放
play()
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.play();
iOS系统,Android系统
可提供的1.0.0及更高版本
暂停
pause()
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.pause();
iOS系统,Android系统
可提供的1.0.0及更高版本
停止
stop()
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.stop();
iOS系统,Android系统
销毁
destroy()
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.destroy();
iOS系统,Android系统
可提供的1.0.0及更高版本
getVideoWidth(callback(ret))
获取视频的宽度
ret:
{
width : 300 //数字类型;视频的宽度
}
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.getVideoWidth(function(ret){
if(ret){
alert("Video width : " + ret.width);
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
getVideoHeight(callback(ret))
获取视频的高度
ret:
{
height : 300 //数字类型;视频的高度
}
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.getVideoHeight(function(ret){
if(ret){
alert("Video height : " + ret.height);
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
setTimeout({params})
设置请求超时时间
timeout:
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setTimeout({
timeout : 5000
});
iOS系统,Android系统
可提供的1.0.0及更高版本
setMediaType({params})
设置媒体类型
type:
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setMediaType({
type : 0
});
iOS系统,Android系统
可提供的1.0.0及更高版本
setMuteMode({params})
是否静音
isMute:
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setMuteMode({
isMute : true
});
iOS系统,Android系统
可提供的1.0.0及更高版本
setVideoScalingMode({params})
视频缩放模式
mode:
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setVideoScalingMode({
mode : 1
});
iOS系统,Android系统
可提供的1.0.0及更高版本
setDefaultDecoder({params})
设置默认解码器(由于不同手机硬件的差别,使用硬件解码器可能导致一些兼容性问题,所以在这里建议使用软件解码器)
type:
类型:数字类型
描述:解码器模式
备注:默认为软件解码。由于android手机硬件适配性的问题,很多android手机的硬件解码会有问题,所以,我们建议尽量使用软件解码。
取值范围:
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setDefaultDecoder({
type : 1
});
iOS系统,Android系统
可提供的1.0.0及更高版本
setMaxBufferDuration({params})
设置缓冲时长
duration:
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setMaxBufferDuration({
duration : 10000
});
iOS系统,Android系统
可提供的1.0.0及更高版本
addEventListener({params}, callback(ret))
添加监听事件
ret:
{
eventName : 'prepared' // 字符串;监听事件的名称;
// prepared
// error
// stopped
// completed
//startCache
//endCache
errorCode : 502 // 只有在error的情况下才有此参数
}
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.addEventListener(function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
getErrorCode(callback(ret))
获取错误码
ret:
{
errorCode : 0
}
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.getErrorCode(function(ret){
if(ret){
alert(ret.errorCode);
}
});
Android系统
可提供的1.0.0及更高版本