vue实现播放后端flask发送的mp3文件
演示

后端(flask)
后端返回的是 mp3 文件的 url,是可以直接在浏览器上打开后播放的
处理跨域请求
pip install flask-cors
后端代码
from flask import Flask, request, jsonify
from flask_cors import CORS
# 我的 mp3 文件存放路径
audio_temp_dir = 'garbage_can'
# static_folder 下的文件,可以直接通过 url 访问
app = Flask(__name__, static_folder=f'./{audio_temp_dir}')
# 全局跨域
CORS(app, supports_credentials=True)
@app.route("/speech", methods=['POST'])
def transfer_text_to_speech():
request_data = request.json
# 处理 mp3 文件,得到文件名
file_name = do_something()
return jsonify({
"""
request.host_url : 后端 url(app.run() 时,控制台打印的那个 url)
audio_temp_dir: 音频文件存放的文件夹(自定义的)
file_name: mp3 文件
"""
'url': f'{request.host_url}{audio_temp_dir}/{file_name}'
})
if __name__ == '__main__':
app.run(port=5000)前端(vue3)
html
<template>
<!-- 演示中使用的是 element-plus 的 button 组件 -->
<button type="primary" @click="handleAudio"">播放</button>
<audio ref="audioPlayer" controls>
<source :src="audioUrl" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
</template>
js
export default {
name: "你的组件名",
data() {
return {
audioUrl: null
}
},
}
methods: {
handleAudio() {
axios.post('http://127.0.0.1:5000/speech', {
// post 请求参数
}).then(response => {
// 后端返回的数据是 { url : xxxx }
this.audioUrl = response.data.url;
this.$refs.audioPlayer.src = this.audioUrl;
// 直接播放声音
this.$refs.audioPlayer.play();
// 打印的链接是可以直接在浏览器端播放的
console.log(this.audioUrl)
})
}
}重要说明
我尝试在 vue 中使用 v-model 来绑定 audio 标签的 src(得到响应后设置src),但是这样做无法正常播放音频,原因不明
如果通过设置标签的 ref 属性,再通过 this.$refs 设置 audio 标签的 src,就可以成功播放
到此这篇关于vue实现播放后端flask发送的mp3文件的文章就介绍到这了,更多相关vue播放mp3内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
el-tree设置选中高亮/焦点高亮、选中节点加深背景及更改字体颜色等的方法
el-tree默认有较浅的背景色,这里业务需要,选中节点的字体高亮,更改颜色,下面这篇文章主要给大家介绍了关于el-tree选中高亮/焦点高亮、选中节点加深背景及更改字体颜色等的设置方法,需要的朋友可以参考下2022-12-12
Vue+Webpack完美整合富文本编辑器TinyMce的方法
这篇文章主要介绍了Vue+Webpack完美整合富文本编辑器TinyMce的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2018-11-11
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
这篇文章主要介绍了vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-07-07
vue监听屏幕尺寸变化问题,window.onresize很简单
这篇文章主要介绍了vue监听屏幕尺寸变化问题,window.onresize很简单,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-10-10


最新评论