我有一个素材管理的业务,用户可以上传视频,但同一视频不允许上传,所以需要根据视频生成md5值来对比是否曾上传过此素材。
使用wx.chooseVideo选择视频,默认开始压缩模式,同一视频安卓端每次根据视频内容生成的md5值都不一样,关闭压缩模式,同一视频生成的md5值就一样。
苹果端,默认开启压缩模式,同一视频,md5值始终一致;关闭压缩模式,同一视频,md5值每次也不一样;
最终:安卓端需要关闭压缩模式,苹果端开启压缩模式,同一视频每次生成的md5值才一致。
let system = wx.getSystemInfoSync();
let compressed = true;
if(system.platform === 'android'){
compressed = false;
}
console.log("压缩视频?",compressed);
wx.chooseVideo({
sourceType: ["album", "camera"],
maxDuration: 60,
camera: "back",
compressed: compressed,
success(res) {
console.log(res.tempFilePath);
let haxList = [];
wx.getFileSystemManager().readFile({
filePath: res.tempFilePath, // 选择图片返回的相对路径
// encoding: 'binary', //编码格式
success: resBack => {
// 成功的回调
var spark = new sMD5.ArrayBuffer();
spark.append(resBack.data);
var hexHash = spark.end(false);
console.log("上传视频md5值",hexHash);
haxList.push({
material: hexHash,
size: res.size,
path: res.tempFilePath
});
that.checkAllMaterial(haxList);
}
});
},
fail(res){
that.showToast(res)
}
});