怎么在vue中使用瓶实现一个视频合成功能

  介绍

这篇文章给大家介绍怎么在vue中使用瓶实现一个视频合成功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

vue是什么软件

vue是一套用于构建用户界面的渐进式JavaScript框架,vue与其它大型框架的区别是,使用vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用vue可以采用单文件组件和vue生态系统支持的库开发复杂的单页应用。

原理:监听滴事件来获取拖拽的文件列表

怎么在vue中使用瓶实现一个视频合成功能“> <br/> <img src=

上传文件

通过axios上传文件

,。文件列表就是我们的文件列表

let  files =, this.fileList;   let  formd =, new  FormData ();   let 小姐:=,1;//添加上传列表   files.forEach (item =祝辞,{   formd.append(小姐:+,,,,,,,item.name)   我+ +;   })   formd.append (“type",,我)   let  config =, {   标题:{   “Content-Type":,“多部分/form-data"   }   }//上传文件请求   axios.post (“/qwe",, formd,,配置),然后(res =祝辞,{   console.log (res.data)   })

瓶处理文件

完整代码见最底部

逻辑如下
接收文件
为每次合成请求随机生成一个文件夹临时保存文件
拼接视频
返回文件路径

@app.route (“/file",方法=[& # 39;文章# 39;])   def 测试():      ,#获取文件=,files  request.files   ,#合成队列=,videoL  []   ,#随机字符串=,,dirs  sj ()   ,#生成文件夹   ,os.mkdir (dirs)   ,#保存文件并添加至合成队列   ,for  file  files.values拷贝():   打印才能(文件)   dst 才能=,dirs  +,“/? +, file.name  +,“.mp4"   file.save才能(dst)   时间=video 才能;VideoFileClip(时间+ dirs “/? +, file.name  +,“.mp4")   videoL.append才能(视频)   ,   ,#拼接视频=,,final  concatenate_videoclips(视频)   ,#文件路径=,,fileName  dirs  +,“/? +“{} .mp4" .format (sj ())   ,#生成视频   ,final.to_videofile(文件名)   ,   ,#销毁文件夹   ,def  sc ():   shutil.rmtree才能(dirs)   ,   ,# 30秒后销毁文件夹=,,timer  threading.Timer(30日,sc)   ,timer.start ()      ,#返回文件路径   文件名,return 

拼接获取文件路径

首先我们看瓶

逻辑如下
通过文件名获取文件返回文件

app.route (“/getvoi",方法=[& # 39;得到# 39;])   def  getImg ():   ,#获取文件名=,,ss  request.args[& # 39;名字# 39;】   ,#文件加至返回响应=,,response  make_response (   send_file才能(ss))      ,#删除文件   ,def  sc ():   os.remove才能(ss)   ,   ,# 30秒后删除文件=,,timer  threading.Timer(30日,sc)   ,timer.start ()   ,   ,return 响应

前端获取

通过一个标签下载

& lt; a  s : href=https://www.yisu.com/zixun/昂辗颉眗el=巴獠縩ofollow”rel=巴獠縩ofollow”:下载="文件名">下载

赫夫如下

怎么在vue中使用瓶实现一个视频合成功能

我们上传文件后通过falsk处理返回文件路径拼接后获取文件地址

标签添加下载属性可以给下载的文件命名

如果你对/qwe voi有疑惑请看下面的配置代理说明

配置代理说明

配置代理是为了解决跨域问题开发环境可在vue.config。js配置即可使用
生产环境需要额外配置nginx

怎么在vue中使用瓶实现一个视频合成功能

/qwe实际上就是http://127.0.0.1:8087文件
/voi实际上就是http://127.0.0.1:8087 getvoi
对应我们烧瓶中的

怎么在vue中使用瓶实现一个视频合成功能

额外说明(如果你使用uni-app)

如果你使用uni-app可参照文档使用api
上传文件api https://uniapp.dcloud.io/api/request/network-file?id=还是

怎么在vue中使用瓶实现一个视频合成功能