| | |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "@element-plus/icons-vue": "^2.1.0", |
| | | "@ffmpeg/ffmpeg": "^0.9.8", |
| | | "@form-create/designer": "^3.2.6", |
| | | "@form-create/element-ui": "^3.2.11", |
| | | "@iconify/iconify": "^3.1.1", |
| | | "@microsoft/fetch-event-source": "^2.0.1", |
| | | "@tensorflow-models/body-pix": "^2.2.1", |
| | | "@tensorflow/tfjs": "^3.21.0", |
| | | "@videojs-player/vue": "^1.0.0", |
| | | "@vueuse/core": "^10.9.0", |
| | | "@wangeditor/editor": "^5.1.23", |
| | |
| | | "devDependencies": { |
| | | "@commitlint/cli": "^19.0.1", |
| | | "@commitlint/config-conventional": "^19.0.0", |
| | | "@ffmpeg/core": "^0.10.0", |
| | | "@iconify/json": "^2.2.187", |
| | | "@intlify/unplugin-vue-i18n": "^2.0.0", |
| | | "@purge-icons/generated": "^0.9.0", |
| | |
| | | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" |
| | | } |
| | | }, |
| | | "node_modules/@ffmpeg/core": { |
| | | "version": "0.10.0", |
| | | "resolved": "https://registry.npmmirror.com/@ffmpeg/core/-/core-0.10.0.tgz", |
| | | "integrity": "sha512-qunWJl5PezpXEm31tb8Qu5z37B5KVA1VYZCpXchMhuAb3X9T7PuE3SlhOwphEoRhzaOa3lpofDfzihAUMFaVPQ==", |
| | | "dev": true, |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@ffmpeg/ffmpeg": { |
| | | "version": "0.9.8", |
| | | "resolved": "https://registry.npmmirror.com/@ffmpeg/ffmpeg/-/ffmpeg-0.9.8.tgz", |
| | | "integrity": "sha512-QradleJx78hHJBtI1wRsus1L1jxQB3v4h6k8c3CERI9fssm+NSSppuofmsOei7uq7iQEYq3oK9tJNAyEsRoNng==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "is-url": "^1.2.4", |
| | | "node-fetch": "^2.6.1", |
| | | "regenerator-runtime": "^0.13.7", |
| | | "resolve-url": "^0.2.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12.16.1" |
| | | } |
| | | }, |
| | | "node_modules/@ffmpeg/ffmpeg/node_modules/regenerator-runtime": { |
| | | "version": "0.13.11", |
| | | "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", |
| | | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@floating-ui/core": { |
| | | "version": "1.6.9", |
| | | "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.9.tgz", |
| | |
| | | "@swc/counter": "^0.1.3" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow-models/body-pix": { |
| | | "version": "2.2.1", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow-models/body-pix/-/body-pix-2.2.1.tgz", |
| | | "integrity": "sha512-JeZHcpVMR0mW2znmF0FpZ0f7zpSY7c6+A7FBOmcIyZupTkXmG3MwGGqFPsVjRBwfqaKa4qYCJd7Svqo6rMzJYw==", |
| | | "license": "Apache-2.0", |
| | | "peerDependencies": { |
| | | "@tensorflow/tfjs-backend-webgl": "^4.10.0", |
| | | "@tensorflow/tfjs-converter": "^4.10.0", |
| | | "@tensorflow/tfjs-core": "^4.10.0" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs": { |
| | | "version": "3.21.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs/-/tfjs-3.21.0.tgz", |
| | | "integrity": "sha512-khcARd3/872llL/oF4ouR40qlT71mylU66PGT8kHP/GJ5YKj44sv8lDRjU7lOVlJK7jsJFWEsNVHI3eMc/GWNQ==", |
| | | "license": "Apache-2.0", |
| | | "dependencies": { |
| | | "@tensorflow/tfjs-backend-cpu": "3.21.0", |
| | | "@tensorflow/tfjs-backend-webgl": "3.21.0", |
| | | "@tensorflow/tfjs-converter": "3.21.0", |
| | | "@tensorflow/tfjs-core": "3.21.0", |
| | | "@tensorflow/tfjs-data": "3.21.0", |
| | | "@tensorflow/tfjs-layers": "3.21.0", |
| | | "argparse": "^1.0.10", |
| | | "chalk": "^4.1.0", |
| | | "core-js": "3", |
| | | "regenerator-runtime": "^0.13.5", |
| | | "yargs": "^16.0.3" |
| | | }, |
| | | "bin": { |
| | | "tfjs-custom-module": "dist/tools/custom_module/cli.js" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs-backend-cpu": { |
| | | "version": "4.22.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.22.0.tgz", |
| | | "integrity": "sha512-1u0FmuLGuRAi8D2c3cocHTASGXOmHc/4OvoVDENJayjYkS119fcTcQf4iHrtLthWyDIPy3JiPhRrZQC9EwnhLw==", |
| | | "license": "Apache-2.0", |
| | | "peer": true, |
| | | "dependencies": { |
| | | "@types/seedrandom": "^2.4.28", |
| | | "seedrandom": "^3.0.5" |
| | | }, |
| | | "engines": { |
| | | "yarn": ">= 1.3.2" |
| | | }, |
| | | "peerDependencies": { |
| | | "@tensorflow/tfjs-core": "4.22.0" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs-backend-webgl": { |
| | | "version": "4.22.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.22.0.tgz", |
| | | "integrity": "sha512-H535XtZWnWgNwSzv538czjVlbJebDl5QTMOth4RXr2p/kJ1qSIXE0vZvEtO+5EC9b00SvhplECny2yDewQb/Yg==", |
| | | "license": "Apache-2.0", |
| | | "peer": true, |
| | | "dependencies": { |
| | | "@tensorflow/tfjs-backend-cpu": "4.22.0", |
| | | "@types/offscreencanvas": "~2019.3.0", |
| | | "@types/seedrandom": "^2.4.28", |
| | | "seedrandom": "^3.0.5" |
| | | }, |
| | | "engines": { |
| | | "yarn": ">= 1.3.2" |
| | | }, |
| | | "peerDependencies": { |
| | | "@tensorflow/tfjs-core": "4.22.0" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs-converter": { |
| | | "version": "4.22.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs-converter/-/tfjs-converter-4.22.0.tgz", |
| | | "integrity": "sha512-PT43MGlnzIo+YfbsjM79Lxk9lOq6uUwZuCc8rrp0hfpLjF6Jv8jS84u2jFb+WpUeuF4K33ZDNx8CjiYrGQ2trQ==", |
| | | "license": "Apache-2.0", |
| | | "peer": true, |
| | | "peerDependencies": { |
| | | "@tensorflow/tfjs-core": "4.22.0" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs-core": { |
| | | "version": "4.22.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs-core/-/tfjs-core-4.22.0.tgz", |
| | | "integrity": "sha512-LEkOyzbknKFoWUwfkr59vSB68DMJ4cjwwHgicXN0DUi3a0Vh1Er3JQqCI1Hl86GGZQvY8ezVrtDIvqR1ZFW55A==", |
| | | "license": "Apache-2.0", |
| | | "peer": true, |
| | | "dependencies": { |
| | | "@types/long": "^4.0.1", |
| | | "@types/offscreencanvas": "~2019.7.0", |
| | | "@types/seedrandom": "^2.4.28", |
| | | "@webgpu/types": "0.1.38", |
| | | "long": "4.0.0", |
| | | "node-fetch": "~2.6.1", |
| | | "seedrandom": "^3.0.5" |
| | | }, |
| | | "engines": { |
| | | "yarn": ">= 1.3.2" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs-core/node_modules/@types/offscreencanvas": { |
| | | "version": "2019.7.3", |
| | | "resolved": "https://registry.npmmirror.com/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", |
| | | "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==", |
| | | "license": "MIT", |
| | | "peer": true |
| | | }, |
| | | "node_modules/@tensorflow/tfjs-core/node_modules/node-fetch": { |
| | | "version": "2.6.13", |
| | | "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.13.tgz", |
| | | "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==", |
| | | "license": "MIT", |
| | | "peer": true, |
| | | "dependencies": { |
| | | "whatwg-url": "^5.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": "4.x || >=6.0.0" |
| | | }, |
| | | "peerDependencies": { |
| | | "encoding": "^0.1.0" |
| | | }, |
| | | "peerDependenciesMeta": { |
| | | "encoding": { |
| | | "optional": true |
| | | } |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-backend-cpu": { |
| | | "version": "3.21.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-3.21.0.tgz", |
| | | "integrity": "sha512-88S21UAdzyK0CsLUrH17GPTD+26E85OP9CqmLZslaWjWUmBkeTQ5Zqyp6iK+gELnLxPx6q7JsNEeFuPv4254lQ==", |
| | | "license": "Apache-2.0", |
| | | "dependencies": { |
| | | "@types/seedrandom": "^2.4.28", |
| | | "seedrandom": "^3.0.5" |
| | | }, |
| | | "engines": { |
| | | "yarn": ">= 1.3.2" |
| | | }, |
| | | "peerDependencies": { |
| | | "@tensorflow/tfjs-core": "3.21.0" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-backend-webgl": { |
| | | "version": "3.21.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-3.21.0.tgz", |
| | | "integrity": "sha512-N4zitIAT9IX8B8oe489qM3f3VcESxGZIZvHmVP8varOQakTvTX859aaPo1s8hK1qCy4BjSGbweooZe4U8D4kTQ==", |
| | | "license": "Apache-2.0", |
| | | "dependencies": { |
| | | "@tensorflow/tfjs-backend-cpu": "3.21.0", |
| | | "@types/offscreencanvas": "~2019.3.0", |
| | | "@types/seedrandom": "^2.4.28", |
| | | "@types/webgl-ext": "0.0.30", |
| | | "@types/webgl2": "0.0.6", |
| | | "seedrandom": "^3.0.5" |
| | | }, |
| | | "engines": { |
| | | "yarn": ">= 1.3.2" |
| | | }, |
| | | "peerDependencies": { |
| | | "@tensorflow/tfjs-core": "3.21.0" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-converter": { |
| | | "version": "3.21.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs-converter/-/tfjs-converter-3.21.0.tgz", |
| | | "integrity": "sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q==", |
| | | "license": "Apache-2.0", |
| | | "peerDependencies": { |
| | | "@tensorflow/tfjs-core": "3.21.0" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-core": { |
| | | "version": "3.21.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs-core/-/tfjs-core-3.21.0.tgz", |
| | | "integrity": "sha512-YSfsswOqWfd+M4bXIhT3hwtAb+IV8+ODwIxwdFR/7jTAPZP1wMVnSlpKnXHAN64HFOiP+Tm3HmKusEZ0+09A0w==", |
| | | "license": "Apache-2.0", |
| | | "dependencies": { |
| | | "@types/long": "^4.0.1", |
| | | "@types/offscreencanvas": "~2019.3.0", |
| | | "@types/seedrandom": "^2.4.28", |
| | | "@types/webgl-ext": "0.0.30", |
| | | "@webgpu/types": "0.1.16", |
| | | "long": "4.0.0", |
| | | "node-fetch": "~2.6.1", |
| | | "seedrandom": "^3.0.5" |
| | | }, |
| | | "engines": { |
| | | "yarn": ">= 1.3.2" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-data": { |
| | | "version": "3.21.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs-data/-/tfjs-data-3.21.0.tgz", |
| | | "integrity": "sha512-eFLfw2wIcFNxnP2Iv/SnVlihehzKMumk1b5Prcx1ixk/SbkCo5u0Lt7OVOWaEOKVqvB2sT+dJcTjAh6lrCC/QA==", |
| | | "license": "Apache-2.0", |
| | | "dependencies": { |
| | | "@types/node-fetch": "^2.1.2", |
| | | "node-fetch": "~2.6.1", |
| | | "string_decoder": "^1.3.0" |
| | | }, |
| | | "peerDependencies": { |
| | | "@tensorflow/tfjs-core": "3.21.0", |
| | | "seedrandom": "^3.0.5" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-layers": { |
| | | "version": "3.21.0", |
| | | "resolved": "https://registry.npmmirror.com/@tensorflow/tfjs-layers/-/tfjs-layers-3.21.0.tgz", |
| | | "integrity": "sha512-CMVXsraakXgnXEnqD9QbtResA7nvV7Jz20pGmjFIodcQkClgmFFhdCG5N+zlVRHEz7VKG2OyfhltZ0dBq/OAhA==", |
| | | "license": "Apache-2.0 AND MIT", |
| | | "peerDependencies": { |
| | | "@tensorflow/tfjs-core": "3.21.0" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/@webgpu/types": { |
| | | "version": "0.1.16", |
| | | "resolved": "https://registry.npmmirror.com/@webgpu/types/-/types-0.1.16.tgz", |
| | | "integrity": "sha512-9E61voMP4+Rze02jlTXud++Htpjyyk8vw5Hyw9FGRrmhHQg2GqbuOfwf5Klrb8vTxc2XWI3EfO7RUHMpxTj26A==", |
| | | "license": "BSD-3-Clause" |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/ansi-styles": { |
| | | "version": "4.3.0", |
| | | "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", |
| | | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "color-convert": "^2.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/ansi-styles?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/argparse": { |
| | | "version": "1.0.10", |
| | | "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", |
| | | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "sprintf-js": "~1.0.2" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/chalk": { |
| | | "version": "4.1.2", |
| | | "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", |
| | | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "ansi-styles": "^4.1.0", |
| | | "supports-color": "^7.1.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=10" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/chalk?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/cliui": { |
| | | "version": "7.0.4", |
| | | "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", |
| | | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", |
| | | "license": "ISC", |
| | | "dependencies": { |
| | | "string-width": "^4.2.0", |
| | | "strip-ansi": "^6.0.0", |
| | | "wrap-ansi": "^7.0.0" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/color-convert": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", |
| | | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "color-name": "~1.1.4" |
| | | }, |
| | | "engines": { |
| | | "node": ">=7.0.0" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/color-name": { |
| | | "version": "1.1.4", |
| | | "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", |
| | | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/emoji-regex": { |
| | | "version": "8.0.0", |
| | | "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", |
| | | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/is-fullwidth-code-point": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", |
| | | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", |
| | | "license": "MIT", |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/node-fetch": { |
| | | "version": "2.6.13", |
| | | "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.13.tgz", |
| | | "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "whatwg-url": "^5.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": "4.x || >=6.0.0" |
| | | }, |
| | | "peerDependencies": { |
| | | "encoding": "^0.1.0" |
| | | }, |
| | | "peerDependenciesMeta": { |
| | | "encoding": { |
| | | "optional": true |
| | | } |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/regenerator-runtime": { |
| | | "version": "0.13.11", |
| | | "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", |
| | | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/string-width": { |
| | | "version": "4.2.3", |
| | | "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", |
| | | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "emoji-regex": "^8.0.0", |
| | | "is-fullwidth-code-point": "^3.0.0", |
| | | "strip-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/wrap-ansi": { |
| | | "version": "7.0.0", |
| | | "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", |
| | | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "ansi-styles": "^4.0.0", |
| | | "string-width": "^4.1.0", |
| | | "strip-ansi": "^6.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=10" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/yargs": { |
| | | "version": "16.2.0", |
| | | "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", |
| | | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "cliui": "^7.0.2", |
| | | "escalade": "^3.1.1", |
| | | "get-caller-file": "^2.0.5", |
| | | "require-directory": "^2.1.1", |
| | | "string-width": "^4.2.0", |
| | | "y18n": "^5.0.5", |
| | | "yargs-parser": "^20.2.2" |
| | | }, |
| | | "engines": { |
| | | "node": ">=10" |
| | | } |
| | | }, |
| | | "node_modules/@tensorflow/tfjs/node_modules/yargs-parser": { |
| | | "version": "20.2.9", |
| | | "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", |
| | | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", |
| | | "license": "ISC", |
| | | "engines": { |
| | | "node": ">=10" |
| | | } |
| | | }, |
| | | "node_modules/@transloadit/prettier-bytes": { |
| | | "version": "0.0.7", |
| | | "resolved": "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz", |
| | |
| | | "@types/lodash": "*" |
| | | } |
| | | }, |
| | | "node_modules/@types/long": { |
| | | "version": "4.0.2", |
| | | "resolved": "https://registry.npmmirror.com/@types/long/-/long-4.0.2.tgz", |
| | | "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@types/node": { |
| | | "version": "20.14.11", |
| | | "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.14.11.tgz", |
| | | "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", |
| | | "devOptional": true, |
| | | "dependencies": { |
| | | "undici-types": "~5.26.4" |
| | | } |
| | | }, |
| | | "node_modules/@types/node-fetch": { |
| | | "version": "2.6.12", |
| | | "resolved": "https://registry.npmmirror.com/@types/node-fetch/-/node-fetch-2.6.12.tgz", |
| | | "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "@types/node": "*", |
| | | "form-data": "^4.0.0" |
| | | } |
| | | }, |
| | | "node_modules/@types/nprogress": { |
| | |
| | | "resolved": "https://registry.npmmirror.com/@types/nprogress/-/nprogress-0.2.3.tgz", |
| | | "integrity": "sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/@types/offscreencanvas": { |
| | | "version": "2019.3.0", |
| | | "resolved": "https://registry.npmmirror.com/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", |
| | | "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@types/qrcode": { |
| | | "version": "1.5.5", |
| | |
| | | "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.15.tgz", |
| | | "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/@types/seedrandom": { |
| | | "version": "2.4.34", |
| | | "resolved": "https://registry.npmmirror.com/@types/seedrandom/-/seedrandom-2.4.34.tgz", |
| | | "integrity": "sha512-ytDiArvrn/3Xk6/vtylys5tlY6eo7Ane0hvcx++TKo6RxQXuVfW0AF/oeWqAj9dN29SyhtawuXstgmPlwNcv/A==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@types/semver": { |
| | | "version": "7.5.8", |
| | |
| | | "version": "0.0.20", |
| | | "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", |
| | | "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" |
| | | }, |
| | | "node_modules/@types/webgl-ext": { |
| | | "version": "0.0.30", |
| | | "resolved": "https://registry.npmmirror.com/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", |
| | | "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@types/webgl2": { |
| | | "version": "0.0.6", |
| | | "resolved": "https://registry.npmmirror.com/@types/webgl2/-/webgl2-0.0.6.tgz", |
| | | "integrity": "sha512-50GQhDVTq/herLMiqSQkdtRu+d5q/cWHn4VvKJtrj4DJAjo1MNkWYa2MA41BaBO1q1HgsUjuQvEOk0QHvlnAaQ==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@typescript-eslint/eslint-plugin": { |
| | | "version": "7.17.0", |
| | |
| | | "snabbdom": "^3.1.0" |
| | | } |
| | | }, |
| | | "node_modules/@webgpu/types": { |
| | | "version": "0.1.38", |
| | | "resolved": "https://registry.npmmirror.com/@webgpu/types/-/types-0.1.38.tgz", |
| | | "integrity": "sha512-7LrhVKz2PRh+DD7+S+PVaFd5HxaWQvoMqBbsV9fNJO1pjUs1P8bM2vQVNfk+3URTqbuTI7gkXi0rfsN0IadoBA==", |
| | | "license": "BSD-3-Clause", |
| | | "peer": true |
| | | }, |
| | | "node_modules/@xmldom/xmldom": { |
| | | "version": "0.8.10", |
| | | "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz", |
| | |
| | | "version": "3.37.1", |
| | | "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.37.1.tgz", |
| | | "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", |
| | | "dev": true, |
| | | "hasInstallScript": true, |
| | | "funding": { |
| | | "type": "opencollective", |
| | |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", |
| | | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | |
| | | "node": ">=0.8.0" |
| | | } |
| | | }, |
| | | "node_modules/long": { |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npmmirror.com/long/-/long-4.0.0.tgz", |
| | | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", |
| | | "license": "Apache-2.0" |
| | | }, |
| | | "node_modules/lru-cache": { |
| | | "version": "5.1.1", |
| | | "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", |
| | |
| | | "version": "2.7.0", |
| | | "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", |
| | | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "whatwg-url": "^5.0.0" |
| | | }, |
| | |
| | | "version": "0.2.1", |
| | | "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz", |
| | | "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", |
| | | "deprecated": "https://github.com/lydell/resolve-url#deprecated", |
| | | "dev": true |
| | | "deprecated": "https://github.com/lydell/resolve-url#deprecated" |
| | | }, |
| | | "node_modules/restore-cursor": { |
| | | "version": "4.0.0", |
| | |
| | | "version": "5.2.1", |
| | | "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", |
| | | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", |
| | | "dev": true, |
| | | "funding": [ |
| | | { |
| | | "type": "github", |
| | |
| | | "resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz", |
| | | "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/seedrandom": { |
| | | "version": "3.0.5", |
| | | "resolved": "https://registry.npmmirror.com/seedrandom/-/seedrandom-3.0.5.tgz", |
| | | "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/selection-update": { |
| | | "version": "0.1.2", |
| | |
| | | "version": "1.3.0", |
| | | "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", |
| | | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "safe-buffer": "~5.2.0" |
| | | } |
| | |
| | | "version": "7.2.0", |
| | | "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", |
| | | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "has-flag": "^4.0.0" |
| | | }, |
| | |
| | | "node_modules/tr46": { |
| | | "version": "0.0.3", |
| | | "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", |
| | | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", |
| | | "dev": true |
| | | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" |
| | | }, |
| | | "node_modules/traverse": { |
| | | "version": "0.6.9", |
| | |
| | | "node_modules/undici-types": { |
| | | "version": "5.26.5", |
| | | "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz", |
| | | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", |
| | | "devOptional": true |
| | | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" |
| | | }, |
| | | "node_modules/unicode-canonical-property-names-ecmascript": { |
| | | "version": "2.0.0", |
| | |
| | | "node_modules/webidl-conversions": { |
| | | "version": "3.0.1", |
| | | "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", |
| | | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", |
| | | "dev": true |
| | | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" |
| | | }, |
| | | "node_modules/webpack-sources": { |
| | | "version": "3.2.3", |
| | |
| | | "version": "5.0.0", |
| | | "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", |
| | | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "tr46": "~0.0.3", |
| | | "webidl-conversions": "^3.0.0" |
| | |
| | | "lint:lint-staged": "lint-staged -c " |
| | | }, |
| | | "dependencies": { |
| | | "@ffmpeg/ffmpeg": "^0.9.8", |
| | | "@tensorflow-models/body-pix": "^2.2.1", |
| | | "@tensorflow/tfjs": "^3.21.0", |
| | | "@element-plus/icons-vue": "^2.1.0", |
| | | "@form-create/designer": "^3.2.6", |
| | | "@form-create/element-ui": "^3.2.11", |
| | |
| | | "@vitejs/plugin-legacy": "^5.3.1", |
| | | "@vitejs/plugin-vue": "^5.0.4", |
| | | "@vitejs/plugin-vue-jsx": "^3.1.0", |
| | | "@ffmpeg/core": "^0.10.0", |
| | | "autoprefixer": "^10.4.17", |
| | | "bpmn-js": "8.9.0", |
| | | "bpmn-js-properties-panel": "0.46.0", |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <input type="file" @change="handleFileChange" accept="video/*" /> |
| | | <div> 请ä¸ä¼ <span style="color: red;" >mp4</span> æ ¼å¼æä»¶ </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { onMounted, ref } from 'vue'; |
| | | import * as bodyPix from '@tensorflow-models/body-pix'; |
| | | import '@tensorflow/tfjs-backend-webgl'; |
| | | import { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg'; |
| | | import * as FileApi from '@/api/infra/file' |
| | | import CryptoJS from 'crypto-js' |
| | | // import { UploadRawFile, UploadRequestOptions } from 'element-plus/es/components/upload/src/upload' |
| | | import axios from 'axios' |
| | | |
| | | // å®ä¹ååºå¼åé |
| | | const net = ref(null); |
| | | const downloadUrl = ref(null); |
| | | const ffmpeg = ref(null); |
| | | const videoElement = ref(null); |
| | | const canvas = ref(null); |
| | | const ctx = ref(null); |
| | | const frameRate = ref(30); |
| | | const frameDuration = ref(1000 / 30); |
| | | const segments = ref([]); |
| | | const getUploadUrl= ref("") |
| | | // æä»¶åç§° |
| | | const fileName = ref("") |
| | | // æä»¶ç±»å |
| | | const fileType = ref("") |
| | | const emit = defineEmits(['Thnd','start']) |
| | | onMounted(async () => { |
| | | /** |
| | | * è·å¾ä¸ä¼ URL |
| | | */ |
| | | getUploadUrl.value = import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL + '/infra/file/upload'; |
| | | ffmpeg.value = createFFmpeg({ log: true }); |
| | | await ffmpeg.value.load(); |
| | | net.value = await bodyPix.load({ |
| | | architecture: 'MobileNetV1', |
| | | outputStride: 16, |
| | | multiplier: 0.5, |
| | | quantizationBytes: 2 |
| | | }); |
| | | }); |
| | | |
| | | const handleFileChange = (e) => { |
| | | const file = e.target.files[0]; |
| | | if (file) { |
| | | emit('start') |
| | | fileName.value = file.name |
| | | fileType.value = file.type |
| | | handleVideoProcessing(file); |
| | | } |
| | | }; |
| | | |
| | | const handleVideoProcessing = async (file) => { |
| | | videoElement.value = document.createElement('video'); |
| | | videoElement.value.muted = true; |
| | | videoElement.value.src = URL.createObjectURL(file); |
| | | await new Promise((resolve, reject) => { |
| | | videoElement.value.onloadedmetadata = () => { |
| | | videoElement.value.play(); |
| | | resolve(); |
| | | }; |
| | | videoElement.value.onerror = () => { |
| | | reject(new Error('è§é¢å 载失败')); |
| | | }; |
| | | }); |
| | | canvas.value = document.createElement('canvas'); |
| | | canvas.value.width = 640; |
| | | canvas.value.height = 480; |
| | | ctx.value = canvas.value.getContext('2d'); |
| | | segments.value = []; |
| | | processFrame(); |
| | | }; |
| | | |
| | | const processFrame = async () => { |
| | | if (videoElement.value.currentTime < videoElement.value.duration) { |
| | | ctx.value.clearRect(0, 0, canvas.value.width, canvas.value.height); |
| | | ctx.value.drawImage(videoElement.value, 0, 0, canvas.value.width, canvas.value.height); |
| | | |
| | | const imageData = ctx.value.getImageData(0, 0, canvas.value.width, canvas.value.height); |
| | | const data = imageData.data; |
| | | for (let i = 0; i < data.length; i += 4) { |
| | | const r = data[i]; |
| | | const g = data[i + 1]; |
| | | const b = data[i + 2]; |
| | | if (g > r + 30 && g > b + 30) { |
| | | data[i + 3] = 0; |
| | | } |
| | | } |
| | | ctx.value.putImageData(imageData, 0, 0); |
| | | |
| | | const segment = canvas.value.toDataURL('image/png'); |
| | | segments.value.push(segment); |
| | | await new Promise((resolve) => setTimeout(resolve, frameDuration.value)); |
| | | processFrame(); |
| | | } else { |
| | | processSegments(segments.value, frameRate.value); |
| | | } |
| | | }; |
| | | const processSegments = async (segments, frameRate) => { |
| | | const blobUrls = []; |
| | | for (let i = 0; i < segments.length; i++) { |
| | | const data = segments[i].split(',')[1]; |
| | | const byteCharacters = atob(data); |
| | | const byteNumbers = new Array(byteCharacters.length); |
| | | for (let j = 0; j < byteCharacters.length; j++) { |
| | | byteNumbers[j] = byteCharacters.charCodeAt(j); |
| | | } |
| | | const byteArray = new Uint8Array(byteNumbers); |
| | | const blob = new Blob([byteArray], { type: 'image/png' }); |
| | | const blobUrl = URL.createObjectURL(blob); |
| | | blobUrls.push(blobUrl); |
| | | await ffmpeg.value.FS('writeFile', `frame${i.toString().padStart(3, '0')}.png`, await fetchFile(blobUrl)); |
| | | } |
| | | const originalVideoBlob = await fetch(videoElement.value.src).then(response => response.blob()); |
| | | await ffmpeg.value.FS('writeFile', 'original_video.mp4', await fetchFile(originalVideoBlob)); |
| | | await ffmpeg.value.run('-i', 'original_video.mp4', '-vn', '-acodec', 'copy', 'audio.aac'); |
| | | await ffmpeg.value.run('-framerate', frameRate.toString(), '-i', 'frame%03d.png', '-i', 'audio.aac', '-c:v', 'prores_ks', '-pix_fmt', 'yuva444p10le', '-profile:v', '4444', '-c:a', 'copy', 'output.mov'); |
| | | const data = ffmpeg.value.FS('readFile', 'output.mov'); |
| | | const processedBlob = new Blob([data.buffer], { type: 'video/quicktime' }); |
| | | transToFile( processedBlob, fileName.value, fileType.value ).then( res => { |
| | | emit( 'Thnd', res ) |
| | | } ) |
| | | |
| | | }; |
| | | |
| | | |
| | | const transToFile = async(blob, fileName, fileType) => { |
| | | return new window.File([blob], fileName, {type: fileType}) |
| | | } |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | | <style> |
| | | |
| | | input[type="file"] { |
| | | |
| | | /* åºæ¬æ ·å¼ */ |
| | | border: none; |
| | | background-color: #007bff; |
| | | border-radius: 5px; |
| | | cursor: pointer; |
| | | width: 76px; |
| | | /* éèæä»¶å */ |
| | | color: transparent; |
| | | /* æ¯ææææµè§å¨è®¾ç½®åä½é¢è²éæ */ |
| | | &::file-selector-button { color: white } /* æ åè¯æ³ */ |
| | | &::-webkit-file-upload-button { color: white } /* Chrome/Safari */ |
| | | &::-moz-file-upload-button { color: white } /* Firefox */ |
| | | } |
| | | |
| | | /* ç»ä¸æé®æ ·å¼ */ |
| | | input[type="file"]::file-selector-button { |
| | | background: transparent; |
| | | border: none; |
| | | padding: 8px 12px; |
| | | margin: -8px -12px; /* æµæ¶å®¹å¨çpadding */ |
| | | font: inherit; |
| | | } |
| | | |
| | | /* æµè§å¨å
¼å®¹æ§å¤ç */ |
| | | input[type="file"]::-webkit-file-upload-button { |
| | | background: transparent; |
| | | border: none; |
| | | padding: 8px 12px; |
| | | margin: -8px -12px; |
| | | font: inherit; |
| | | } |
| | | |
| | | input[type="file"]::-moz-file-upload-button { |
| | | background: transparent; |
| | | border: none; |
| | | padding: 8px 12px; |
| | | margin: -8px -12px; |
| | | font: inherit; |
| | | } |
| | | |
| | | input{ |
| | | padding: 8px 12px; |
| | | } |
| | | |
| | | </style> |
| | |
| | | <el-form-item :label="t('digitalhumans.name')" prop="name"> |
| | | <el-input v-model="formData.name" :placeholder="t('common.inputText') + t('digitalhumans.name')" /> |
| | | </el-form-item> |
| | | <el-form-item :label="t('digitalhumans.code')" prop="code"> |
| | | <el-form-item :label="t('digitalhumans.code')" prop="code" v-if="false" > // å½åæ°å人è§é¢çç¼ç ç±»å |
| | | <el-input v-model="formData.code" :placeholder="t('common.inputText') + t('digitalhumans.code')" /> |
| | | </el-form-item> |
| | | <el-form-item :label="t('digitalhumans.gender')" prop="gender"> |
| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item :label="t('digitalhumans.useModel')" prop="useModel"> |
| | | <el-form-item :label="t('digitalhumans.useModel')" prop="useModel" v-if="false" > //æ°å人模å¼éæ©æ¡ |
| | | <el-select v-model="formData.useModel" :placeholder="t('common.selectText')+t('digitalhumans.useModel')"> |
| | | <el-option |
| | | v-for="dict in getIntDictOptions(DICT_TYPE.USE_MODEL)" |
| | |
| | | <UploadImg v-else v-model="formData.pictureUrl" /> |
| | | </el-form-item> |
| | | <el-form-item v-if="formData.useModel == 2" :label="t('digitalhumans.video')" prop="videoUrl"> |
| | | <UploadFile v-if="!(formData.videoUrl || formData.fixVideoUrl)" v-model="formData.videoUrl" :fileType="['mp4']" :limit="1" @on-success="handleFileSuccess('videoUrl', $event)"/> |
| | | <!-- 忬èªå¸¦çè§é¢ä¸ä¼ --> |
| | | <!-- <UploadFile v-if="!(formData.videoUrl || formData.fixVideoUrl)" v-model="formData.videoUrl" :fileType="['mp4']" :limit="1" @on-success="handleFileSuccess('videoUrl', $event)"/> --> |
| | | <!-- åææ·»å çå»é¤ç»¿å¹ç --> |
| | | <div v-if="!(formData.videoUrl || formData.fixVideoUrl)" > |
| | | <CES2 @start="StartCes" @Thnd="End" /> |
| | | <div style="color: red;" v-show="isUploading" > |
| | | å½åæ£å¨å¤çå¹¶ä¸ä¼ ä¸ï¼è¯·èå¿çå¾
... |
| | | </div> |
| | | </div> |
| | | <video-player v-if="formData.videoUrl || formData.fixVideoUrl" :property="videoProperty"/> |
| | | </el-form-item> |
| | | <!-- <el-form-item :label="æ 徿 è¯" prop="matting"> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <el-button @click="submitForm" type="primary" :disabled="formLoading">{{t('common.ok')}}</el-button> |
| | | <el-button @click="submitForm" type="primary" :disabled="formLoading" :loading="isUploading" >{{t('common.ok')}}</el-button> |
| | | <el-button @click="dialogVisible = false">{{t('common.cancel')}}</el-button> |
| | | </template> |
| | | </Dialog> |
| | |
| | | import VideoPlayer from "@/components/DiyEditor/components/mobile/VideoPlayer/index.vue"; |
| | | import {DiyComponent} from "@/components/DiyEditor/util"; |
| | | import {VideoPlayerProperty} from "@/components/DiyEditor/components/mobile/VideoPlayer/config"; |
| | | import { useUpload } from '@/components/UploadFile/src/useUpload' |
| | | import { el } from 'element-plus/es/locale'; |
| | | import CES2 from './CES2.vue' |
| | | import { any } from 'vue-types'; |
| | | |
| | | const { t } = useI18n() // å½é
å |
| | | const message = useMessage() // æ¶æ¯å¼¹çª |
| | | |
| | | const { uploadUrl, httpRequest } = useUpload() //ä¸ä¼ æ¹æ³ |
| | | const dialogVisible = ref(false) // å¼¹çªçæ¯å¦å±ç¤º |
| | | const dialogTitle = ref('') // å¼¹çªçæ é¢ |
| | | const formLoading = ref(false) // 表åçå è½½ä¸ï¼1ï¼ä¿®æ¹æ¶çæ°æ®å è½½ï¼2ï¼æäº¤çæé®ç¦ç¨ |
| | |
| | | useModel: undefined, |
| | | status: undefined, |
| | | }) |
| | | |
| | | // å½åæ¯å¦æ£å¨ä¸ä¼ è§é¢ |
| | | const isUploading = ref(false) |
| | | |
| | | const videoProperty = { |
| | | videoUrl: '', |
| | |
| | | }) |
| | | const formRef = ref() // 表å Ref |
| | | |
| | | const StartCes = () => { |
| | | console.log( " ----- å¼å§ ----- " ) |
| | | isUploading.value = true |
| | | } |
| | | |
| | | const End = (res)=>{ |
| | | const FileObject = { |
| | | file:res |
| | | } |
| | | httpRequest( FileObject ).then( response =>{ |
| | | console.log(response) |
| | | formData.value.videoUrl = response.data; |
| | | } ).finally( res => { |
| | | isUploading.value = false |
| | | } ) |
| | | |
| | | } |
| | | |
| | | /** æå¼å¼¹çª */ |
| | | const open = async (type: string, id?: number) => { |
| | | dialogVisible.value = true |
| | |
| | | } finally { |
| | | formLoading.value = false |
| | | } |
| | | }else{ |
| | | InitHumMODEL() |
| | | } |
| | | } |
| | | defineExpose({ open }) // æä¾ open æ¹æ³ï¼ç¨äºæå¼å¼¹çª |
| | |
| | | formData.value.videoUrl = response.data; |
| | | } |
| | | }; |
| | | |
| | | // ä¿®æ¹é»è®¤çæ°å人è§é¢æ¨¡å¼ä¸ºè§é¢ |
| | | |
| | | const InitHumMODEL = ()=>{ |
| | | let ModelList = getIntDictOptions( DICT_TYPE.USE_MODEL ) |
| | | for (let index = 0; index < ModelList.length; index++) { |
| | | const element = ModelList[index]; |
| | | if( element.label === "è§é¢" ){ |
| | | formData.value.useModel = Number( element.value ) |
| | | } |
| | | } |
| | | } |
| | | |
| | | </script> |
| | |
| | | import {loadEnv} from 'vite' |
| | | import {createVitePlugins} from './build/vite' |
| | | import {exclude, include} from "./build/vite/optimize" |
| | | |
| | | |
| | | import vue from '@vitejs/plugin-vue'; |
| | | import { defineConfig } from 'vite'; |
| | | |
| | | // å½åæ§è¡nodeå½ä»¤æ¶æä»¶å¤¹çå°å(å·¥ä½ç®å½) |
| | | const root = process.cwd() |
| | | |
| | |
| | | } |
| | | |
| | | // https://vitejs.dev/config/ |
| | | // defineConfig为åç»æ·»å |
| | | export default ({command, mode}: ConfigEnv): UserConfig => { |
| | | let env = {} as any |
| | | const isBuild = command === 'build' |
| | |
| | | port: env.VITE_PORT, // 端å£å· |
| | | host: "0.0.0.0", |
| | | open: env.VITE_OPEN === 'true', |
| | | |
| | | headers: { |
| | | "Cross-Origin-Opener-Policy": "same-origin", // ä¿æ¤ä½ çæºç«ç¹å
åæ»å» |
| | | "Cross-Origin-Embedder-Policy": "require-corp", // ä¿æ¤å害è
å
åä½ çæºç«ç¹çå½±å |
| | | }, |
| | | // æ¬å°è·¨å代ç. ç®å注éçåå ï¼ææ¶æ²¡æç¨éï¼server ç«¯å·²ç»æ¯æè·¨å |
| | | // proxy: { |
| | | // ['/admin-api']: { |
| | |
| | | }, |
| | | // 项ç®ä½¿ç¨çviteæä»¶ã åç¬æåå°build/vite/pluginä¸ç®¡ç |
| | | plugins: createVitePlugins(), |
| | | |
| | | // plugins: [vue(), ...createVitePlugins()], |
| | | |
| | | css: { |
| | | preprocessorOptions: { |
| | | scss: { |
| | |
| | | }, |
| | | }, |
| | | optimizeDeps: {include, exclude} |
| | | |
| | | } |
| | | } |