更新记录

1.0.2(2020-06-28)

添加自定义分辨率

1.0.1(2020-06-15)

发布


平台兼容性

Android Android CPU类型 iOS
armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


使用方法

原生组件只能在 nvue 页面或者 nvue子窗体 中使用

基于网易云信开发的SDK

闪退时请检查是否有摄像头和录音权限。

小部分安卓可能本来就存在几率闪退,正常手机一般不会出现闪退。

所有接口都基于 预览窗口 组件,按照下面引用方式,使用 this.$refs 调用

引用方式

<Fvv-UniYXVideo ref="videoTest" style="width:100px;height:100px"></Fvv-UniYXVideo>

API

//初始化sdk和预览界面
init(options,callback)
initCustom(options,callback)
stopPreview()

//推流录像
startStream(options)
pauseVideoLiveStream()
resumeVideoLiveStream()
stopStream()
screenShot(savePath)

//滤镜相关
setFilterType(filterType)
setFilterStrength(int)
setBeautyLevel(int)

//镜头相关
setCameraFlashPara(bool)
setCameraFocus()
setCameraAutoFocus(bool)
switchCamera()
changeCaptureFormat(options)
changeCaptureCustom(options)
setPreviewMirror(bool)
setVideoMirror(bool)

//缩放相关
getCameraZoomValue()
getCameraMaxZoomValue()
setCameraZoomPara(int)

//曝光相关
getExposureCompensation()
getMinExposureCompensation()
getMaxExposureCompensation()
setExposureCompensation(int)

//伴音相关
startPlayMusic(options)
stopPlayMusic()
pausePlayMusic()
resumePlayMusic()

//水印相关
watermark(options)
removeWatermark()
watermarkGif()
removeWaterMarkGif()
setWaterPreview()
setDynamicWaterPreview()

//其他
checkPublishPermission()


初始化sdk和预览界面
init(options,callback)

参数说明

参数 类型 必填 说明
options object 初始化参数
callback function 消息回调

options

参数 类型 必填 说明
frontCamera bool 是否前置摄像头,默认false
isScale_16x9 bool 界面是否16:9,默认false
useFilter bool 是否使用滤镜,默认true
zoom bool 是否支持手势缩放,默认true
videoQuality string 清晰度,默认HIGH,可选MEDIUM,SUPER_HIGH,SUPER,HD1080P
uploadLog bool 设置是否上传日志

callback(object)

参数 类型 说明
object.code int 回调码,参考 云信回调状态码,这里添加了小部分状态码
object.data object/string 回调内容

示例

this.$refs.videoTest.init({
    zoom:true,
    isScale_16x9:false,
},(callback) => {
    this.ret += (JSON.stringify(callback) + "\r\n") 
})

初始化sdk和自定义预览界面
initCustom(options,callback)

参数说明

参数 类型 必填 说明
options object 初始化参数
callback function 消息回调

options

参数 类型 必填 说明
frontCamera bool 是否前置摄像头,默认false
useFilter bool 是否使用滤镜,默认true
zoom bool 是否支持手势缩放,默认true
width int 宽度分辨率,默认1024
height int 高度分辨率,默认768
fps int 帧率,默认24
bitrate int 码率,默认 width × height × fps × 9 /100
uploadLog bool 设置是否上传日志

callback(object)

参数 类型 说明
object.code int 回调码,参考 云信回调状态码,这里添加了小部分状态码
object.data object/string 回调内容

示例

this.$refs.videoTest.initCustom({
    zoom:true,
    width:500,
    height:500,
},(callback) => {
    this.ret += (JSON.stringify(callback) + "\r\n") 
})

停止预览
stopPreview()

示例

this.$refs.videoTest.stopPreview()

开始推流
startStream(options)

参数说明

options

参数 类型 必填 说明
url string 推流地址,只录像时可随便写
save string 录像地址,录像时用
streamType string 推流类型,默认AV音视频,可选AUDIO只推音频,VIDEO只推视频
formatType string 推流格式,默认RTMP_AND_MP4推流并录像,RTMP只推流,MP4只录像

示例

