Explorar el Código

七牛云处理

zjs_project hace 1 año
padre
commit
be934b2baf

+ 2 - 2
public/index.html

@@ -13,8 +13,8 @@
       <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
     </noscript>
     <div id="app"></div>
-	<script type="text/javascript" src="https://dm.static.elab-plus.com/krpano-no-watermark.js"></script>
+	<script type="text/javascript" crossorigin src="https://dm.static.elab-plus.com/krpano-no-watermark.js"></script>
     <!-- built files will be auto injected -->
-	<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
+	<script type="text/javascript" crossorigin src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
   </body>
 </html>

+ 1 - 1
src/App.vue

@@ -9,7 +9,7 @@
 		<router-view v-if="!$route.meta.keepAlive"></router-view>
 		<div class="loadingShadow" v-show="loading">
 			<div class="loadData">
-				<img src="https://skyforest.static.elaber.cn/detail/loading.gif" alt="" />
+				<img crossorigin src="https://skyforest.static.elaber.cn/detail/loading.gif" alt="" />
 				<div class="loadingMsg">{{loadingMsg}}</div>
 			</div>
 		</div>

+ 11 - 9
src/components/newBottomCom/viewAI/viewAI.html

@@ -2,7 +2,7 @@
 	<div class="ai-title rows">
 		<!-- v-if="relationId" -->
 		<div v-if="relationId" class="title-btn rows justify-center" :class="{active:tabIndex==2}" @click.stop="tabChange(2)">
-			<img class="redbox_icon" src="https://dm.static.elab-plus.com/miniProgram/redbox.gif" alt=""></img>
+			<img class="redbox_icon" crossorigin src="https://dm.static.elab-plus.com/miniProgram/redbox.gif" alt=""></img>
 			活动
 		</div>
 		<div class="title-btn rows justify-center" :class="{active:tabIndex==0}" @click.stop="tabChange(0)">数字人</div>
@@ -17,13 +17,15 @@
 					<div v-if="!videoUrl">
 						<div class="empty-item" @click="showMask">
 							<div class="add-icon rows justify-center">
-								<img class="bg" :src="uploadStatus==1 || uploadStatus==2 || uploadStatus==4?'https://dm.static.elab-plus.com/miniProgram/person_icon1.png':'https://dm.static.elab-plus.com/miniProgram/person_icon.png'"/>
+								<img crossorigin class="bg" :src="uploadStatus==1 || uploadStatus==2 || uploadStatus==4?'https://dm.static.elab-plus.com/miniProgram/person_icon1.png':'https://dm.static.elab-plus.com/miniProgram/person_icon.png'"/>
 							</div> 
+							<!-- 上传中 -->
 							<div class="rows justify-center" v-if="uploadStatus==1" style="width: 100%;height: 100%;">
 								<el-progress :format="format" :stroke-width="8"
 								define-back-color="#fff" color="#92CE8B" 
 								text-color="#92CE8B" type="circle" :percentage="progress"></el-progress>
 							</div>
+							<!-- 抠图中 -->
 							<div class="rows justify-center" v-if="uploadStatus==2" style="width: 100%;height: 100%;">
 								<el-progress :format="format" :stroke-width="8"
 								define-back-color="#fff" color="#92CE8B" 
@@ -45,7 +47,7 @@
 						</div>
 					</div>
 					<div v-else>
-						<img class="itemImg" :src="item.icon" @click.stop="selectAction(item,idx)" />
+						<img crossorigin class="itemImg" :src="item.icon" @click.stop="selectAction(item,idx)" />
 						<div class="item-name rows justify-center">
 							<i class="iconfont icon-ic-huanyihuan rows justify-center"></i>
 							替换
@@ -57,7 +59,7 @@
 					</div>
 				</template>
 				<template v-else>
-					<img class="itemImg" :src="item.icon" @click.stop="selectAction(item,idx)"/>
+					<img class="itemImg" crossorigin :src="item.icon" @click.stop="selectAction(item,idx)"/>
 					<div class="item-name rows justify-center" @click.stop="selectAction(item,idx)">{{item.value}}</div>
 				</template>
 			</div>
