介绍
这篇文章给大家介绍怎么在vue中使用瓶实现一个视频合成功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
vue是什么软件
vue是一套用于构建用户界面的渐进式JavaScript框架,vue与其它大型框架的区别是,使用vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用vue可以采用单文件组件和vue生态系统支持的库开发复杂的单页应用。
原理:监听滴事件来获取拖拽的文件列表
上传文件
通过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”:下载="文件名">下载>
赫夫如下
我们上传文件后通过falsk处理返回文件路径拼接后获取文件地址
标签添加下载属性可以给下载的文件命名
如果你对/qwe voi有疑惑请看下面的配置代理说明
配置代理说明
配置代理是为了解决跨域问题开发环境可在vue.config。js配置即可使用
生产环境需要额外配置nginx
/qwe实际上就是http://127.0.0.1:8087文件
/voi实际上就是http://127.0.0.1:8087 getvoi
对应我们烧瓶中的
额外说明(如果你使用uni-app)
如果你使用uni-app可参照文档使用api
上传文件api https://uniapp.dcloud.io/api/request/network-file?id=还是