this.$refs.videoTest.startStream({
    url:"rtmp://you rtmp url",
    save:"/sdcard/2.mp4",
    //streamType:"AV",
    //formatType:"RTMP_AND_MP4"
})

暂停推流
pauseVideoLiveStream()

示例

this.$refs.videoTest.pauseVideoLiveStream()

恢复推流
resumeVideoLiveStream()

示例

this.$refs.videoTest.resumeVideoLiveStream()

停止推流
stopStream()

示例

this.$refs.videoTest.stopStream()

截图
screenShot(path)

回调到初始化的函数(object)

参数 类型 说明
code int 37
data string 保存的图片路径

示例

this.$refs.videoTest.screenShot("/sdcard/1.jpg")

设置滤镜
setFilterType(filterType)

参数说明

参数 类型 必填 说明
filterType string 默认none,可选 NATURE,FAIRYTALE,TENDER,WHITEN,CALM,CLEAN,PIXAR,BROOKLYN,HEALTHY

示例

this.$refs.videoTest.setFilterType("FAIRYTALE")

滤镜强度
setFilterStrength(int)

参数说明

参数 类型 必填 说明
int int 设置滤镜强度 0 - 100

示例

this.$refs.videoTest.setFilterStrength(100)

磨皮强度
setBeautyLevel(int)

参数说明

参数 类型 必填 说明
int int 设置磨皮强度 0 - 100

示例

this.$refs.videoTest.setBeautyLevel(100)

闪光灯
setCameraFlashPara(bool)

参数说明

参数 类型 必填 说明
bool bool 设置闪光灯开关

示例

this.$refs.videoTest.setCameraFlashPara(true)

手动对焦一次
setCameraFocus()

示例

this.$refs.videoTest.setCameraFocus()

自动对焦开关
setCameraAutoFocus(bool)

参数说明

参数 类型 必填 说明
bool bool 设置自动对焦开关,默认已开

示例

this.$refs.videoTest.setCameraAutoFocus(false)

切换摄像头
switchCamera()

示例

this.$refs.videoTest.switchCamera()

切换分辨率
changeCaptureFormat(options)

参数说明

参数 类型 必填 说明
options object 分辨率参数

options

参数 类型 必填 说明
isScale_16x9 bool 界面是否16:9,默认false
videoQuality string 清晰度,默认HIGH,可选MEDIUM,SUPER_HIGH,SUPER,HD1080P

示例

this.$refs.videoTest.changeCaptureFormat({
   isScale_16x9:true,
   videoQuality:"MEDIUM"
})

切换自定义分辨率
changeCaptureCustom(options)

参数说明

参数 类型 必填 说明
options object 分辨率参数

options

参数 类型 必填 说明
width int 宽度分辨率,默认1024
height int 高度分辨率,默认768
fps int 帧率,默认24
bitrate int 码率,默认 width × height × fps × 9 /100

示例

this.$refs.videoTest.changeCaptureCustom({
   width:800,
   height:800
})

本地预览镜像
setPreviewMirror(bool)

参数说明

参数 类型 必填 说明
bool bool 设置本地预览镜像开关

示例

this.$refs.videoTest.setPreviewMirror(true)

推流镜像
setVideoMirror(bool)

参数说明

参数 类型 必填 说明
bool bool 设置推理镜像开关

示例

this.$refs.videoTest.setVideoMirror(true)

获取当前缩放比例
getCameraZoomValue()

回调到初始化的函数(object)

参数 类型 说明
code int 300
data int 当前缩放比例

示例

this.$refs.videoTest.getCameraZoomValue()

获取支持最大缩放比例
getCameraMaxZoomValue()

回调到初始化的函数(object)

参数 类型 说明
code int 301
data int 支持最大缩放比例

示例

this.$refs.videoTest.getCameraMaxZoomValue()

设置摄像头缩放
setCameraZoomPara(int)

参数说明

参数 类型 必填 说明
int int 设置镜头缩放,不要超出支持的比例

示例

this.$refs.videoTest.setCameraZoomPara(0)

获取当前镜头曝光比例
getExposureCompensation()

回调到初始化的函数(object)

参数 类型 说明
code int 302
data int 当前镜头曝光比例

