alivcLivePusher

来自于:官方立即使用

推流相关接口

概述

产品简介

阿里云推流SDK(ApsaraVideo for Live Streaming SDK)是基于阿里云强大内容分发网络和音视频实时通讯技术支持下的直播客户端推流开发工具,为用户提供简单易用的开放接口、网络自适应的流畅体验、多节点的低延迟优化、功能强大的实时美颜等音视频直播技术服务。SDK免费提供给所有开发者,让用户告别复杂的架构设计,降低维护成本,专注于自身业务逻辑实现和用户体验的提升。

使用流程

流程 : 用户APP向APPServer发起请求,获取推流URL -> AppServer根据规则拼接推流URL返回给APP -> APP赋值推流URL到推流SDK,使用推流SDK发起推流 -> 推流SDK将直播流推送到CDN

系统要求

  • ios:
    • SDK支持iPhone5s及以上版本,iOS8.0及以上版本
    • 硬件CPU支持ARMv7、ARMv7s、ARM64
  • Android:
    • SDK支持Android 4.3及以上版本
    • 硬件CPU支持ARM64、ARMV7

不能同时添加的模块:aliyunLive 等同样是封装阿里云SDK的模块。

注意

使用该模块时需要使用升级后的编译环境,请在云编译的时候勾选“使用升级环境编译”,并且在控制台 “高级设置” 中将固件版本设置为 4.3.1或以上

initPusher

初始化推流

initPusher({params},callback(ret, err))

params

resolution:

  • 类型:字符串
  • 描述:分辨率
  • 默认:540P
  • 取值范围:
    • 540P
    • 720P
    • 1080P

initialVideoBitrate:

  • 类型:数字类型
  • 描述:初始化码率
  • 默认:800(Kbps)

targetVideoBitrate:

  • 类型:数字类型
  • 描述:目标码率
  • 默认:800(Kbps)

minVideoBitrate:

  • 类型:数字类型
  • 描述:最小码率
  • 默认:400(Kbps)

qualityMode:

  • 类型:字符串
  • 描述:码控
  • 默认:ResolutionFirst
  • 取值范围:
    • ResolutionFirst (清晰度优先模式)
    • FluencyFirst (流畅度优先模式)
    • Custom (自定义模式,SDK会根据开发者设置的码率进行配置)

beautyMode:

  • 类型:字符串
  • 描述:美颜模式
  • 默认:professional
  • 取值范围:
    • professional (专业版,具备人脸识别功能。可以调节含瘦脸、大眼、小脸、腮红等。)
    • normal (普通版,不具备人脸识别功能)

beautyEnable:

  • 类型:布尔类型
  • 描述:是否开启美颜 (ios 不支持)
  • 默认:false

previewOrientation:

  • 类型:字符串
  • 描述:推流方向设置
  • 默认:PORTRAIT
  • 取值范围:
  • PORTRAIT
  • LANDSCAPE_HOME_RIGHT
  • LANDSCAPE_HOME_LEFT

fps:

  • 类型:数字类型
  • 描述:帧率
  • 默认:20

videoOnly:

  • 类型:布尔类型
  • 描述:纯视频推流 (如果设置为false则为纯音频推流)注意:1.如果不调用startPreview接口进行预览的话,推流会失败 2.与 audioOnly互斥 3.如果videOnly和audioOnly都设置为false,则视频和音频都可以推流
  • 默认:false

audioOnly:

  • 类型:布尔类型
  • 描述:纯视频推流 (如果设置为false则为纯音频推流)注意:1.如果不调用startPreview接口进行预览的话,推流会失败 2.与 videoOnly互斥
  • 默认:false

waterMarkImage:

  • 类型: json对象
  • 描述:(可选项)水印图片,不添加该参数,则无水印图片
  • 内部字段:
path: '',               //字符串类型,图片的路径,支持fs://,widget://(android 不支持widget://)
coordX: 0.1,            //数字类型,水印左上顶点x的相对坐标,默认0.1 取值范围:[0,1]
coordY: 0.1,            //数字类型,水印左上顶点y的相对坐标,默认0.1 取值范围:[0,1]
width:0.3               //数字类型,水印的相对宽度 (水印会根据水印图片实际大小和水印宽度等比缩放),默认0.3 取值范围:[0,1]

cameraType:

  • 类型:字符串
  • 描述:相机方向
  • 默认:front
  • 取值范围:
    • back
    • front

callback

ret:

  • 类型:JSON对象
  • 描述:返回值
{
    status : true //初始化是否成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.initPusher({
    resolution:540P,
    // ...
},function(ret){
    alert(JSON.stringify(ret));
})

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

showDebugView

显示调试悬浮窗

