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

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

分类: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