diff --git a/lib/apis.js b/lib/apis.js index 6560cab4cc6ed1fc58ac11c85f939f711681ba20..79ae1fbecb5749f7d4d1434ea7bf8db5eaaf6a87 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 38f9e460f9e8790bd1bc8452242dc51a1d6c3643..333c9e6ffed97c9653b4d006caf0de19dceb9898 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 0000000000000000000000000000000000000000..3d5e2cfc3502e062a99bebc005048718277cf986 --- /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 4e38361c76325f521c3cad7c39fea2a7ca571722..495d35af303bb8aa2aa2683b90b2c497633eb88c 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 0000000000000000000000000000000000000000..b940e034dacf91687e0508d58b2ea81ddb45c1f8 --- /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 136d8e7a4f01f8e5e9c299167d1febaec34bbf0a..f9cc4393ca17827092f96a861c8491dc637021bb 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` }))