@@ -67,7 +69,7 @@
 		<div class="main grid-view1">
 			<div :class="['item', petIndex==idx ? 'active': '']" v-for="(item, idx) in rightList"
 				:key="idx" @click="selectAction(item,idx)">
-				<img class="itemImg" :src="item.icon"/>
+				<img class="itemImg" crossorigin :src="item.icon"/>
 				<div class="item-name rows justify-center">{{item.value}}</div>
 			</div>
 		</div>
@@ -78,7 +80,7 @@
 			<div class="left-box">
 				<div class="left-main rows">
 					<div class="main-red columns justify-center">
-						<img class="red-img" src="https://dm.static.elab-plus.com/miniProgram/redbox.gif"/>
+						<img class="red-img" crossorigin src="https://dm.static.elab-plus.com/miniProgram/redbox.gif"/>
 						<!-- <div v-if="hasRedBox==false" class="red-btn rows justify-center" @click="addRedBox">添加红包</div>
 						<div class="rows justify-center" v-else>
 							<div class="iconfont icon-icon_delete rows justify-center" @click="removeRedBox"></div>
@@ -118,7 +120,7 @@
 		<div class="main grid-view1">
 			<div :class="['item', musicIndex==idx ? 'active': '']" v-for="(item, idx) in musicList"
 				:key="idx" @click="selectAction(item,idx)">
-				<img class="itemImg" :src="item.icon?item.icon:'https://dm.static.elab-plus.com/miniProgram/ai-icon.png'"/>
+				<img class="itemImg" crossorigin :src="item.icon?item.icon:'https://dm.static.elab-plus.com/miniProgram/ai-icon.png'"/>
 				<div class="item-name rows justify-center">{{item.value}}</div>
 			</div>
 		</div>
@@ -136,7 +138,7 @@
 				生成时间较长约3-5分钟,<br />
 				生成前会以人物剪影的方式在场景中占位
 			</div>
-			<img class="img" src="https://dm.static.elab-plus.com/miniProgram/mask-img.png"/>
+			<img class="img" crossorigin src="https://dm.static.elab-plus.com/miniProgram/mask-img.png"/>
 			<div class="section-text">
 				1.文件小于50M,时长小于20秒<br />
 				2.人物需全身照,拍摄时需保持稳定<br />
@@ -167,5 +169,5 @@
 		</div>
 	</div>
 	<!-- <video id="videoPlayer" loop muted autoplay style="display: none;" controls="false" webkit-playsinline="webkit-playsinline" playsinline="playsinline" src=""></video> -->
-	<video id="output-video" controls :src="videoSrc"></video>
+	<!-- <video id="output-video" controls :src="videoSrc"></video> -->
 </div>

+ 81 - 11
src/components/newBottomCom/viewAI/viewAI.vue

@@ -15,7 +15,8 @@
 	import lottie from "lottie-web"; //lottie
 	// const { createWorker } = require('@ffmpeg/ffmpeg');
 	import { FFmpeg } from "@ffmpeg/ffmpeg";
-	import { fetchFile, toBlobURL } from '@ffmpeg/util'
+	import { fetchFile, toBlobURL } from '@ffmpeg/util';
+	var qiniu = require('qiniu-js');
 	const baseURL = '.'
 	let ffmpeg = null;
 	// import { createFFmpeg, fetchFile } from '@/assets/ffmpeg.min.js';
@@ -120,7 +121,7 @@
 		async mounted() {
 			// await this.getCityHouseList();		
 			console.warn("***viewAI***")
-			Indicator.open('加载中...');
+			// Indicator.open('加载中...');
 			this.getDatalist(0);
 			this.getDatalist(1);
 			this.getDatalist(3);
@@ -217,6 +218,7 @@
 				this.leftList[0].url = '';
 				this.uploadStatus = 0;//处理完毕
 			},
+			//前端压缩视频代码-旧版SDK-需要严格的跨域隔离才行
 			async transcode(file,ffmpeg){
 				// if(!crossOriginIsolated) {
 				// 	SharedArrayBuffer = ArrayBuffer;
@@ -237,6 +239,7 @@
 				}));
 				// this.uploadMaterielFile(newfile)
 			},
