android获取摄像头视频分辨率,相机自定义拍照录像,可设置分辨率、焦距、无声录像、支持横竖屏...
更新记录
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获取摄像头视频分辨率,相机自定义拍照录像,可设置分辨率、焦距、无声录像、支持横竖屏...相关推荐
- android获取摄像头视频帧数据
1.思路 一.通过android的Camera.setPreviewCallback(PreviewCallback cb)监听回调. 二.此回调函数public void onPreviewFram ...
- uni-app 自定义相机拍照录像,可设置分辨率、支持横竖屏(ios、android)
插件市场:uni-app 自定义相机拍照录像,可设置分辨率.支持横竖屏(ios.android)
- Qt实现摄像头视频h264编码和拍照功能
Buildroot+Qt实现摄像头视频h264编码和拍照功能 https://gitee.com/zy853728579/video_test_app.git 实现h264硬编码+拍照功能,以下为关健 ...
- android播放器竖屏,SurfaceView + MediaPlayer 实现的视频播放器,支持横竖屏切换,
MNVideoPlayer SurfaceView + MediaPlayer 实现的视频播放器,支持横竖屏切换,手势快进快退.调节音量,亮度等.之前也发布过一个视频播放列表, 项目截图: 使用步骤: ...
- android获取摄像头焦距,并调焦
不废话,上代码 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayo ...
- Android学习之调用系统相机实现拍照功能
一.今天,来介绍如何调用系统自带的相机进行拍照,主要有以下2种实现的方式: 1.Camera应用程序包含了一个意图过滤器,即intent filter,它使得开发人员能够提供与Camera应用程序同等 ...
- android videoview播放进度,android – 获取视频播放视频的进度时间?
您可以通过mVideoView.getDuration()获取视频的持续时间,最初将Progress栏设置为0,然后通过mVideoView.getCurrentPosition()获取视频的curr ...
- android获取网络视频缩略图,Android 获取视频(本地和网络)缩略图的解决方案
在Android 开发视频的时候,通常都需要显示视频列表,而视频列表通常都有一张视频缩略图,那么它是怎么获取的呢, 关于网络视频的缩略图的实现方案主要有两种: 1.后台返回视频时顺便连缩略图的路径都返 ...
- android获取网络视频缩略图,Android 获取缩略图,网络视频,或者本地视频
IM软件发送视频文件,需要显示缩略图: import android.graphics.Bitmap; import android.media.MediaMetadataRetriever; imp ...
- Android获取网络视频文件缩略图
一,通过Android系统自带的类获取: 1. public staticBitmapcreateVideoThumbnail(String filePath,int kind){ Bitm ...
最新文章
- VUE的本地应用-V- on
- linux 等待子线程退出,等待一组子线程退出的问题__线程_pthread_join_终止_pthread_detach_释放__169IT.COM...
- linux dd命令制作软盘,制作Linux启动软盘的四种方法
- Win32EXE.tpl 代码详解
- android 视频开发sd卡,Android开发之SD卡文件操作分析
- python学习之数据类型(int,bool,str)
- In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column...
- Oracle结构组成
- 吴恩达机器学习作业二——逻辑回归
- 特征提取与检测(三) --- ORB算法
- leetcode探索动态规划(二)
- java数组函数_Java数组
- springBoot+Vue导出Excel
- html5 加入收藏夹,设为首页、添加到收藏夹代码
- 编写简单的触摸屏驱动程序——基于QEMU
- 华为机试真题 Java 实现【数字涂色】
- wsl无网络连接(转载)
- 卢卡斯定理(详细证明)
- 加勒比海盗船(最优装载问题)
- viper4android io错误,viper操作文档