【web】vue 播放后端(flask)发送的 mp3 文件
演示
后端(flask)
后端返回的是 mp3
文件的 url
,是可以直接在浏览器上打开后播放的 处理跨域请求pip install flask-cors
后端代码from flask import Flask, request, jsonify
from flask_cors import CORS
audio_temp_dir = 'garbage_can'
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. jsonfile_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> < 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>
jsexport default { name : "你的组件名" , data ( ) { return { audioUrl : null } } ,
} methods : { handleAudio ( ) { axios. post ( 'http://127.0.0.1:5000/speech' , { } ) . then ( response => { 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
,就可以成功播放
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591208.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!