注意 :Debug悬浮窗会占用一定的系统资源,只可用于APP研发的Debug阶段,Release版本请勿调用此接口,Android需要打开悬浮窗权限

showDebugView()

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.showDebugView();
})

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

hideDebugView

隐藏调试悬浮窗

hideDebugView()

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.hideDebugView()

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

sendMessage

插入SEI消息(在线问答,推送问题或者答案消息)

sendMessage({params},callback(ret))

params

msg:

  • 类型:字符串类型
  • 描述: 需要插入流的SEI消息体,建议是json格式。阿里云播放器SDK可收到此SEI消息

repeatCount:

  • 类型:数字类型
  • 描述: 发送的帧数。设置100,则在接下去的100帧均插入此SEI消息。

delayTime:

  • 类型:数字类型
  • 描述:延时多少毫秒发送

KeyFrameOnly:

  • 类型:布尔
  • 描述:是否只发关键帧

callback

ret:

  • 类型:JSON对象
  • 描述:返回值
{
    status : true // 是否成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.sendMessage({
msg:'',
repeatCount:'',
delayTime:'',
KeyFrameOnly:''
},function(ret){
    alert(JSON.stringify(ret));
})

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

startPreview

开始预览

startPreview({params},callback(ret))

params

rect:

  • 类型:JSON 类型
  • 描述:(可选项)预览窗口的位置及大小
  • 内部字段:
{
    x: 0,                              //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
    y: 0,                              //(可选项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
    w:300,                             //(可选项)数字类型;模块宽度(相对于所属的 Window 或 Frame;默认300
    h:600                              //(可选项)数字类型;模块高度(相对于所属的 Window 或 Frame;默认300
}

fixedOn:

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

fixed:

  • 类型:布尔
  • 描述:(可选项)模块是否随所属 window 或 frame 滚动
  • 默认值:true(不随之滚动)

callback

ret:

  • 类型:JSON对象
  • 描述:返回值
{
    status : true // 预览界面是否打开成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.startPreview(function(ret){
    alert(JSON.stringify(ret));
})

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

startPush

开始推流

startPush(callback(ret))

Params

url:

  • 类型:字符串类型
  • 描述:推流地址

callback

ret:

  • 类型:JSON对象
  • 描述:返回值
{
    status : true //推流是否成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.startPush(function(ret){
    alert(JSON.stringify(ret));
})

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopPush

停止推流

stopPush()

callback