+			//前端压缩视频代码-新版版SDK-需要严格的跨域隔离才行
 			async transcodeNew(file,form){
 				if (ffmpeg === null) {
 					ffmpeg = new FFmpeg();
@@ -261,7 +264,8 @@
 				this.uploadStatus = -1;
 				let d0 = Date.now();
 				await ffmpeg.writeFile(name, await fetchFile(file));
-				await ffmpeg.exec(['-i', name,  'output.mp4']);
+				//‘-b’,‘2000000’,
+				await ffmpeg.exec(['-i', name, '-r', '15', 'output.mp4']);//,
 				this.uploadStatus = 1;
 				let d1 = Date.now();
 				console.warn("***time1**", d0, d1,d1 - d0)
@@ -272,8 +276,62 @@
 				// video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
 				
 				var newfile = new File([data.buffer], name, { type: "video/mp4" });
+				// return newfile;
 				this.uploadMaterielFile({file:newfile},form)
 			},
+			//上传到七牛云中
+			async uploadVideolFile(file,form){
+			    var self = this;
+				let tokenObj = await requestConfig('getUploadToken', {});//获取上传token
+			
+			    var token = tokenObj.single.token;
+			    var resultUrl =  tokenObj.single.resultUrl; //上传图片的访问前缀this.resultUrl =
+			    var tp = file.name.substring(file.name.lastIndexOf('.'));
+			    var putExtra = {
+			        fname: "",
+			        params: {},
+			        mimeType: null
+			    };
+			    var config = {
+			        useCdnDomain: true,
+			        disableStatisticsReport: false,
+			        retryCount: 6,
+			        region: qiniu.region.z0
+			    };
+				self.uploadStatus = 1;//上传中
+				self.showPersonView = false;
+				self.addSilhouette();//添加剪影视频
+			    var fileName = decodeURIComponent(encodeURIComponent(Date.now() + '/video' + Math.floor(Math.random()*1000))) + tp;
+			    var observable = qiniu.upload(file, fileName, token, putExtra, config);
+			    var subscription = observable.subscribe(self.next, self.error, async function(res){
+			        self.uploading=false;
+			        let VideoUrl = resultUrl + fileName;
+			        console.warn("视频上传七牛成功",VideoUrl);
+			        // self.$message.success('视频上传成功');
+					// alert("***uploadMaterielFile***"+$config.brandId+this.userId);
+					let data = {
+						"url":VideoUrl,
+						"brandId": $config.brandId,
+						"userId":self.userId
+					}
+					let res1 = await requestConfig('robust_videoV2', data, true, false)
+					if (res1 && res1.success && res1.single) {
+						self.videoId = res1.single;//根据Id查询结果
+						self.startInterval();//开始轮询获取结果
+					}else{
+						self.initStatus();//还原初始状态
+					}
+			        let videoForm = document.getElementById(form); //获取表单对象
+			        videoForm && videoForm.reset(); // 重置表单
+			    });
+			},
+			next(res){
+				this.progress = Math.round(res.total.percent);//loaded已经加载的
+			},
+			// 上传七牛云发生错误
+			error(res){
+			    this.$message.error('视频上传失败'+res.message);
+			},
 			async uploadImgObj(e,form,type=1){
 				this.stopFlag = false;//上传开始时,开启上传
 				if(type==2){
@@ -283,7 +341,8 @@
 				var file = e.target.files[0];
 				// this.transcodeNew(file,form);
 				var fileSize = file.size / 1024 / 1024;
-				// alert('**文件**' + e.target.value + "-fileName=" + file.name);
+				console.warn('**文件**' + e.target.value + "-fileName=" + file.name+ "-fileSize="+fileSize);
+				// alert('**文件**' + e.target.value + "-fileName=" + file.name+ "-fileSize="+fileSize);
 				if (!/\.(MP4|mp4|MOV|mov)$/.test(e.target.value)) {
 					this.$message.warning('文件类型必须是mp4或者mov');
 					var videoForm = document.getElementById(form); //获取表单对象
@@ -307,7 +366,11 @@
 						var item = {};
 						item.file = file;
 						console.warn("***uploadImgObj***",file)
-						this.uploadMaterielFile(item, form); //正常上传图片
+						if(fileSize>20){//七牛云上传-服务端压缩
+							this.uploadVideolFile(file,form);
+						}else{
+							this.uploadMaterielFile(item, form); //正常上传图片
+						}
 					}
 				}else{//安卓
 					let reader = new FileReader();
@@ -331,7 +394,11 @@
 									var item = {};
 									item.file = file;
 									console.warn("***uploadImgObj***",file)
-									this.uploadMaterielFile(item, form); //正常上传图片
+									if(fileSize>20){//七牛云上传-服务端压缩
+										this.uploadVideolFile(file,form);
+									}else{
+										this.uploadMaterielFile(item, form); //正常上传图片-不压缩
+									}
 								}
 							}
 						};
