lhyh
lhyh
  • 发布:2018-11-10 21:08
  • 更新:2019-04-20 00:02
  • 阅读:5783

【分享】视频录制限制拍摄时长

分类:HBuilderX

安卓代码摘自论坛 http://ask.dcloud.net.cn/question/45756
IOS 代码核心就是一个 videoMaximumDuration 参数
注意事项为 IOS 必须使用HbuilderX 真机调试、打包
使用到的5+ API http://www.html5plus.org/doc/zh_cn/camera.html#plus.camera.CameraOptions

附件为测试代码

    function captureVideo(callback){  
        var TIMEOUT = 5;  //录像时间 5 秒  
        if(mui.os.android) {  
            // 调用原生android摄像头  
            var VIDEOZOOM = 200;  
            var MediaStore = plus.android.importClass("android.provider.MediaStore");  
            var Intent = plus.android.importClass("android.content.Intent");  
            // 导入后可以使用new方法创建类的示例对象  
            var intent = new Intent("android.media.action.VIDEO_CAPTURE");  
            intent.putExtra("android.intent.extra.videoQuality", 0); //0 means low quality, 1 means high quality  
            // intent.putExtra("android.provider.MediaStore.EXTRA_OUTPUT", url);  
            intent.putExtra("android.intent.extra.durationLimit", TIMEOUT); //设置录像时间,5秒钟  

            var main = plus.android.runtimeMainActivity();  
            main.startActivityForResult(intent, VIDEOZOOM);  
            // 获取返回参数  
            main.onActivityResult = function(requestCode, resultCode, data) {  
                var context = main;  
                plus.android.importClass(data);  
                var uri = data.getData();  
                var resolver = context.getContentResolver();  
                plus.android.importClass(resolver);  
                var cursor = resolver.query(uri, null, null, null, null);  
                plus.android.importClass(cursor);  
                cursor.moveToFirst();  
                var column = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);  
                // 获取录制的视频路径  
                var path = cursor.getString(column);  
                if(path) {  
                    callback && callback(path);  
                } else {  
                    mui.toast("录制小视频失败");  
                }  
            }  
        } else {  
            /**  
             * HBuilderX已更新:iOS平台 新增 支持摄像头录像(plus.camera.startVideoCapture)设置视频长度(videoMaximumDuration)  
             * http://ask.dcloud.net.cn/question/59024  
             */  

            var cmr = plus.camera.getCamera();  
            var res = cmr.supportedVideoResolutions[0];  
            var fmt = cmr.supportedVideoFormats[0];  
            cmr.startVideoCapture(function(path) {  
                callback && callback(path);  
            }, function(error) {  
                mui.toast("取消录制小视频");  
            }, {  
                resolution: res,  
                format: fmt,  
                filename: "_downloads/ibos/video/",  
                videoMaximumDuration:TIMEOUT      //该参数仅支持HBuilderX 打包  
            });  

        }  
    }
4 关注 分享
s***@163.com A***@qq.com 4***@qq.com 馨u

要回复文章请先登录注册

1***@qq.com

1***@qq.com

能直接返回file然后上传吗
2019-04-20 00:02
A***@qq.com

A***@qq.com

回复 A***@qq.com :
找到原因,本地打包后,拍摄代码调用时,拉不起权限提示框,没办法给权限,因此代码调用异常。
2019-02-27 13:22
A***@qq.com

A***@qq.com

Android部分,在本地打包后,无法调用起来,云打包会在前几次调用时无法拉起(等几秒或几十秒后再试可以拉起拍摄),求解,打包SDK是(Android-SDK@1.9.9.58073_20190121)
2019-02-27 13:05
lachar

lachar

intent.putExtra("android.intent.extra.videoQuality", 0); //0 means low quality, 1 means high quality

视频质量0太低,视频看不清,1 视频文件又太大,有没有控制视频大小的方法呢?
2019-01-09 11:57