更新记录

2.1.0(2021-05-21)

本次主要更新:

1.录像,增加 是否 添加音频

2.0.0(2021-03-29)

本次主要更新:

1.录像增加 状态 回调 status: start和end

查看更多

平台兼容性

Android

iOS

适用版本区间:4.4 - 11.0

适用版本区间:9 - 14

原生插件通用使用流程:

购买插件,选择该插件绑定的项目。

在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。

根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。

打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。

开发完毕后正式云打包

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

KJ-Camera

自定义相机拍照录像,可设置分辨率、支持横竖屏、切换前后摄像头、闪光灯、手电筒(ios、android)

引入插件

相关代码

拍照

开始录像

停止录像

前后摄像头切换

设置焦距

设置闪光灯模式

设置手电筒

ios获取支持的分辨率

ios设置分辨率

android获取照片支持分辨率列表

android获取预览支持分辨率列表

android设置相机参数

初始化相机

var videoFilePath;

export default {

data() {

return {

cameraWidth: "100%",

cameraHeight: "auto",

src: ""

}

},

onReady() {

console.log("onReady")

//this.android_setCameraParams();

},

() {

console.log("")

//this.android_setCameraParams();

var _this = this;

uni.getSystemInfo({

success: function(res) {

_this.cameraHeight = res.windowHeight

setTimeout(function() { //横竖屏的时候,更改布局

try {

_this.$refs.Camera.initCamera();

} catch (e) {

//TODO handle the exception

}

}, 10);

}

});

},

methods: {

/**

* 初始化相机 默认加载插件的时候已初始化

* 在横竖屏切换的时候,需要重新初始化,要不然画面是颠倒的

* */

initCamera() {

this.$refs.Camera.initCamera();

},

/**

* 拍照

* */

captureImage() {

var _this = this;

var dic = {

"savePath": plus.io.convertLocalFileSystemURL("_doc/KJ-Camera") //保存图片位置,一定要是_doc绝对路径

}

this.$refs.Camera.captureImage(dic, (res) => {

console.log("filePath: " + res)

//_this.src = "file://" + res.filePath;

uni.saveImageToPhotosAlbum({

filePath: plus.io.convertAbsoluteFileSystem(res.filePath),

success: function() {

console.log('save success');

},

fail: function(e) {

console.log(JSON.stringify(e));

}

});

}, (res) => {

_this.src = "data:image/png;base64," + res.base64;

console.log("base64: " + res)

});

},

/**

* 开始录像

* */

startVideoCapture() {

var _this = this;

var dic = {

"savePath": plus.io.convertLocalFileSystemURL("_doc/KJ-Camera"), //保存视频位置,一定要是_doc绝对路径

"isAddAudio": true //是否添加音频,默认是true

}

this.$refs.Camera.startVideoCapture(dic, (res) => {

console.log("startVideoCapture: " + JSON.stringify(res))

if(res.status == "start") {

console.log("开始录像")

}else if(res.status == "end") {

console.log("结束录像")

videoFilePath = res.filePath;

uni.saveVideoToPhotosAlbum({

filePath: plus.io.convertAbsoluteFileSystem(videoFilePath),

success: function() {

console.log('save success');

}

});

}

});

},

/**

* 停止录像

* */

stopVideoCapture() {

this.$refs.Camera.stopVideoCapture();

},

/**

* 前后摄像头切换

* */

switchCamera() {

this.$refs.Camera.switchCamera();

this.android_setCameraParams(); //因为andorid前后摄像头,设置相机参数不一样,需要重置

},

/**

* 设置焦距

* */

setZoomFactor() {

this.$refs.Camera.getMaxZoomFactor((res_max) => {

console.log("可设置的最大焦距:" + res_max.value);

this.$refs.Camera.getMinZoomFactor((res_min) => {

console.log("可设置的最小焦距:" + res_min.value);

this.$refs.Camera.setZoomFactor(res_max.value);

});

});

},

/**

* 设置闪光灯模式 默认是auto

* auto-自动

* on-开

* off-关

* */

setFlash() {

this.$refs.Camera.setFlash("off");

},

/**

* 设置手电筒 默认是auto

* auto-自动

* on-开

* off-关

* */

setTorch() {

this.$refs.Camera.setTorch("on");

},

/**

* ios获取支持的分辨率

* */

ios_getSessionPresets() {

this.$refs.Camera.ios_getSessionPresets((res) => {

console.log("ios_getSessionPresets:" + JSON.stringify(res));

});

},

/**

* ios设置分辨率 默认是high

* photo-适用于高分辨率照片质量输出

* high-适用于高质量视频和音频输出

* medium-适用于中等质量输出

* low-适用于低质量输出

* 其它。。。

* */

ios_setSessionPreset() {

this.$refs.Camera.ios_setSessionPreset("low"); //从ios_getSessionPresets方法获取

},

/**

* android获取照片支持分辨率列表

* 只用于设置照片分辨率 或 视频分辨率

* */

android_getSupportedPictureSizes() {

this.$refs.Camera.android_getSupportedPictureSizes((res) => {

console.log("android_getSupportedPictureSizes:" + JSON.stringify(res));

});

},

/**

* android获取预览支持分辨率列表

* 只用于设置预览分辨率

* */

android_getSupportedPreviewSizes() {

this.$refs.Camera.android_getSupportedPreviewSizes((res) => {

console.log("android_getSupportedPreviewSizes:" + JSON.stringify(res));

});

},

/**

* android设置相机参数

* 照片和预览分辨率等于0,默认使用从支持分辨率列表中选取合适的分辨率

* 其它等于0的话,不设置这个参数

* */

android_setCameraParams() {

const res = uni.getSystemInfoSync();

var screenBiLi = res.screenWidth / res.screenHeight

screenBiLi = Math.floor(screenBiLi * 10) / 10;

console.log("screenBiLi:"+screenBiLi)

//设置最大分辨率

this.$refs.Camera.android_getSupportedPictureSizes((PictureSizes) => {

this.$refs.Camera.android_getSupportedPreviewSizes((PreviewSizes) => {

var maxPictureSizesIndex = 0;

var maxPictureSizeWidthHeight = 0;

for (var i = 0; i < PictureSizes.length; i++) {

var item = PictureSizes[i];

var PictureSizeBiLi = item.height / item.width;

PictureSizeBiLi = Math.floor(PictureSizeBiLi * 10) / 10;

console.log("PictureSizeBiLi:"+PictureSizeBiLi)

if(PictureSizeBiLi == screenBiLi) {

if (maxPictureSizeWidthHeight < item.width * item.height) {

maxPictureSizeWidthHeight = item.width * item.height;

maxPictureSizesIndex = i;

}

}

}

var maxPreviewSizesIndex = 0;

var maxPreviewSizeWidthHeight = 0;

for (var i = 0; i < PreviewSizes.length; i++) {

var item = PreviewSizes[i];

var PreviewBiLi = item.height / item.width;

PreviewBiLi = Math.floor(PreviewBiLi * 10) / 10;

console.log("PreviewBiLi:"+PreviewBiLi)

if(PreviewBiLi == screenBiLi) {

if (maxPreviewSizeWidthHeight < item.width * item.height) {

maxPreviewSizeWidthHeight = item.width * item.height;

maxPreviewSizesIndex = i;

}

}

}

var dic = {

picSizeWidth: PictureSizes[maxPictureSizesIndex].width, //照片分辨率宽 从android_getSupportedPictureSizes方法获取

picSizeHeight: PictureSizes[maxPictureSizesIndex].height, //照片分辨率高 从android_getSupportedPictureSizes方法获取

jpegQuality: 100, //照片质量

preSizeWidth: PreviewSizes[maxPreviewSizesIndex].width, //预览分辨率宽 从android_getSupportedPreviewSizes方法获取

preSizeHeight: PreviewSizes[maxPreviewSizesIndex].height, //预览分辨率高 从android_getSupportedPreviewSizes方法获取

videoSizeWidth: PictureSizes[maxPictureSizesIndex].width, //视频分辨率宽 从android_getSupportedPictureSizes方法获取

videoSizeHeight: PictureSizes[maxPictureSizesIndex].height, //视频分辨率高 从android_getSupportedPictureSizes方法获取

videoEncodingBitRate: 5 * PictureSizes[maxPictureSizesIndex].width * PictureSizes[maxPictureSizesIndex].height, //视频编码比特率,如果设置了视频分辨率,这个一定要设置,否则视频不清晰

}

this.$refs.Camera.android_setCameraParams(dic);

console.log(JSON.stringify(dic));

});

});

}

}

}