@@ -343,7 +410,6 @@
 			//视频上传进度处理
 			uploadProgress(e){
 				this.progress = Math.round((e.loaded / e.total) * 100);//loaded已经加载的
-				console.warn("***uploadProgress***",this.progress)
 			},
 			//显示弹窗提示框
 			showPopViewHandle(){
@@ -402,6 +468,7 @@
 					}
 				}
 			},
+			//视频直接二进制上传方式
 			async uploadMaterielFile(item, form) {
 				this.uploadStatus = 0;
 				this.peopleIndex = 0;	//选中第一个
@@ -413,14 +480,16 @@
 				formData.append('file', item.file);
 				formData.append('brandId', $config.brandId);
 				formData.append('userId', this.userId);
-				console.warn("***uploadMaterielFile***");
+				console.warn("****uploadMaterielFile**",$config.brandId,this.userId)
+				// alert("***uploadMaterielFile***"+$config.brandId+this.userId);
 				this.uploadStatus = 1;//上传中
 				this.showPersonView = false;
 				this.addSilhouette();//添加剪影视频
 				let res = await requestConfig('robust_video', formData, true, false,'post',this.uploadProgress,this.cancel)
+				// alert("***uploadMaterielFile1***"+JSON.stringify(res));
 				if (axios.isCancel(res)) {//取消上传处理
 					this.initStatus();//还原初始状态
-				}else if (res.success && res.single) {
+				}else if (res && res.success && res.single) {
 					this.videoId = res.single;//根据Id查询结果
 					this.startInterval();//开始轮询获取结果
 				}else{
@@ -499,7 +568,8 @@
 					let index = progress.indexOf("|");
 					progress = progress.substr(0,index);
 					console.warn("***抠图进度条***",progress);
-					this.ktProgress = parseFloat(progress);//提取出来的进度条
+					let numbers = progress.match(/\d+/g)
+					this.ktProgress = parseFloat(numbers);//提取出来的进度条
 					if(this.ktProgress>99){
 						this.ktProgress = 99;
 					}
@@ -637,7 +707,7 @@
 					typeName = "Virtual_Pet";
 				} else if (type == 3) {
 					typeName = "Virtual_Music";
-					Indicator.close();
+					// Indicator.close();
 				}
 				var parmas = {
 					"type": typeName,

+ 1 - 1
src/components/newBottomCom/viewMask/viewMask.html

@@ -101,7 +101,7 @@
 		</div>
 	</div>
 	<div class="loadData" v-show="myloading">
-		<img src="https://skyforest.static.elaber.cn/detail/loading.gif" alt="" />
+		<img crossorigin src="https://skyforest.static.elaber.cn/detail/loading.gif" alt="" />
 		<div class="loadingMsg">{{loadingMsg}}</div>
 	</div>
 	<!-- <div class="dialog">

+ 7 - 7
src/pages/webgl_rxdz_krpano720/webgl_rxdz_krpano720.html

@@ -12,7 +12,7 @@
 		<span :class="[muted?'iconfont icon-jingyin':'iconfont icon-yinliang']" style="color: #ffffff;"></span>
 	</div>
 	<div class="music-view rows justify-center" v-if="bgMusic.title">
-		<img class="icon-yinle" src="https://dm.static.elab-plus.com/miniProgram/music_icon.png" alt=""></img>
+		<img class="icon-yinle" crossorigin src="https://dm.static.elab-plus.com/miniProgram/music_icon.png" alt=""></img>
 		{{bgMusic.title || ''}}
 	</div>
 	<div id="lottie-view" class="lottie-view" v-show="showAnim"></div>
@@ -44,7 +44,7 @@
 				已领过该礼包<br />
 				去广场看看其他作品吧!
 			</div>
-			<img class="common-img1 imgSty2" src="https://dm.static.elab-plus.com/miniProgram/hasRedImg.png" alt=""></img>
+			<img class="common-img1 imgSty2" crossorigin src="https://dm.static.elab-plus.com/miniProgram/hasRedImg.png" alt=""></img>
 			<div class="btn common-style rows justify-center" @click="closeLottery">知道了</div>
 		</div>
 		<!-- 礼盒领完了 -->
@@ -57,7 +57,7 @@
 				礼包已被抢完了!<br />
 				去广场看看其他作品吧
 			</div>
-			<img class="common-img1" src="https://dm.static.elab-plus.com/miniProgram/red-over.png" alt=""></img>
+			<img class="common-img1" crossorigin src="https://dm.static.elab-plus.com/miniProgram/red-over.png" alt=""></img>
 			<div class="btn common-style rows justify-center" @click="closeLottery">知道了</div>
 		</div>
 		<!-- 过期 -->
@@ -70,7 +70,7 @@
 				礼包已经过期了,<br />
 				去广场看看其他作品吧
 			</div>
-			<img class="common-img" src="https://dm.static.elab-plus.com/miniProgram/red-fail.png" alt=""></img>
+			<img class="common-img" crossorigin src="https://dm.static.elab-plus.com/miniProgram/red-fail.png" alt=""></img>
 			<div class="btn common-style rows justify-center" @click="closeLottery">知道了</div>
 		</div>
 		<!-- 达到金额领取限制 -->
@@ -83,7 +83,7 @@
 				抱歉,您领取金额已达到<br />
 				今日可领取上限,明日再来吧~
 			</div>
-			<img class="common-img1 imgSty3" src="https://dm.static.elab-plus.com/miniProgram/fail-img.png" alt=""></img>
+			<img class="common-img1 imgSty3" crossorigin src="https://dm.static.elab-plus.com/miniProgram/fail-img.png" alt=""></img>
 			<div class="btn common-style rows justify-center" @click="closeLottery">知道了</div>
 		</div>
 		<!-- 达到领取次数限制 -->
@@ -96,7 +96,7 @@
 				抱歉,今日领取次数已用完,<br />
 				明日再来吧~
 			</div>
-			<img class="common-img1 imgSty3" src="https://dm.static.elab-plus.com/miniProgram/fail-img.png" alt=""></img>
+			<img class="common-img1 imgSty3" crossorigin src="https://dm.static.elab-plus.com/miniProgram/fail-img.png" alt=""></img>
 			<div class="btn common-style rows justify-center" @click="closeLottery">知道了</div>
 		</div>
 		<!-- 达到创建次数限制 -->
@@ -109,7 +109,7 @@
 				抱歉,今日创建次数已用完,<br />
 				明日再来吧~
 			</div>
-			<img class="common-img1 imgSty3" src="https://dm.static.elab-plus.com/miniProgram/fail-img.png" alt=""></img>
+			<img class="common-img1 imgSty3" crossorigin src="https://dm.static.elab-plus.com/miniProgram/fail-img.png" alt=""></img>
 			<div class="btn common-style rows justify-center" @click="closeLottery">知道了</div>
 		</div>
 	</div>

+ 1 - 1
src/pages/webgl_rxdz_krpano720/webgl_rxdz_krpano720.vue

@@ -144,7 +144,7 @@
 						this.lottieAni()
 					}else if(this.result.status==99){
 						Toast({
-							message: '礼包已抢完',
+							message: '礼包已抢完',
 						});
 					}
 				}else{

+ 1 - 1
src/pages/webgl_rxdz_krpanovr/webgl_rxdz_krpanovr.html

@@ -6,7 +6,7 @@
 -->
 <div class="main-view">
 	<div class="music-view rows justify-center" v-if="music.title">
-		<img class="icon-yinle" src="https://dm.static.elab-plus.com/miniProgram/music_icon.png" alt=""></img>
+		<img class="icon-yinle" crossorigin src="https://dm.static.elab-plus.com/miniProgram/music_icon.png" alt=""></img>
 		{{music.title}}
 	</div>
 	<krpanoVideo ref="krpanoVideo" :bgUrl="bgUrl" :muted="muted"></krpanoVideo>

+ 6 - 5
src/services/request.js

@@ -7,7 +7,7 @@ var requestCount = 0; //记录下同时的请求数
 
 axios.defaults.headers.post['elabEnvironment'] = '4'; //axios默认的请求方式,可以自己设置
 axios.defaults.headers.post['userType'] = '1000'; //axios默认的请求方式,可以自己设置
-axios.defaults.timeout = '1000000'; //axios默认的请求方式,可以自己设置
+axios.defaults.timeout = 10*60*1000; //axios默认的请求方式,可以自己设置
 // axios.defaults.headers.post['Authorization'] = 'Token 9837b7480a99ab4df7e3a06ad0d990fbc7b941e4'; //axios默认的请求方式,可以自己设置
 axios.interceptors.request.use(function(config) {
 	if(config.noLoading){
@@ -32,13 +32,13 @@ axios.interceptors.request.use(function(config) {
 		}
 		if (config.url.includes('elab-marketing-operate/mofangTest/user/login')
 		||config.url.includes('elab-marketing-user/vcode/send/verifyCode')) {
-			config.headers['userId'] = "";
-			config.headers['ip'] = "";
+			// config.headers['userId'] = "";
+			// config.headers['ip'] = "";
 		} else {//uploadOss 上传format文件过大时提示不成功,接口500,通过测试与header有关,注释掉上传的header就好了
 			if (!config.url.includes('elab-marketing-sms/aliyun/openapi/uploadOss')
 			&& !config.url.includes('/robust_video')){
-				config.headers['userId'] = mapVue.$route.query.leavePhoneCustomerId || '';
-				config.headers['openId'] = mapVue.$route.query.openid || '';
+				// config.headers['userId'] = mapVue.$route.query.leavePhoneCustomerId || '';
+				// config.headers['openId'] = mapVue.$route.query.openid || '';
 				// config.headers['ip'] = getStorage('ip');
 				// config.headers['maiya_token'] =  getStorage('userInfoThing') ? JSON.parse(getStorage('userInfoThing')).maiya_token || "" : ""; //token
 			}
@@ -64,6 +64,7 @@ axios.interceptors.response.use(function(response) {
 	return result;
 }, function(error) {
 	console.log("***error***", error, requestCount)
+	// alert("***error***"+JSON.stringify(error))
 	if (axios.isCancel(error)) {
 		console.log('上传已取消');
 		requestCount = requestCount - 1;

+ 2 - 0
src/services/requestConfig.js

@@ -40,6 +40,8 @@ const endpoints = {
 	queryEnumList: 'elab-marketing-user/enum/queryEnumList', // 获取数字人
 	rob: 'elab-marketing-file/redpack/rob', // 抢红包
 	robust_video: 'https://robustvideomatting.elab-plus.com/robust_video', // 上传视频
+	robust_videoV2: 'https://robustvideomatting.elab-plus.com/robust_video/v2', // 上传视频
+	// robust_video: 'http://192.168.50.52:5000/robust_video', // 上传视频
 	get_result: 'https://robustvideomatting.elab-plus.com/get_result', // 获取视频上传结果
 	getUserVirtural: 'elab-marketing-file/virtual/getUserVirtural', // 查询用户上传的数字人 
 	addUserVirtural: 'elab-marketing-file/virtual/addUserVirtural', // 修改数字人信息