isInited setStreamingProfile inputgainEnable setInputgain getInputgain toggleCamera startStream stopStream destroyStream turnLightOn turnLightOff setWithServerRegion setMuteMixedAudio initPlugin open close startStream stopStream setComposeNodes setComposerMode updateComposeNode updateIntensity getComposeNodes recoverStatus destroyEffectSDK getFilterList getStickerList getShapeList getMakeUpList getMakeUpOptionItems getBodyList updateComposeList updateFilterList updateStickerList updateAllList isUsingEffect isEffectSDKInited
七牛在视频直播大爆发时代,推出专为直播平台打造的全球化直播流服务和端到端直播场景解决方案,完美解决视频企业的三高之痛:技术门槛高、成本高、卡顿延时率高。 具体详见七牛云直播介绍
从推流到播放的一站式解决
七牛自建实时流网络(LiveNet),采用智能调度等技术,满足直播特有的网络需求;数据监控平台实现质量透明,帮助用户完成运营闭环;深耕场景丰富性与开放性,全面降低直播平台开发的技术门槛。
#####1.全球化的实时流网络
采用全新网络技术,实时计算全链路状态,按需智能伸缩最佳路径节点。实现秒开、低延迟不卡顿,和节点故障常态处理等直播需求
#####2.端到端,场景化 SDK
提供多平台采集 SDK 和播放 SDK,并开放云端 API 实现透明播控管理,助力企业开发者快速构建直播平台的核心业务,提高开发效率。
#####3.智能化质量监控
基于单个直播流业务粒度的线路质量智能监控及实时动态的数据统计,提供自动容错及全方位的数据分析,定位并优化直播卡顿率。
PLMediaStreaming 封装了七牛直播云服务平台的移动端开放 SDK。该插件包括视频流采集和抖音美颜:
####1,推流
开发者可通过调用 setStreamingProfile 接口打开一个的视频采集器(相当于 open 一个 frame),将摄像头收集到的视频推流到服务器端,注意这里需要开发者自己搭建业务服务器,可参考七牛直播入门指南。开发者可通过配置相应参数来自定义视频采集预览器样式、视频质量、美颜等功能。亦可以通过toggleCamera、startStream、stopStream、destroyStream 接口来控制视频采集器,实现停止、开始、切换前后摄像头等功能。
注意:
1, iOS平台,云编译的时候需要勾选相机和麦克风权限,并且最低版本是iOS8.0以上
2, 在iOS 平台上若要支持后台播放(声音)功能,请在 config.xml 文件内配置相关参数,申请后台运行权限,如下:
<preference name="backgroundMode" value="audio"/>
3, 使用本插件前需先获取授权
网络异常处理
直播中,网络异常的情况比我们能意料到的可能会多不少,常见的情况一般有:
1,网络环境切换,比如 3G/4G 与 Wi-Fi 环境切换;
2,网络不可达,网络断开;
3,带宽不足,可能触发缓存速度跟不上播放速度;
作为开发者我们不能乐观的认为只要是 Wi-Fi 网就是好的,因为即便是 Wi-Fi 也有可能因为运营商下行限制,共享网络带宽等因素导致以上网络异常情况的出现。
为何在直播中要面对这么多的网络异常情况,而在其他上传/下载中很少遇到的,这是因为直播对实时性的要求使得它不得不面对这一情况,即无论网络是否抖动,是否能一直良好,直播都要尽可能是可持续,可观看的状态。
对于网络环境的切换,通常需要 App 整体做出调整,不单单是针对直播,所以七牛直播的 SDK 并未对这一情况做额外的监听,而是需要开发者自己对这些状态做出处理。之所以不处理,主要因素是考虑到 App 的业务逻辑场景多样而复杂,对于直播重连的次数、时机、间隔都会有不同的需求,而此时应该让开发者自己来决定是否重连,以及尝试重连的次数。
网络异常处理方案
当因为网络异常而触发了播放断开时,可通过 addEventListener 接口(name 为status时)监听。开发者可以在这个方法内通过重新调用 start 接口来尝试重连。此处建议不要立即重连,而是采用重连间隔加倍的方式,比如共尝试 3 次重连,第一次等待 0.5s, 第二次等待 1s, 第三次等待 2s,这样的方式主要考虑到弱网时网络带宽的缓解需要时间,而加倍重连可以更容易在网络恢复的时候连接,而非在网络已经拥塞时还不断做无用功的重连。
初始化美颜插件
initPlugin({params},callback(ret))
resourcePath:
ret:
{
status: true, // 布尔类型;是否初始化成功
msg:'' // 初始化失败后的错误信息
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.initPlugin(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
打开相机预览页面
open({params},callback(ret))
rect:
{
x: 0, //(可选项)数字类型;插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(可选项)数字类型;插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 300, //(可选项)数字类型;插件的宽度;默认:'auto'
h: 400. //(可选项)数字类型;插件的高度;默认:'auto'
}
encodingProfile:
{
maxAdaptiveBitrate:800, //(可选项)数字类型;最大适配比特率;默认值:800
minAdaptiveBitrate:150, //(可选项)数字类型;最小适配比特率;默认值:800
audioQualityPreset:1, //(可选项)数字类型;音频编码质量;默认值:4
bitrateAdjustMode:'auto', //(可选项)字符串;比特率调节模式;默认:auto
codecType:'hw', //(可选项)字符串类型;编码方式;默认:hw
isWatermarkEnabled:false, //(可选项)布尔类型;是否使用水印;默认:false
watermarkLocation:'SOUTH_EAST', //(可选项)字符串;水印位置;默认:SOUTH_EAST
watermarkAlpha:100, //(可选项)字符串;水印透明度;默认:100
watermarkSize:'small',//(可选项)字符串;水印大小;默认:small
yuvFilterMode:'linear', //(可选项)字符串;yuvFilter模式;默认:linear
videoFPSControl:false, //(可选项)布尔类型;视频帧率控制;默认:false
videoOrientationPortrait:true,//(可选项)布尔类型;是否竖屏;默认:true
videoQualityPreset:4, //(可选项)数字类型,视频质量;默认:4
videoSizePreset:1, //(可选项)数字类型;视频大小;默认:1
quicEnable:true, //(可选项);布尔类型;默认:true
}
cameraSettings:
{
continuousAutoFocus:true, //(可选项)布尔类型;是否持续对焦;默认:true
encodingMirror:true, // (可选项)布尔类型;编码是否镜像翻转;默认:true
isFrontFacing:true, // (可选项)布尔类型;是否使用前置摄像头;默认:true
isCustomFaceBeauty:true, // (可选项)布尔类型;是否使用定制美颜功能;默认:true
previewMirror:true, // (可选项)布尔类型;是否开启预览页面镜像翻转;默认:true
sizeLevel:'medium' // (可选项)布尔类型;视频大小,默认:true
sizeRatio:'16_9' // (可选项)布尔类型;视频宽高比率,默认:true
}
publishUrl:
fixedOn:
fixed:
audioQualityPreset 取值如下:
bitrateAdjustMode 取值如下:
codecType 取值如下:
watermarkLocation 取值如下:
watermarkSize 取值如下:
yuvFilterMode 取值如下:
videoQualityPreset 取值如下:
videoSizePreset 取值范围:
sizeLevel 取值范围如下:
sizeRatio 取值如下:
ret:
{
eventType:'show' // 预览窗口显示;取值范围如下:
// ready 推流准备完毕
// show 预览窗口显示
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.open({
//...
},function(ret){
api.alert({msg:JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
关闭预览视图
close()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.close();
Android 系统
可提供的 1.0.0 及更高版本
开始推流
startStream()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.startStream();
Android 系统
可提供的 1.0.0 及更高版本
停止推流
stopStream()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.stopStream();
Android 系统
可提供的 1.0.0 及更高版本
设置特效组合,目前仅支持美颜、美型两种特效的任意叠加
setComposeNodes({params})
nodes:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setComposeNodes({
nodes:[]
});
Android 系统
可提供的 1.0.0 及更高版本
设置 composer 类型特效(美颜、美妆)是否可以与贴纸特效叠加
setComposerMode({params})
mode:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setComposerMode({
mode:'SHARE'
});
Android 系统
可提供的 1.0.0 及更高版本
更新某个特效的强度
updateComposeNode({params})
key:
value:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setComposeNodes({
key:'',
value:0.5
});
Android 系统
可提供的 1.0.0 及更高版本
更新某个特效的强度
updateComposeNode({params})
type:
intensity:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.updateIntensity({
type:'',
intensity:0.5
});
Android 系统
可提供的 1.0.0 及更高版本
获得已经开启的特效节点
getComposeNodes()
ret:
{
nodes:[]
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.getComposeNodes(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
恢复特效设置
recoverStatus()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.recoverStatus();
Android 系统
可提供的 1.0.0 及更高版本
释放特效资源
destroyEffectSDK()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.destroyEffectSDK();
Android 系统
可提供的 1.0.0 及更高版本
获取支持的滤镜列表
getFilterList()
ret:
{
filterItems:[{
defaultIntensity:'',
fileName:'',
filterName:'',
iconPath:''
}]
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.getFilterList(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
获取支持的贴纸列表
getStickerList()
ret:
{
stickerItems:[{
stickerName:'',
fileName:'',
tips:'',
iconPath:''
}]
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.getStickerList(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
获取支持的美型列表
getShapeList()
ret:
{
makeUpModels:[{
defaultIntensity:0.5,
effectName:'',
fileName:'',
key:'',
iconPath:''
}]
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.getShapeList(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
获取支持的美妆类型列表
getMakeUpList()
ret:
{
makeUpModels:[{
defaultIntensity:0.5,
effectName:'',
fileName:'',
key:'',
iconPath:''
}]
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.getMakeUpList(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
获取支持的美妆效果集合
getMakeUpOptionItems()
ret:
{
makeUpModels:[{
defaultIntensity:0.5,
effectName:'',
fileName:'',
key:'',
iconPath:''
}]
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.getMakeUpOptionItems(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
获取支持的美体列表
getBodyList()
ret:
{
makeUpModels:[{
defaultIntensity:0.5,
effectName:'',
fileName:'',
key:'',
iconPath:''
}]
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.getBodyList(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
更新 compose 类型特效列表
updateComposeList()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.updateComposeList();
Android 系统
可提供的 1.0.0 及更高版本
更新滤镜列表
updateFilterList()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.updateFilterList();
Android 系统
可提供的 1.0.0 及更高版本
更新动态贴纸列表
updateStickerList()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.updateStickerList();
Android 系统
可提供的 1.0.0 及更高版本
更新全部特效列表
updateAllList()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.updateAllList();
Android 系统
可提供的 1.0.0 及更高版本
判断是否正在使用特效
isUsingEffect()
ret:
{
status:true // 是否使用特效
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.isUsingEffect(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
检测 SDK 是否已经初始化完毕
isEffectSDKInited()
ret:
{
status:true // 是否初始化完毕
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.isEffectSDKInited(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
Android 系统
可提供的 1.0.0 及更高版本
是否初始化成功
isInited(callback(ret))
ret:
{
status: true //布尔类型;是否初始化成功
}
var PLMediaStreaming = api.require('PLMediaStreaming');PLMediaStreaming.isInited(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统
可提供的 1.0.0 及更高版本
设置deviceID
setDeviceID({params})
deviceID:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setDeviceID({
deviceID:''
});
iOS 系统
提供的 1.0.0 及更高版本
设置logLevel
setLogLevel({params})
logLevel:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setLogLevel({
logLevel:''
});
iOS 系统
可提供的 1.0.0 及更高版本
检查获取摄像头权限
checkAndRequestPermission(callback(ret))
ret:
{
granted: true //布尔类型;是否获取权限
status: 1 //数字类型;状态码
//0还没有确定是否授权
//1设备受限
//2拒绝授权
//3已授权
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.checkAndRequestPermission(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统
可提供的 1.0.0 及更高版本
配置直播流参数,初始化推流预览区域,初始化美颜特效授权
setStream({params},callback(ret,err))
modelFileDirPath:
licenseFilePath:
rect:
{
x: 0, //(可选项)数字类型;插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(可选项)数字类型;插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 300, //(可选项)数字类型;插件的宽度;默认:'auto'
h: 400. //(可选项)数字类型;插件的高度;默认:'auto'
}
videoCapture:
{
videoFrameRate: 30, //(可选项)数字类型;采集的视频数据的帧率,默认为 30
sessionPreset: '640*480', //(可选项)字符类型;采集的视频的Preset,默认为'640*480',取值范围:'640*480','1280*720','1920x1080'
previewMirrorFrontFacing: true , //(可选项) 布尔类型;前置预览是否开启镜像,默认为 true
previewMirrorRearFacing: false, //(可选项) 布尔类型;后置预览是否开启镜像,默认为 false
streamMirrorFrontFacing: false, //(可选项) 布尔类型;前置摄像头,推的流是否开启镜像,默认 false
streamMirrorRearFacing: false, //(可选项) 布尔类型;后置摄像头,推的流是否开启镜像,默认 false
videoOrientation: 'portrait', //(可选项) 字符类型;采集摄像头的旋转方向,默认'portrait', 取值范围:'portrait','right','left','upsideDown'
cameraPosition: 'front' //(可选项) 字符类型;摄像头的位置,默认'front', 取值范围:'front','back'
}
previewSetting:
{
previewSizeLevel: 'small', // 字符类型;相机预览大小等级
// 取值范围:small, medium, large
previewSizeRatio: 'ratio_4_3' // 字符类型;相机预览大小比例
// 取值范围:ratio_4_3, ratio_16_9
}
videoEncodeHeight:
videoStream:
{
videoSize:{ //(可选项) JSON对象;编码分辨率
width:320 , //数字类型;宽度;默认:320
height:480 //数字类型;高度;默认:480
},
videoQuality: 'medium1' //(可选项)字符串类型;编码质量;默认:medium1
//取值范围:
//low1:具体参数 videoSize: 272x480, expectedSourceVideoFrameRate: 24, videoMaxKeyframeInterval: 72, profile level: AVVideoProfileLevelH264BaselineAutoLevel, video bitrate: 128Kbps
//low2:具体参数 videoSize: 272x480, expectedSourceVideoFrameRate: 24, videoMaxKeyframeInterval: 72, profile level: AVVideoProfileLevelH264BaselineAutoLevel, video bitrate: 256Kbps。
//low3:具体参数 videoSize: 272x480, expectedSourceVideoFrameRate: 24, videoMaxKeyframeInterval: 72, profile level: AVVideoProfileLevelH264HighAutoLevel, video bitrate: 512Kbps
//medium1:具体参数 videoSize: 368x640, expectedSourceVideoFrameRate: 24, videoMaxKeyframeInterval: 72, profile level: AVVideoProfileLevelH264HighAutoLevel, video bitrate: 512Kbps
//medium2:具体参数 videoSize: 368x640, expectedSourceVideoFrameRate: 24, videoMaxKeyframeInterval: 72, profile level: AVVideoProfileLevelH264BaselineAutoLevel, video bitrate: 768Kbps
//medium3:具体参数 videoSize: 368x640, expectedSourceVideoFrameRate: 24, videoMaxKeyframeInterval: 72, profile level: AVVideoProfileLevelH264BaselineAutoLevel, video bitrate: 1Mbps
//high1:具体参数 videoSize: 720x1280, expectedSourceVideoFrameRate: 24, videoMaxKeyframeInterval: 72, profile level: AVVideoProfileLevelH264BaselineAutoLevel, video bitrate: 1Mbps
//high2:具体参数 videoSize: 720x1280, expectedSourceVideoFrameRate: 24, videoMaxKeyframeInterval: 72, profile level: AVVideoProfileLevelH264BaselineAutoLevel, video bitrate: 1.25Mbps
//high3:具体参数 videoSize: 720x1280, expectedSourceVideoFrameRate: 24, videoMaxKeyframeInterval: 72, profile level: AVVideoProfileLevelH264BaselineAutoLevel, video bitrate: 1.5Mbps
}
audioQuality:
face:
{
beautify:false //(可选项)布尔类型;是否开启美颜模式;默认:false
setBeautify:0 //(可选项)数字类型;设置美颜程度,范围是从0 ~ 1,0为不美颜(如果美颜不开启,该参数无效);默认:0
setWhiten:0 //(可选项)数字类型;设置美白程度,范围是从0 ~ 1,0为不美白(如果美颜不开启,该参数无效);默认:0
setRedden: 0 //(可选项)数字类型;设置红润程度,范围是从0 ~ 1,0为不红润(如果美颜不开启,该参数无效);默认:0
}
continuousFocus:
encodeOritation:
fixedOn:
fixed:
ret:
{
status: true //布尔类型;预览界面是否打开成功
}
PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setStream({
modelFileDirPath:"widget://res/ModelResource.bundle",
licenseFilePath:"widget://res/LicenseBag.bundle/qiniu_20200214_20210213_com.qbox.PLMediaStreamingKit.ByteDance.Demo_qiniu_v3.4.2.licbag",
rect:{
x: 0,
y: 0,
w: 375,
h: 425
},
videoCapture:{
videoFrameRate: 30,
sessionPreset: '640*480',
previewMirrorFrontFacing: true ,
previewMirrorRearFacing: false,
streamMirrorFrontFacing: false,
streamMirrorRearFacing: false,
videoOrientation: 'portrait',
cameraPosition: 'front'
},
videoStream:{
videoSize:{
width:320,
height:480
},
videoQuality: 'medium1'
},
face: {
beautify: false,
setBeautify:0,
setWhiten:0,
setRedden:0
},
audioQuality: 'medium',
continuousFocus: false,
fixed: true
},function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统
可提供的 1.0.0 及更高版本
开始推流,当播放异常时亦可通过此接口发起重链请求,刷新视频播放器,(注:android只有在收到streamStatus状态为17(准备就绪)后才允许调用此方法) startStream({params},callback(ret))
pushStreamURL:
ret:
{
status:true //布尔类型;是否推流成功
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.startStream({
pushStreamURL:''
},function(ret){
api.api.alert({msg: JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
当前设备是否支持设置录音音量 注意:该方法仅支持ios
inputgainEnable(callback(ret))
ret:
{
enalbe: true //布尔类型;是否支持设置麦克风音量
}
PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.inputgainEnable(function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统
可提供的 1.0.0 及更高版本
获取麦克风音量大小,取值范围:0-1 注意:该方法仅支持ios
getInputgain(callback(ret))
ret:
{
inputgain: 0.7 //数字类型;麦克风音量
}
PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.getInputgain(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS 系统
可提供的 1.0.0 及更高版本
设置麦克风音量大小,取值范围:0-1 注意:该方法仅支持ios
setInputgain({params}})
inputgain:
PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setInputgain({
inputgain:0.8
});
iOS 系统
可提供的 1.0.0 及更高版本
切换前后摄像头
toggleCamera()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.toggleCamera();
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
结束推流
stopStream()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.stopStream();
iOS系统,Android系统
可提供的 1.0.0 及更高版本
销毁推流,释放资源
destroyStream()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.destroyStream();
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
打开闪光灯
turnLightOn()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.turnLightOn();
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
关闭闪光灯
turnLightOff()
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.turnLightOff();
iOS 系统,Android 系统
可提供的 1.0.0及更高版本
设置是否静音
setMuteMicrophone({params})
microphone:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setMuteMicrophone({
microphone:false
});
iOS 系统
可提供的 1.0.0 及更高版本
添加监听
addEventListener({params},callback(ret))
name:
ret:
{
domain: //字符串类型;错误信息,name为streamError时有值
code: //数字类型;错误码,name为streamError时有值
state: 'started' // 字符串类型;流状态变更事件,仅当name为streamState返回该值,取值范围如下:
// 0 代表: 未知状态,只会作为 init 的初始状态
// 1 代表:连接中状态
// 2 代表:已连接状态
// 3 代表:断开连接中状态
// 4 代表:已断开连接状态
// 5 代表:正在等待自动重连状态
// 6 代表:错误状态
cameraStatus: //数字类型;
// 0 代表:还没有确定是否授权
// 1 代表:设备受限,一般在家长模式下设备会受限
// 2 代表:拒绝授权
// 3 代表:已授权
microphoneStatus //数字类型;
// 0 代表:还没有确定是否授权
// 1 代表:设备受限,一般在家长模式下设备会受限
// 2 代表:拒绝授权
// 3 代表:已授权
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.addEventListener({
name:'streamError'
},function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的1.0.0及更高版本
获取滤镜和贴纸
getStickers({params}, callback(ret))
type:
ret:
{
stickers: { //数组类型;
displayName:, //字符串类型;显示名称
path:'', //字符串类型;路径,拼接/icon.png即可获取该图片
tip:'', //字符串类型;触发类效果提示文案
intensity: //数字类型;强度
}
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.getStickers({
type:'filter'
},function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
设置贴纸
setSticker()
displayName:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setSticker({
displayName: '招财猫'
});
iOS 系统
可提供的 1.0.0 及更高版本
设置滤镜
setFillter()
displayName:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setFillterr({
displayName: '红唇'
});
iOS 系统
可提供的 1.0.0 及更高版本
获取美颜、美型、美体、口红、腮红、修容、美瞳、染发、眼影、眉毛
getMakeUp({params}, callback(ret))
type:
ret:
{
makeUps: { //数组类型;
displayName:, //字符串类型;显示名称
path:'', //字符串类型;路径,拼接/displayName/icon.png即可获取该图片
internalKey:'', //字符串类型;算法内部识别类型的key
intensity: //数字类型;强度
}
}
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.getMakeUp({
type:'beauty'
},function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统
可提供的 1.0.0 及更高版本
更新美颜美妆及其强度
updateMakeupIntensity()
type:
displayName:
intensity:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.updateMakeupIntensity({
type:'blush',
intensity:0.5,
displayName: '蜜桃'
});
iOS 系统
可提供的 1.0.0 及更高版本
设置多个效果
updateMakeups()
type:
displayNames:
var PLMediaStreaming = api.require('PLMediaStreaming');
PLMediaStreaming.setFillterr({
type:'blush',
displayName: ['蜜桃','微醺','甜橙']
});
iOS 系统
可提供的 1.0.0 及更高版本