aliyunLive
来自于:官方立即使用
录制端(推流)
播放端(拉流)
概述
aliyunLive 封装了阿里云视频直播的sdk,该模块包括视频流采集和视频流播放两部分。使用该模块,需要在阿里云官网注册,在控制台创建直播流,并获取播放端相关参数,详情可以参照阿里云直播官网。阿里云视频直播
不能同时添加的模块:alivcLivePusher 等同样是封装阿里云SDK的模块。
本模块封装的阿里云直播SDK为旧版本的,阿里云官方已停止更新。已将直播SDK拆分为推流和拉流两套SDK,分别对应 APICloud 平台上的模块是: alivcLivePusher 和 alivcLivePlayer。推荐开发者使用这个两个模块。
注意:该模块android版 播放器只适用于android 4.4+,推流需要 android 4.5 以上版本支持。iOS版最低版本为8.0。(iOS云编译的时候需要勾选相机和麦克风权限,并在高级设置里选择iOS版本为8.0)
configStream
配置直播流
configStream({params},callback(ret, err))
params
rect:
- 类型:JSON 对象
- 描述:(可选项)视图的位置及尺寸
- 内部字段:
{
x: 0, //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(可选项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 375, //(可选项)数字类型;模块的宽度;默认父视图的宽度
h: 667 //(可选项)数字类型;模块的宽度;默认父视图的高度
}
url:
- 类型:字符串
- 描述:推流url
bitRate:
- 类型:JSON对象
- 描述:(可选项)码率
- 内部字段:
{
videoMaxBitRate: 1500 * 1000, //(可选项)数字类型;最大码率,默认“1500 * 1000”,网速变化的时候会根据这个值来提供建议码率
videoMinBitRate: 400 * 1000, //(可选项)数字类型;最小码率,默认“400 * 1000”,网速变化的时候会根据这个值来提供建议码率
videoBitRate: 600 * 1000, //(可选项)数字类型;当前码率,默认“600 * 1000”,在最大码率和最小码率之间
audioBitRate: 64 * 1000 //(可选项)数字类型;音频码率,默认“64 * 1000”
}
fps:
- 类型:数字
- 描述:(可选项)帧率
- 默认:20
screenOrientation:
- 类型:字符串
- 描述:(可选项)屏幕方向
- 取值范围:
- vertical
- horizontal
- 默认:vertical
reconnectTimeout:
- 类型:数字类型
- 描述:(可选项)重连超时时长
- 默认:5(单位:s)
videoResolution :
- 类型: 字符串
- 描述:(可选项)视频分辨率
- 取值范围:
- 240P
- 360P
- 480P
- 540P
- 720P
- 1080P
outputResolution:
- 类型:字符串
- 描述:输出分辨率
- 取值范围:
- 240P
- 360P
- 480P
- 540P
- 720P
- 1080P
exposure:
- 类型:数字类型
- 描述:曝光度(-1 或 不传表示自动曝光)
- 取值范围:0~100
- 默认:-1
videoPreset:
- 类型:字符类型
- 描述:(可选项)摄像头采集质量
- 取值范围:
- 960*540
- 1280*720
- 默认:1280*720
cameraPosition:
- 类型:字符类型
- 描述:(可选项)摄像头位置
- 取值范围:
- back
- front
- 默认:front
frontMirror:
- 类型:布尔
- 描述:(可选项)是否开启前置摄像头镜像(仅支持iOS)
- 默认值:true
waterMarkImage:
- 类型: json对象
- 描述:(可选项)水印图片,不添加该参数,则无水印图片
- 内部字段:
path: '', //字符串类型,图片的路径,支持fs://,widget://
location: ’‘, //字符串类型,图片位置,取值范围:rightTop,leftTop,leftBottom,rightBottom,默认leftTop
maginX: 20, //数字类型,水印图片左上角顶点的x坐标,默认20
maginY: 20 //数字类型,水印图片左上角顶点的y坐标,默认20
fixedOn:
- 类型:字符串类型
- 描述:(可选项)模块添加到指定 frame 的名字(只指 frame,传 window 无效)
- 默认:模块依附于当前 window
fixed:
- 类型:布尔
- 描述:(可选项)模块是否随所属 window 或 frame 滚动
- 默认值:true(不随之滚动)
callback
ret:
- 类型:JSON对象
- 描述:返回值
{
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) {
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
startStream
开始推流
startStream(callback(ret, err))
callback
ret:
- 类型:JSON对象
- 描述:返回值
{
status : true // 布尔类型,是否推流成功
errorMsg:'' //当status为false时返回,重连超时的错误信息
}
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.startStream(function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
stopStream
停止推流
stopStream(callback(ret,err))
callback
ret:
- 类型:JSON对象
- 描述:返回值
{
status : true // 是否停止成功
}
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.stopStream(function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setFlash
设置闪关灯(前置摄像头打开时不支持操作闪光灯)
setFlash({params})
params
flash:
- 类型:字符串
- 描述:(可选项)闪光灯类型
- 默认值:off
- 取值范围:
- on:打开闪光灯
- off:关闭闪关灯
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.setFlash({
flash: 'on'
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setMute
设置静音
setMute({params})
params
mute:
- 类型:字符串
- 描述:(可选项)静音状态
- 默认值:off
- 取值范围:
- on:静音打开
- off:静音关闭
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.setMute({
mute: 'on'
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setBeauty
设置美颜
setBeauty({params})
params
beauty:
- 类型:字符串
- 描述:(可选项)美颜状态
- 默认值:off
- 取值范围:
- on:美颜打开
- off:美颜关闭
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.setBeauty({
beauty: 'on',
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setSkinValue
设置美颜度
setSkinValue({params})
params
value:
- 类型:数字
- 描述:(可选项)美颜度
- 默认值:1
- 取值范围: 调节范围 0 — 1
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.setSkinValue({
value:1
});
可用性
iOS系统
可提供的1.0.0及更高版本
setBeautyLevel
设置美颜级别(注意:只有打开美颜是调用该方法才有效)
setBeautyLevel({params})
params
level:
- 类型:字符串
- 描述:(可选项)美颜级别
- 默认值:3
- 取值范围:1~7
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.setBeautyLevel({
level:3
});
可用性
Android系统
可提供的1.0.0及更高版本
setExposureValue
设置相机曝光度
setExposureValue({params})
params
value:
- 类型:数字
- 描述:(可选项)曝光度
- 默认值:0
- 取值范围: 调节范围 -10 — 10
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.setExposureValue({
value:1
});
可用性
iOS系统
可提供的1.0.0及更高版本
toggleCamera
转换摄像头
toggleCamera()
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.toggleCamera();
destroyStream
销毁推流,释放资源
destroyStream()
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.destroyStream();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
addConnectStatusListener
添加连接状态监听者
addConnectStatusListener(callback(ret,err))
callback
ret:
- 类型:JSON对象
- 描述:返回值
{
code : 0 // 0 代表未知状态
// 1 代表开始连接
// 2 代表连接成功
// 3 代表连接失败
// 4 代表连接销毁
// 5 代表网络繁忙
}
示例代码
var aliyunLive = api.require('aliyunLive');
aliyunLive.addConnectStatusListener(function(ret){
alert(JSON.stringify(ret));
});****
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
focusing
自动对焦
focusing()
params
xRatio:
- 类型:数字
- 描述:屏幕横向方向的比例
- 取值范围:0.0 - 1.0
yRatio:
- 类型:数字
- 描述:屏幕纵向方向的比例
- 取值范围:0.0 - 1.0
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.focusing(0.5, 0.5);
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setZoom
设置缩放比例
setZoom()
params
scaleFactor:
- 类型:数字
- 描述:缩放因子
- 取值范围:> 0.0
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setZoom(1);
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
init
初始化媒体播放器
init({params}, callback(ret, err))
params
rect:
- 类型:JSON 对象
- 描述:(可选项)模块的位置及尺寸
- 内部字段:
{
x: 0, //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(可选项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 300, //(可选项)数字类型;模块的宽度;页面从x位置开始自动充满所属的 Window 或 Frame 的宽度;默认:300
h: 300 //(可选项)数字类型;模块的高度;默认:300
}
accessKeyId:
- 类型:字符串
- 描述:accessKey(需要到阿里云直播平台去申请)
accessKeySecret:
- 类型:字符串
- 描述:accessKeySecret(需要到阿里云直播平台去申请)
businessId:
- 类型:字符串
- 描述:businessId
fixedOn:
- 类型:字符串类型
- 描述:(可选项)模块添加到指定 frame 的名字(只指 frame,传 window 无效)
- 默认:模块依附于当前 window
fixed:
- 类型:布尔
- 描述:(可选项)模块是否随所属 window 或 frame 滚动
- 默认值:true(不随之滚动)
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status : true //布尔类型;表示是否初始化成功
}
err:
- 类型:JSON 对象
- 注意:该参数只在初始化失败后存在
- 内部字段:
{
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){
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
prepareToPlay
准备播放(注意play之前需要调用此方法)
prepareToPlay({params}, callback(ret, err))
params
url:
- 类型:字符串
- 描述:播放地址,支持(支持HLS、RTMP、HTTP FLV、mp4等流格式)
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
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
播放
play()
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.play();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
pause
暂停
pause()
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.pause();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
stop
停止
stop()
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.stop();
可用性
iOS系统,Android系统
destroy
销毁
destroy()
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.destroy();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getVideoWidth
getVideoWidth(callback(ret))
获取视频的宽度
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
width : 300 //数字类型;视频的宽度
}
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.getVideoWidth(function(ret){
if(ret){
alert("Video width : " + ret.width);
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getVideoHeight
getVideoHeight(callback(ret))
获取视频的高度
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
height : 300 //数字类型;视频的高度
}
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.getVideoHeight(function(ret){
if(ret){
alert("Video height : " + ret.height);
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setTimeout
setTimeout({params})
设置请求超时时间
params
timeout:
- 类型:数字类型
- 描述:请求超时时间
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setTimeout({
timeout : 5000
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setMediaType
setMediaType({params})
设置媒体类型
params
type:
- 类型:数字类型
- 描述:媒体类型
- 取值范围:
- 0 live
- 1 vod
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setMediaType({
type : 0
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setMuteMode
setMuteMode({params})
是否静音
params
isMute:
- 类型:布尔类型
- 描述:表示是否静音
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setMuteMode({
isMute : true
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setVideoScalingMode
setVideoScalingMode({params})
视频缩放模式
params
mode:
- 类型:数字类型
- 描述:视频缩放模式
- 取值范围:
- 0 等比例缩放
- 1 剪切模式
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setVideoScalingMode({
mode : 1
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setDefaultDecoder
setDefaultDecoder({params})
设置默认解码器(由于不同手机硬件的差别,使用硬件解码器可能导致一些兼容性问题,所以在这里建议使用软件解码器)
params
type:
- 类型:数字类型
描述:解码器模式
备注:默认为软件解码。由于android手机硬件适配性的问题,很多android手机的硬件解码会有问题,所以,我们建议尽量使用软件解码。
取值范围:
- 0 硬件解码器
- 1 软件解码器
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setDefaultDecoder({
type : 1
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setMaxBufferDuration
setMaxBufferDuration({params})
设置缓冲时长
params
duration:
- 类型:数字类型
- 描述:缓冲时长
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.setMaxBufferDuration({
duration : 10000
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
addEventListener
addEventListener({params}, callback(ret))
添加监听事件
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
eventName : 'prepared' // 字符串;监听事件的名称;
// prepared
// error
// stopped
// completed
//startCache
//endCache
errorCode : 502 // 只有在error的情况下才有此参数
}
- errorCode:
- 511 加载超时
- 501 未知错误
- 502 没有输入文件
- 503 no surface
- 504 视频资源或者网络不可用
- 505 不支持此编码
- 506 没有足够内存
- 401 网络视频播放错误,没有网络或者网络状态不好的情况下播放网络视频会出现该错误
- 402 没有优先级
- 400 非法请求
- 509 未认证
- 510 资源访问失败
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.addEventListener(function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getErrorCode
getErrorCode(callback(ret))
获取错误码
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
errorCode : 0
}
示例代码
var mediaPlayer = api.require('aliyunLive');
mediaPlayer.getErrorCode(function(ret){
if(ret){
alert(ret.errorCode);
}
});
可用性
Android系统
可提供的1.0.0及更高版本