From caa8446309e72bd28fee6f35fcbe0adaf0a9923d Mon Sep 17 00:00:00 2001 From: qiang Date: Tue, 23 Mar 2021 16:05:13 +0800 Subject: [PATCH] feat(app): uni.getVideoInfo --- lib/apis.js | 1 + lib/modules.json | 1 + .../helpers/protocol/media/get-video-info.js | 11 +++++++++++ src/platforms/app-plus/service/api/index.js | 1 + .../app-plus/service/api/media/get-video-info.js | 16 ++++++++++++++++ src/platforms/app-plus/service/api/util.js | 5 ++++- 6 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/core/helpers/protocol/media/get-video-info.js create mode 100644 src/platforms/app-plus/service/api/media/get-video-info.js diff --git a/lib/apis.js b/lib/apis.js index 6560cab4c..79ae1fbec 100644 --- a/lib/apis.js +++ b/lib/apis.js @@ -52,6 +52,7 @@ const media = [ 'chooseFile', 'previewImage', 'getImageInfo', + 'getVideoInfo', 'saveImageToPhotosAlbum', 'compressImage', 'compressVideo', diff --git a/lib/modules.json b/lib/modules.json index 38f9e460f..333c9e6ff 100644 --- a/lib/modules.json +++ b/lib/modules.json @@ -58,6 +58,7 @@ "uni.chooseFile": true, "uni.previewImage": true, "uni.getImageInfo": true, + "uni.getVideoInfo": true, "uni.saveImageToPhotosAlbum": true, "uni.compressImage": true, "uni.compressVideo": true, diff --git a/src/core/helpers/protocol/media/get-video-info.js b/src/core/helpers/protocol/media/get-video-info.js new file mode 100644 index 000000000..3d5e2cfc3 --- /dev/null +++ b/src/core/helpers/protocol/media/get-video-info.js @@ -0,0 +1,11 @@ +import getRealPath from 'uni-platform/helpers/get-real-path' + +export const getVideoInfo = { + src: { + type: String, + required: true, + validator (src, params) { + params.src = getRealPath(src) + } + } +} diff --git a/src/platforms/app-plus/service/api/index.js b/src/platforms/app-plus/service/api/index.js index 4e38361c7..495d35af3 100644 --- a/src/platforms/app-plus/service/api/index.js +++ b/src/platforms/app-plus/service/api/index.js @@ -32,6 +32,7 @@ export * from './media/choose-video' export * from './media/compress-image' export * from './media/compress-video' export * from './media/get-image-info' +export * from './media/get-video-info' export * from './media/preview-image' export * from './media/recorder' export * from './media/save-image-to-photos-album' diff --git a/src/platforms/app-plus/service/api/media/get-video-info.js b/src/platforms/app-plus/service/api/media/get-video-info.js new file mode 100644 index 000000000..b940e034d --- /dev/null +++ b/src/platforms/app-plus/service/api/media/get-video-info.js @@ -0,0 +1,16 @@ +import { + warpPlusMethod +} from '../util' + +export const getVideoInfo = warpPlusMethod('io', 'getVideoInfo', options => { + options.filePath = options.src + return options +}, data => { + return { + duration: data.duration, + fps: data.fps || 30, + height: data.height, + width: data.width, + size: data.size + } +}) diff --git a/src/platforms/app-plus/service/api/util.js b/src/platforms/app-plus/service/api/util.js index 136d8e7a4..f9cc4393c 100644 --- a/src/platforms/app-plus/service/api/util.js +++ b/src/platforms/app-plus/service/api/util.js @@ -208,7 +208,7 @@ export function warpPlusErrorCallback (callbackId, name, errMsg) { } } -export function warpPlusMethod (module, name, before) { +export function warpPlusMethod (module, name, before, after) { return function (options, callbackId) { if (typeof before === 'function') { options = before(options) @@ -217,6 +217,9 @@ export function warpPlusMethod (module, name, before) { success (data = {}) { delete data.code delete data.message + if (typeof after === 'function') { + data = after(data) + } invoke(callbackId, Object.assign({}, data, { errMsg: `${name}:ok` })) -- GitLab