【web】vue 播放后端(flask)发送的 mp3 文件
2024-01-01 06:17:12
演示
后端(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("/")
def hello_world():
return "<p>Hello, World!</p>"
@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=5001)
前端(vue3)
<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>
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
,但是这样做无法正常播放音频,原因不明 - 如果通过设置标签的
ref
属性,再通过this.$refs
设置audio
标签的src
,就可以成功播放
文章来源:https://blog.csdn.net/m0_52733659/article/details/135321147
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!