ret:

  • 类型:JSON对象 (仅支持iOS)
  • 描述:返回值
{
    status : true //成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.stopPush();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

pause

暂停推流

pause()

callback

ret:

  • 类型:JSON对象 (仅支持iOS)
  • 描述:返回值
{
    status : true //成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.pause();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

resume

回复推流

pause()

callback

ret:

  • 类型:JSON对象 (仅支持iOS)
  • 描述:返回值
{
    status : true //成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.resume();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

restartPush

重新开始推流

restartPush()

callback

ret:

  • 类型:JSON对象 (仅支持iOS)
  • 描述:返回值
{
    status : true //成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.restartPush();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

reconnectPush

推流重连

reconnectPush()

callback

ret:

  • 类型:JSON对象 (仅支持iOS)
  • 描述:返回值
{
    status : true //成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.reconnectPush();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

destroy

销毁推流

destroy()

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.destroy();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setMute

设置静音

setMute({params})

Params

isMute:

  • 类型:布尔类型
  • 描述:是否静音

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setMute({
    isMute:true
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

switchCamera

切换摄像头 (必须在预览或者推流成功后才能调用)

switchCamera()

callback

ret:

  • 类型:JSON对象 (仅支持iOS)
  • 描述:返回值
{
    status : true //成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.switchCamera();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setFlash

设置闪关灯 (必须在预览或者推流成功后才能调用)

setFlash({params})

Params

isFlash:

  • 类型:布尔类型
  • 描述:是否开启闪关灯

callback

ret:

  • 类型:JSON对象 (仅支持iOS)
  • 描述:返回值
{
    status : true //成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setFlash({
    isFlash:true
});

可用性

iOS系统

可提供的1.0.0及更高版本

setPreviewMirror

打开预览镜像 (必须在预览或者推流成功后才能调用)

setPreviewMirror()

Params

isMirror:

  • 类型:布尔类型
  • 描述:是否打开预览镜像

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setPreviewMirror({
    isMirror:true
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setPushMirror

打开推流镜像 (必须在预览或者推流成功后才能调用)

setPreviewMirror({params})

Params

isMirror:

  • 类型:布尔类型
  • 描述:是否打开推流镜像

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setPushMirror({
    isMirror:true
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setBeautyOn

是否打开美颜 (必须在预览或者推流成功后才能调用)

setBeautyOn({params})

Params

isBeautyOn:

  • 类型:布尔类型
  • 描述:是否打开美颜

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setBeautyOn({
    isBeautyOn:true
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setBeautyValues

设置美颜参数 (必须在预览或者推流成功后才能调用)

setBeautyValues({params})

Params

beautyWhite:

  • 类型:数字类型
  • 描述:美白
  • 默认:50
  • 取值:0-100

beautyBuffing:

  • 类型:数字类型
  • 描述:磨皮
  • 默认:50
  • 取值:0-100

beautyRuddy:

  • 类型:数字类型
  • 描述:红润
  • 默认:50
  • 取值:1-100

beautyCheekPink:

  • 类型:数字类型:
  • 描述:设置美颜 瘦脸程度
  • 默认:50
  • 取值:0-100

beautyThinFace:

  • 类型:数字类型
  • 描述:设置美颜 收下巴程度
  • 默认:50
  • 取值:1-100

beautyShortenFace:

  • 类型:数字类型
  • 描述: 腮红度
  • 默认:50
  • 取值:1-100

beautyBigEye:

  • 类型:数字类型
  • 描述:大眼程度
  • 默认:50
  • 取值:1-100

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setBeautyValues({
    beautyRuddy:50
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setAutoFocus

是否自动对焦 (必须在预览或者推流成功后才能调用)

setAutoFocus({params})

Params

isAutoFocus:

  • 类型:布尔类型
  • 描述:是否自动对焦

callback

ret:

  • 类型:JSON对象 (仅支持iOS)
  • 描述:返回值
{
    status : true //成功
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setAutoFocus({
    isAutoFocus:true
});

可用性

iOS系统

可提供的1.0.0及更高版本

focusCameraAtAdjustedPoint

手动对焦 (必须在预览或者推流成功后才能调用)

focusCameraAtAdjustedPoint({params})

Params

x:

  • 类型:数字类型
  • 描述:对焦坐标x

y:

  • 类型:数字类型
  • 描述:对焦坐标y

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.focusCameraAtAdjustedPoint({
    x:100,
    y:100
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setZoom

设置缩放 (必须在预览或者推流成功后才能调用)

setZoom({params})

Params

zoom:

  • 类型:数字类型
  • 描述:缩放大小
  • 取值范围:[0, getMaxZoom()]

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setZoom({
    zoom:5
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getMaxZoom

获取缩放最大值 (必须在预览或者推流成功后才能调用)

getMaxZoom(callback(ret))

callback

ret:

  • 类型:JSON对象
  • 描述:返回值
{
    maxZoom : 5 //最大缩放值
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.getMaxZoom(function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getCurrentZoom

获取当前缩放值 (必须在预览或者推流成功后才能调用)

getCurrentZoom(callback(ret))

callback

ret:

  • 类型:JSON对象
  • 描述:返回值
{
    currentZoom : 5 //当前缩放值
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.getCurrentZoom(function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

isPushing

是否正在推流 (必须在预览或者推流成功后才能调用)

isPushing(callback(ret))

callback

ret:

  • 类型:JSON对象
  • 描述:返回值
{
    isPushing : true //是否正在推流
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.isPushing(function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getPushUrl

获取推流地址 (必须在预览或者推流成功后才能调用)

getPushUrl(callback(ret))

callback

ret:

  • 类型:JSON对象
  • 描述:返回值
{
    pushUrl : '' //推流地址
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.getPushUrl(function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

startBGMWithMusicPathAsync

播放背景音乐 注意:背景音乐相关接口在开始预览之后才可调用

startBGMWithMusicPathAsync(params,callback(ret))

params

path:

  • 类型:字符串类型
  • 描述: 背景音乐路径

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.startBGMWithMusicPathAsync({
path:'',
},function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopBGMAsync

停止播放背景音乐

stopBGMAsync(callback(ret))

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.stopBGMAsync();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

pauseBGM

暂停播放背景音乐

pauseBGM()

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.pauseBGM();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

resumeBGM

恢复播放背景音乐

resumeBGM()

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.resumeBGM();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setBGMLoop

设置背景音乐是否循环播放

setBGMLoop(params)

params

isLoop:

  • 类型:布尔类型
  • 描述:是否循环
  • 默认:false

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setBGMLoop({
isLoop:false,
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setBGMEarsBack

设置背景音乐耳返开关

setBGMEarsBack(params,callback(ret))

params

isOpen:

  • 类型:布尔类型
  • 描述:是否打开耳返
  • 默认:false

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setBGMEarsBack({
isOpen:false,
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setAudioDenoise

设置降噪开关

setAudioDenoise(params,callback(ret))

params

isOpen:

  • 类型:布尔类型
  • 描述:是否打开降噪
  • 默认:false

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setAudioDenoise({
isOpen:false,
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setBGMVolume

设置背景音乐混音 音乐音量

setBGMVolume(params,callback(ret))

params

volume:

  • 类型:数字类型
  • 描述:音乐音量大小
  • 取值范围:[0 ~ 100]

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setBGMVolume({
volume:50,
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setCaptureVolume

设置背景音乐混音 人声音量

setCaptureVolume(params,callback(ret))

params

volume:

  • 类型:数字类型
  • 描述:人声音量大小
  • 取值范围:[0 ~ 100]

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setCaptureVolume({
volume:50,
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addEventListener

监听推流相关事件

addEventListener(callback(ret))

callback

ret:

  • 类型:JSON对象
  • 描述:返回值
{
    eventType:'previewStarted' // 预览开始 previewStarted
                                   // 预览停止 previewStoped
                                   // 开始推流 pushStarted
                                   // 暂停推流 pushPauesed
                                   // 恢复推流 pushResumed
                                   // 推送停止 pushStoped
                                   // 重新推送 pushRestarted
                                   // 首帧预览 firstFramePreviewed
                                   // 丢帧    dropFrame(仅支持安卓)
                                   // 码率调整 adjustBitRate(仅支持安卓)
                                   // 帧率调整 adjustFps(仅支持安卓)
                                   // 网络差   networkPoor
                                   // 网络恢复 networkRecovery
                                   // 重连开始 reconnectStart
                                   // 重连失败 reconnectFail
                                   // 重连成功 reconnectSucceed
                                   // 发送数据失败 sendDataTimeout
                                   // 连接失败 connectFail
                                   // 系统错误 systemError(仅支持iOS)
                                   // SDK错误 SDKError(仅支持iOS)
   code:1  // 错误码(仅当是系统错误或SDK错误时有值)
   msg:''  // 错误信息 (仅当是系统错误或SDK错误时有值)
}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.addEventListener(function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#isCameraSupportAutoFocus 相机是否支持自动对焦 isCameraSupportAutoFocus(callback(ret)) ##callback ret: - 类型:JSON对象 - 描述:返回值 js { isSupport:true // boolean类型;是否支持自动对焦 } ##示例代码 js var alivcLivePusher = api.require('alivcLivePusher'); alivcLivePusher.isCameraSupportAutoFocus(function(ret){ alert(JSON.stringify(ret)); }); ##可用性 Android系统 可提供的1.0.0及更高版本
#isCameraSupportFlash 相机是否支持闪关灯 isCameraSupportFlash(callback(ret)) ##callback ret: - 类型:JSON对象 - 描述:返回值 js { isSupport:true // boolean类型;是否支持自动对焦 } ##示例代码 js var alivcLivePusher = api.require('alivcLivePusher'); alivcLivePusher.isCameraSupportFlash(function(ret){ alert(JSON.stringify(ret)); }); ##可用性 Android系统 可提供的1.0.0及更高版本

getLiveStatus

获取当前推流状态

getLiveStatus(callback(ret))

callback

ret:

  • 类型:JSON对象
  • 描述:返回值
{
    livePushStatus:0 // 数字类型;0:空闲
                                1:初始化成功
                                2:打开预览中
                                3:正在预览
                                4:推流连接中
                                5:正在推流
                                6:停止推流中
                                7:暂停推流中
                                8:暂停推流
                                9:恢复推流中
                                10:重启推流中
                                11:错误状态

}

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.getLiveStatus(function(ret){
    alert(JSON.stringify(ret));
});

可用性

android, ios系统

可提供的1.0.0及更高版本

setpreviewDisplayMode

预览窗口显示模式

注意:本设置只对预览显示生效,实际推出去的视频流的分辨率和AlivcLivePushConfig中预设置的分辨率一致,并不会因为更改预览显示模式而变化,预览显示模式是为了适配不同尺寸的手机,推流用户可以自由地选择预览效果。

setpreviewDisplayMode(params)

params

displayModel:

  • 类型:数字类型
  • 描述:预览显示模式
  • 取值范围:[0 ~ 2],0: 铺满窗口,视频比例和窗口比例不一致时预览会有变形 1: 保持视频比例,视频比例和窗口比例不一致时有黑边 2: 剪切视频以适配窗口比例,视频比例和窗口比例不一致时会裁剪视频

示例代码

var alivcLivePusher = api.require('alivcLivePusher');
alivcLivePusher.setpreviewDisplayMode(function(ret){
    alert(JSON.stringify(ret));
});

可用性

android, ios系统

可提供的1.0.0及更高版本