虫雪浓
虫雪浓
  • 发布:2019-01-16 10:53
  • 更新:2024-03-12 11:00
  • 阅读:13339

uni-app 拍摄视频限制最大长度解决方案

分类:uni-app

因为uni-app的平台差异问题,所以无法直接限制视频的长度,类似与微信朋友圈拍摄十秒视频。现在提供一种App端可以实现的解决方案。

安卓解决方案

关联阅读
安卓使用njs来实现视频最大播放时长

      // 安卓关键代码  
const VIDEOZOOM = 200;  
let MediaStore = plus.android.importClass('android.provider.MediaStore');  
let Intent = plus.android.importClass('android.content.Intent');  
// 导入后可以使用new方法创建类的示例对象  
let intent = new Intent('android.media.action.VIDEO_CAPTURE');  
intent.putExtra('android.intent.extra.videoQuality', 1); //0 means low quality, 1 means high quality  
//intent.putExtra("android.provider.MediaStore.EXTRA_OUTPUT", url);  
intent.putExtra('android.intent.extra.durationLimit', 10); //设置录像时间  
let main = plus.android.runtimeMainActivity();  
main.startActivityForResult(intent, VIDEOZOOM);  
//获取返回参数  
main.onActivityResult = function(requestCode, resultCode, data) {  
    let context = main;  
    plus.android.importClass(data);  
    let uri = data.getData();  
    let resolver = context.getContentResolver();  
    plus.android.importClass(resolver);  
    let cursor = resolver.query(uri, null, null, null, null);  
    plus.android.importClass(cursor);  
    cursor.moveToFirst();  
    let column = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);  
    // 获取录制的视频路径  
    let filePath = cursor.getString(column);  
    // 解析视频文件的属性  
    plus.io.resolveLocalFileSystemURL(  
        filePath,  
        (entry) => {  
            console.log(entry.fullPath)  
            entry.file(function(file) {  
                 console.log("size=="+file.size);   
                 console.log("name=="+file.name);  
            });  
        },  
        (e) => {  
            console.log("Resolve file URL failed: " + e.message);  
        }  
    );  
};  

ios解决方案

关联阅读
ios 直接使用5+ Api 就可以实现相关功能

       // ios关键代码  

let cmr = plus.camera.getCamera();  
let res = cmr.supportedVideoResolutions[0];  
let fmt = cmr.supportedVideoFormats[0];  
cmr.startVideoCapture(  
    function(path) {  
        plus.io.resolveLocalFileSystemURL(  
            path,  
            (entry) => {  
                console.log(entry.fullPath)  
                entry.file(function(file) {  
                  console.log("size=="+file.size);   
                  console.log("name=="+file.name);  
                });  
            },  
            (e) => {}  
        );  
    },  
    function(error) {  
        console.log("Resolve file URL failed: " + e.message);  
    }, {  
        resolution: res,  
        format: fmt,  
        videoMaximumDuration:10  
    }  
);  

Tips

  • 安卓端使用njs,因为不同root的问题会有部分手机不支持

具体使用

详见附件,把代码进行简单整合,并判断平台 ,可以直接调用

video.camera({  
    time: 10,  
    success: e => {  
        console.log("path=="+e.fullPath);   
        console.log("size=="+e.file.size);   
        console.log("name=="+e.file.name);  
        console.log(e);  
    }  
});  
5 关注 分享
Trust ___K _嘻嘻嘻_ ZFPartric 喜欢技术的前端

要回复文章请先登录注册

___K

___K

回复 ___K :
质量看到了,0和1o(* ̄︶ ̄*)o
2019-01-28 16:51
___K

___K

赞,不过问一下大佬,分辨率和保存路径在哪里设置?
2019-01-28 16:49
Neil_HL

Neil_HL

回复 q***@163.com :
哪里出错说清楚啊
2019-01-19 20:48
q***@163.com

q***@163.com

不能用啊,报错....
2019-01-19 20:34
1***@qq.com

1***@qq.com

赞一个,大佬
2019-01-16 18:04