template-project/jsFile/video/yy-video.js

138 lines
4.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

const videoTools = {
/**
* @description 视频选择,并返回
*/
chooseVideo() {
return new Promise((resolve,reject)=>{
let videoObj = {};
uni.chooseVideo({
sourceType: ['camera', 'album'],
compressed:true,//是否压缩所选的视频源文件,默认值为 true需要压缩。
maxDuration:60,//拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。
camera: 'back',//'front'、'back',默认'back'
success: (res)=> {
console.log(res,'视频');
// #ifdef H5
videoObj = {
size:res.size,//视频大小
path:res.name,//视频名称
lastModified:res.tempFile.lastModified,//最后修改时间
type:res.tempFile.type,//视频类型
}
// #endif
// #ifdef APP-PLUS || MP-WEIXIN
videoObj = {
size:res.size,//视频大小
path:res.tempFilePath,//视频名称
duration:res.duration,//播放总时长单位秒
width:res.width,//视频宽
height:res.height,//视频高
}
// #endif
resolve(videoObj)
}
});
})
},
/**
* @description 选择视频并压缩视频不支持H5
*/
chooseCompressVideo() {
return new Promise((resolve, reject)=>{
uni.chooseVideo({
sourceType: ['camera', 'album'],
compressed:true,//是否压缩所选的视频源文件,默认值为 true需要压缩。
maxDuration:60,//拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。
camera: 'back',//'front'、'back',默认'back'
success: (res)=> {
let exit = res.tempFilePath.split('.').includes('mp4');
if(exit) {
// #ifdef APP-PLUS || MP-WEIXIN
uni.compressVideo({
src:res.tempFilePath,
quality:'medium',//low:低 medium:中 high:高
bitrate: 100000,//码率,单位 kbps
fps: 100,//帧率
resolution:1,//相对于原视频的分辨率比例,取值范围(0, 1]
success: rescomp => {
resolve({path:rescomp.tempFilePath,size:rescomp.size})
}
})
// #endif
} else {
uni.showToast({title:'请选择mp4格式的视频',icon:'none'})
}
}
});
})
},
/**
* @description 预览视频,仅仅微信小程序生效
* @param {Number} current 0
* @param {Array} videoArr [{url:'',type:'video',poster:''}]
*/
previewVideo(current=0,videoArr=[]) {
// #ifdef MP-WEIXIN
uni.previewMedia({
current:current,
sources:videoArr
})
// #endif
},
/**
* @description 保存视频不支持H5
* @param {String} src
*/
saveVideo(src) {
uni.saveVideoToPhotosAlbum({
filePath: src,
success: ()=> {}
});
},
/**
* @description 压缩视频不支持H5
* @param {String} src
*/
compressVideo(src) {
return new Promise((resolve, reject)=>{
// #ifdef APP-PLUS || MP-WEIXIN
uni.compressVideo({
src,
quality:'medium',//low:低 medium:中 high:高
bitrate: 100000,//码率,单位 kbps
fps: 100,//帧率
resolution:1,//相对于原视频的分辨率比例,取值范围(0, 1]
success: rescomp => {
resolve({path:rescomp.tempFilePath,size:rescomp.size})
}
})
// #endif
})
},
/**
* @description 获取视频信息
* @param {String} src
*/
getVideoInfo(src) {
return new Promise((resolve, reject)=>{
uni.getVideoInfo({
src,
success: (video)=> {
let obj = {
orientation:video.orientation,//画面方向 微信小程序、App3.1.14+
type:video.type,//视频格式 微信小程序、App3.1.14+
duration:video.duration,//视频长度 微信小程序、App3.1.10+、H5
size:video.size,//视频大小,单位 kB 微信小程序、App3.1.10+、H5
height:video.height,//视频的长,单位 px 微信小程序、App3.1.10+、H5
width:video.width,//视频的宽,单位 px 微信小程序、App3.1.10+、H5
fps:video.fps,//视频帧率 微信小程序、App3.1.14+
bitrate:video.bitrate,//视频码率,单位 kbps 微信小程序、App3.1.14+
}
resolve(obj)
}
});
})
}
}
export default videoTools;