.KJ-Camera {

width: 100%;

position: fixed;

top: 0px;

bottom: 0px;

left: 0;

right: 0;

}

.bg {

position: fixed;

top: 0;

bottom: 0;

left: 0px;

right: 0px;

}

.bg:after {

position: absolute;

height: 100px;

width: 100px;

left: -50px;

top: -50px;

content: '';

background-color: red;

// border-radius: 50%;

// background-color: blue;

// border-width: 20px;

// border-style: solid;

// border-color: #0079AB;

}

.btn {

height: 35px;

width: 260px;

}

.btn-view {

position: fixed;

bottom: 0;

left: 0;

right: 0;

}

android获取摄像头视频分辨率,相机自定义拍照录像,可设置分辨率、焦距、无声录像、支持横竖屏...相关推荐

  1. android获取摄像头视频帧数据

    1.思路 一.通过android的Camera.setPreviewCallback(PreviewCallback cb)监听回调. 二.此回调函数public void onPreviewFram ...

  2. uni-app 自定义相机拍照录像,可设置分辨率、支持横竖屏(ios、android)

    插件市场:uni-app 自定义相机拍照录像,可设置分辨率.支持横竖屏(ios.android)

  3. Qt实现摄像头视频h264编码和拍照功能

    Buildroot+Qt实现摄像头视频h264编码和拍照功能 https://gitee.com/zy853728579/video_test_app.git 实现h264硬编码+拍照功能,以下为关健 ...

  4. android播放器竖屏,SurfaceView + MediaPlayer 实现的视频播放器,支持横竖屏切换,

    MNVideoPlayer SurfaceView + MediaPlayer 实现的视频播放器,支持横竖屏切换,手势快进快退.调节音量,亮度等.之前也发布过一个视频播放列表, 项目截图: 使用步骤: ...

  5. android获取摄像头焦距,并调焦

    不废话,上代码 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayo ...

  6. Android学习之调用系统相机实现拍照功能

    一.今天,来介绍如何调用系统自带的相机进行拍照,主要有以下2种实现的方式: 1.Camera应用程序包含了一个意图过滤器,即intent filter,它使得开发人员能够提供与Camera应用程序同等 ...

  7. android videoview播放进度,android – 获取视频播放视频的进度时间?

    您可以通过mVideoView.getDuration()获取视频的持续时间,最初将Progress栏设置为0,然后通过mVideoView.getCurrentPosition()获取视频的curr ...

  8. android获取网络视频缩略图,Android 获取视频(本地和网络)缩略图的解决方案

    在Android 开发视频的时候,通常都需要显示视频列表,而视频列表通常都有一张视频缩略图,那么它是怎么获取的呢, 关于网络视频的缩略图的实现方案主要有两种: 1.后台返回视频时顺便连缩略图的路径都返 ...

  9. android获取网络视频缩略图,Android 获取缩略图,网络视频,或者本地视频

    IM软件发送视频文件,需要显示缩略图: import android.graphics.Bitmap; import android.media.MediaMetadataRetriever; imp ...

  10. Android获取网络视频文件缩略图

    一,通过Android系统自带的类获取: 1.  public staticBitmapcreateVideoThumbnail(String filePath,int kind){     Bitm ...

最新文章

  1. VUE的本地应用-V- on
  2. linux 等待子线程退出,等待一组子线程退出的问题__线程_pthread_join_终止_pthread_detach_释放__169IT.COM...
  3. linux dd命令制作软盘,制作Linux启动软盘的四种方法
  4. Win32EXE.tpl 代码详解
  5. android 视频开发sd卡,Android开发之SD卡文件操作分析
  6. python学习之数据类型(int,bool,str)
  7. In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column...
  8. Oracle结构组成
  9. 吴恩达机器学习作业二——逻辑回归
  10. 特征提取与检测(三) --- ORB算法
  11. leetcode探索动态规划(二)
  12. java数组函数_Java数组
  13. springBoot+Vue导出Excel
  14. html5 加入收藏夹,设为首页、添加到收藏夹代码
  15. 编写简单的触摸屏驱动程序——基于QEMU
  16. 华为机试真题 Java 实现【数字涂色】
  17. wsl无网络连接(转载)
  18. 卢卡斯定理(详细证明)
  19. 加勒比海盗船(最优装载问题)
  20. viper4android io错误,viper操作文档

热门文章

  1. 干货 | 携程平台化常态化数据治理之路
  2. Win10蓝牙开关不显示,任务栏不显示蓝牙图标解决方案
  3. 竞争情报的网络信息源
  4. 微信代扣踩坑日记(微信自动续费)
  5. RGB与CMYK色彩模式
  6. Google AdSense注册流程
  7. java一元二次方程用if_用javascript写一个求一元二次方程的页面 用JAVA写一个求解一元二次方程的类...
  8. vnc远程控制软件配置,vnc远程控制软件怎么配置,教程详解
  9. 国外计算机论文翻译,计算机论文外文翻译
  10. 外包!音频类小程序开发