diff --git a/lib/apis.js b/lib/apis.js index 1ee829e040247cb8af5fb17e3668097dea97d9af..6560cab4cc6ed1fc58ac11c85f939f711681ba20 100644 --- a/lib/apis.js +++ b/lib/apis.js @@ -54,6 +54,7 @@ const media = [ 'getImageInfo', 'saveImageToPhotosAlbum', 'compressImage', + 'compressVideo', 'getRecorderManager', 'getBackgroundAudioManager', 'createAudioContext', diff --git a/lib/modules.json b/lib/modules.json index ef5153b6b1d51c2e717aa130d5bee5a611ed58cc..38f9e460f9e8790bd1bc8452242dc51a1d6c3643 100644 --- a/lib/modules.json +++ b/lib/modules.json @@ -60,6 +60,7 @@ "uni.getImageInfo": true, "uni.saveImageToPhotosAlbum": true, "uni.compressImage": true, + "uni.compressVideo": true, "uni.getRecorderManager": true, "uni.getBackgroundAudioManager": true, "uni.createInnerAudioContext": true, diff --git a/src/core/helpers/protocol/media/compress-video.js b/src/core/helpers/protocol/media/compress-video.js new file mode 100644 index 0000000000000000000000000000000000000000..ab660f841821af20f80f4e9ec35b407d3ed71659 --- /dev/null +++ b/src/core/helpers/protocol/media/compress-video.js @@ -0,0 +1,23 @@ +import getRealPath from 'uni-platform/helpers/get-real-path' + +export const compressVideo = { + src: { + type: String, + required: true, + validator (src, params) { + params.src = getRealPath(src) + } + }, + quality: { + type: String + }, + bitrate: { + type: Number + }, + fps: { + type: Number + }, + resolution: { + type: Number + } +} diff --git a/src/platforms/app-plus/service/api/index.js b/src/platforms/app-plus/service/api/index.js index d192cc0c0b0c50b29cc76079c7c9306c85a16629..4e38361c76325f521c3cad7c39fea2a7ca571722 100644 --- a/src/platforms/app-plus/service/api/index.js +++ b/src/platforms/app-plus/service/api/index.js @@ -30,6 +30,7 @@ export * from './media/audio' export * from './media/choose-image' export * from './media/choose-video' export * from './media/compress-image' +export * from './media/compress-video' export * from './media/get-image-info' export * from './media/preview-image' export * from './media/recorder' diff --git a/src/platforms/app-plus/service/api/media/compress-video.js b/src/platforms/app-plus/service/api/media/compress-video.js new file mode 100644 index 0000000000000000000000000000000000000000..bc72ade5686829cf86cad3cead2b658198488255 --- /dev/null +++ b/src/platforms/app-plus/service/api/media/compress-video.js @@ -0,0 +1,18 @@ +import { + TEMP_PATH +} from '../constants' + +import { + warpPlusSuccessCallback, + warpPlusErrorCallback, + getFileName +} from '../util' + +export function compressVideo (options, callbackId) { + const dst = `${TEMP_PATH}/compressed/${Date.now()}_${getFileName(options.src)}` + const successCallback = warpPlusSuccessCallback(callbackId, 'compressVideo') + const errorCallback = warpPlusErrorCallback(callbackId, 'compressVideo') + plus.zip.compressVideo(Object.assign({}, options, { + dst + }), successCallback, errorCallback) +}