UNPKG

@tarojs/taro-h5

Version:
79 lines (76 loc) 3.2 kB
import { temporarilyNotSupport, findDOM, shouldBeObject } from '../../../utils/index.js'; import { MethodHandler } from '../../../utils/handler.js'; // 视频 const saveVideoToPhotosAlbum = temporarilyNotSupport('saveVideoToPhotosAlbum'); const openVideoEditor = temporarilyNotSupport('openVideoEditor'); const getVideoInfo = temporarilyNotSupport('getVideoInfo'); /** * 创建 video 上下文 VideoContext 对象。 */ const createVideoContext = (id, inst) => { const el = findDOM(inst); // TODO HTMLVideoElement to VideoContext return el === null || el === void 0 ? void 0 : el.querySelector(`taro-video-core[id=${id}]`); }; const compressVideo = temporarilyNotSupport('compressVideo'); /** * 拍摄视频或从手机相册中选视频。 */ const chooseVideo = (options) => { // options must be an Object const isObject = shouldBeObject(options); if (!isObject.flag) { const res = { errMsg: `chooseVideo:fail ${isObject.msg}` }; console.error(res.errMsg); return Promise.reject(res); } const { success, fail, complete } = options; const handle = new MethodHandler({ name: 'chooseVideo', success, fail, complete }); const res = { tempFilePath: '', duration: 0, size: 0, height: 0, width: 0 }; const inputEl = document.createElement('input'); inputEl.setAttribute('type', 'file'); inputEl.setAttribute('multiple', 'multiple'); inputEl.setAttribute('accept', 'video/*'); inputEl.setAttribute('style', 'position: fixed; top: -4000px; left: -3000px; z-index: -300;'); document.body.appendChild(inputEl); return new Promise((resolve, reject) => { const TaroMouseEvents = document.createEvent('MouseEvents'); TaroMouseEvents.initEvent('click', true, true); inputEl.dispatchEvent(TaroMouseEvents); inputEl.onchange = function (e) { var _a; const target = e.target; const file = (_a = target.files) === null || _a === void 0 ? void 0 : _a[0]; const reader = new FileReader(); reader.onload = function (event) { var _a; const videoEl = document.createElement('video'); const url = (_a = event.target) === null || _a === void 0 ? void 0 : _a.result; videoEl.preload = 'metadata'; videoEl.src = url; videoEl.onloadedmetadata = () => { res.tempFilePath = url; res.duration = videoEl.duration; res.size = event.total; res.height = videoEl.videoHeight; res.width = videoEl.videoHeight; return handle.success(res, { resolve, reject }); }; }; if (file) { reader.readAsDataURL(file); } }; }).finally(() => { document.body.removeChild(inputEl); }); }; const chooseMedia = temporarilyNotSupport('chooseMedia'); export { chooseMedia, chooseVideo, compressVideo, createVideoContext, getVideoInfo, openVideoEditor, saveVideoToPhotosAlbum }; //# sourceMappingURL=index.js.map