示例

this.$refs.videoTest.getExposureCompensation()

获取支持最小曝光比例
getMinExposureCompensation()

回调到初始化的函数(object)

参数 类型 说明
code int 303
data int 支持最小曝光比例

示例

this.$refs.videoTest.getMinExposureCompensation()

获取支持最大曝光比例
getMaxExposureCompensation()

回调到初始化的函数(object)

参数 类型 说明
code int 304
data int 支持最大曝光比例

示例

this.$refs.videoTest.getMaxExposureCompensation()

设置镜头曝光
setExposureCompensation(int)

参数说明

参数 类型 必填 说明
int int 设置镜头曝光,不要超出支持的比例

示例

this.$refs.videoTest.setExposureCompensation(0)

播放伴音
startPlayMusic(options)

参数说明

options

参数 类型 必填 说明
path bool 伴音文件路径,默认false
loop bool 是否循环播放,默认false

示例

this.$refs.videoTest.startPlayMusic({
    path:"/sdcard/fvv.mp3",
    loop:true
})

结束伴音
stopPlayMusic()

示例

this.$refs.videoTest.stopPlayMusic()

暂停伴音
pausePlayMusic()

示例

this.$refs.videoTest.pausePlayMusic()

恢复伴音
resumePlayMusic()

示例

this.$refs.videoTest.resumePlayMusic()

添加水印
watermark(options)

参数说明

options

参数 类型 必填 说明
path string 图片路径
w int 水印图片宽度,默认0,0为自适应
h int 水印图片高度,默认0,0为自适应
x int 水印图片距离左边距离
y int 水印图片距离上边距离

示例

this.$refs.videoTest.watermark({
    path:"/sdcard/1.png",
    w:100,
    x:100,
    y:100,
})

移除水印
removeWatermark()

示例

this.$refs.videoTest.removeWatermark()

添加GIF水印
watermarkGif(options)

参数说明

options

参数 类型 必填 说明
path string 图片路径
w int 水印图片宽度,默认0,0为自适应
h int 水印图片高度,默认0,0为自适应
x int 水印图片距离左边距离
y int 水印图片距离上边距离
fps int 一秒多少帧,默认0,0为一秒播完GIF图

示例

this.$refs.videoTest.watermarkGif({
    path:"/sdcard/1.gif",
    w:100,
    x:100,
    y:100,
})

移除GIF水印
removeWaterMarkGif()

示例

this.$refs.videoTest.removeWaterMarkGif()

本地是否显示水印
setWaterPreview(bool)

参数说明

参数 类型 必填 说明
bool bool 本地预览界面是否显示水印,默认true

示例

this.$refs.videoTest.setWaterPreview(false)

本地是否显示GIF水印
setDynamicWaterPreview(bool)

参数说明

参数 类型 必填 说明
bool bool 本地预览界面是否显示GIF水印,默认true

示例

this.$refs.videoTest.setDynamicWaterPreview(false)

检查权限
checkPublishPermission()

回调到初始化的函数(object)

参数 类型 说明
code int 202
data bool true,false

示例

this.$refs.videoTest.checkPublishPermission()

隐私、权限声明

1. 本插件需要申请的系统权限列表:

允许挂载和反挂载文件系统,允许程序向外部存储设备写数据,允许程序打开网络套接字,允许程序获取网络相关信息,允许程序向外部存储设备写数据,允许程序写音频数据,允许程序使用PowerManager WakeLocks以防止处理器休眠或者屏幕锁屏,允许程序获取Wifi网络状态信息,允许程序使用设备的camera ,允许程序使用闪光灯,允许程序获得设备信息,声明程序使用camera和自动对焦功能,详细可参考 https://dev.yunxin.163.com/docs/product/直播/推流端SDK/Android推流SDK/开发指南?pos=toc-1-1-2

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

本插件自身不会采集任何数据,但插件使用的网易云信SDK会采集SDk日志数据,详情可参考:https://dev.yunxin.163.com/docs/product/直播/推流端SDK/Android推流SDK/开发指南?#总体参数介绍

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

请参考开源项目地址的开源协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问