aliyunLive

录制端(推流)

播放端(拉流)

概述

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

配置直播流

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) {
      api.alert({
            msg: 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){
    api.alert({
            msg: 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){
    api.alert({
            msg: 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){
    api.alert({
            msg: 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){
        api.alert({
            msg: 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){
    api.alert({
            msg: 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及更高版本

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