Vue项目通过HBuilder打包成app,怎么调用本地的摄像机拍摄视频?

新手上路,请多包涵

<input type="file" id="fileVideo" accept="video/*" capture="camcorder">打开的是照相机

阅读 3.9k
2 个回答

推荐使用HTML5+plus语法
官网地址

<template>
    <button @click="">打开录像</button>
</template>
<script >
    methods: {
       getCamera(){
            var cmr = plus.camera.getCamera();
       }
    }
  
</script>
新手上路,请多包涵

通过几位大神的指点成功完成
记录一下
已经解决了,H5+ 里面有api可以实现

首先用HBuilder创建一个新的项目,选择Hello H5+ 里面有调用本地摄像机的实例。可以对照自己的项目复制关键的代码(要注意的是需要把common.js复制到自己的项目里面)

下面是代码很大一部分可以直接复制来用

plusReady(){
let self = this;
// 获取摄像头目录对象
plus.io.resolveLocalFileSystemURL('_doc/', function(entry){
console.log('entryentry',entry)
entry.getDirectory('camera', {create:true}, function(dir){
}, function(e){
outSet('Get directory "camera" failed: '+e.message);
} );
}, function(e){
outSet('Resolve "_doc/" failed: '+e.message);
});
},

videoCapture(){
var cmr = null // 初始化变量
// 创建plus环境
if(window.plus) {
this.plusReady();
} else {
document.addEventListener('plusready', plusReady, false);
}
var cmr = plus.camera.getCamera();
var res = cmr.supportedVideoResolutions[0];
var fmt = cmr.supportedVideoFormats[0];
cmr.startVideoCapture( ( path)=>{
console.log( "Capture video success: " + path);
//创建请求
var task = plus.uploader.createUpload(process.env.VUE_APP_BASEURL + '/upladFile', {
method: "POST",
headers: {
"Content-Type": "multipart/form-data"
}
}, (t, status)=>{
//上传完成
if (status == 200) {
//上传成功
var ojbList = JSON.parse(t.responseText)
console.log("Upload success3: " + ojbList)
console.log("Upload success4: " + ojbList.resultCode)
if(ojbList.resultCode == '0'){
this.$message({
type: "success",
message: '上传成功'
});
})
console.log('.apopInjuredMp4List',this.apopInjuredMp4List)
}
}else{
// 上传失败
alert( "Upload failed: " + ojbList.resultMsg);
}
});
var token = getToken()//获取token
task.setRequestHeader('token',token);//token只能加在请求头里面
task.addFile(path, {key: "upfile"}); // 添加文件
task.addData( "emerId", this.emerId); //可以添加需要上传的json数据
task.addData( "bizType", 'C'); //可以添加需要上传的json数据
task.start();// 开始上传
},
function( error ) {
alert( "Capture video failed: " + error.message );
},
{resolution:res,format:fmt}
);
},

function(e){}这样的方式会导致方法里面this的指向有问题,可以改成()=>{}

视频拍摄完之后拿到视频的地址,然后通过plus.uploader.createUpload 来上传,也可以转成文件用FormData上传

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题