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

 更新时间:2024年01月10日 09:16:52   作者:灯笼只能来教室体验生活  
这篇文章主要为大家详细介绍了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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 安装vue/cli后查看版本显示找不到vue指令的解决

    安装vue/cli后查看版本显示找不到vue指令的解决

    这篇文章主要介绍了安装vue/cli后查看版本显示找不到vue指令的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • fullcalendar日程管理插件月份切换回调处理方案

    fullcalendar日程管理插件月份切换回调处理方案

    这篇文章主要为大家介绍了fullcalendar日程管理插件月份切换回调处理的方案示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • el-tree设置选中高亮/焦点高亮、选中节点加深背景及更改字体颜色等的方法

    el-tree设置选中高亮/焦点高亮、选中节点加深背景及更改字体颜色等的方法

    el-tree默认有较浅的背景色,这里业务需要,选中节点的字体高亮,更改颜色,下面这篇文章主要给大家介绍了关于el-tree选中高亮/焦点高亮、选中节点加深背景及更改字体颜色等的设置方法,需要的朋友可以参考下
    2022-12-12
  • vue中Axios的封装与API接口的管理详解

    vue中Axios的封装与API接口的管理详解

    这篇文章主要给大家介绍了关于vue中Axios的封装与API接口的管理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • vue3自定义确认密码匹配验证规则的操作代码

    vue3自定义确认密码匹配验证规则的操作代码

    这篇文章主要介绍了vue3自定义确认密码匹配验证规则的操作代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Vue+Webpack完美整合富文本编辑器TinyMce的方法

    Vue+Webpack完美整合富文本编辑器TinyMce的方法

    这篇文章主要介绍了Vue+Webpack完美整合富文本编辑器TinyMce的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • vue 2.0组件与v-model详解

    vue 2.0组件与v-model详解

    这篇文章主要介绍了vue 2.0组件与v-model的相关资料,文中介绍的非常详细,本文适合初学组件编写的同学阅读,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作

    vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作

    这篇文章主要介绍了vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 使用Vue3和ApexCharts实现3D径向条形图的代码

    使用Vue3和ApexCharts实现3D径向条形图的代码

    径向条形图是一种用于可视化单一数据点及其与目标或理想值的关系的图表类型,它在显示进度、完成率或其他类似度量时非常有用,本文给大家介绍了使用Vue3和ApexCharts实现3D径向条形图,感兴趣的小伙伴可以参考阅读下
    2024-06-06
  • vue监听屏幕尺寸变化问题,window.onresize很简单

    vue监听屏幕尺寸变化问题,window.onresize很简单

    这篇文章主要介绍了vue监听屏幕尺寸变化问题,window.onresize很简单,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10

最新评论