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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决element-ui的table表格控件表头与内容列不对齐问题

    解决element-ui的table表格控件表头与内容列不对齐问题

    这篇文章主要介绍了解决element-ui的table表格控件表头与内容列不对齐问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • VUE3中的函数的声明和使用

    VUE3中的函数的声明和使用

    这篇文章主要介绍了VUE3中的函数的声明和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue+element项目实时监听div宽度的变化

    vue+element项目实时监听div宽度的变化

    这篇文章主要介绍了vue+element项目里实时监听某个div宽度的变化,然后执行相应的事件,本文结合示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-08-08
  • 在uni-app中使用element-ui的方法与报错解决

    在uni-app中使用element-ui的方法与报错解决

    我们在开web开发的时候,经常会使用到element或者uview-ui,下面这篇文章主要给大家介绍了关于在uni-app中使用element-ui的方法与报错解决的相关资料,需要的朋友可以参考下
    2022-04-04
  • 一文详解Vue如何整合Echarts实现可视化界面

    一文详解Vue如何整合Echarts实现可视化界面

    ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上。本文将在Vue中整合Echarts实现可视化界面,感兴趣的可以了解一下
    2022-04-04
  • 谈谈我在vue-cli3中用预渲染遇到的坑

    谈谈我在vue-cli3中用预渲染遇到的坑

    这篇文章主要介绍了谈谈我在vue-cli3中用预渲染遇到的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 使用Element实现表格表头添加搜索图标和功能

    使用Element实现表格表头添加搜索图标和功能

    这篇文章主要介绍了使用Element实现表格表头添加搜索图标和功能,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 利用Vue.js指令实现全选功能

    利用Vue.js指令实现全选功能

    最近做了两个vue的项目,都需要实现全选反选的功能,两个项目用了两种实现方法,第一个项目用vue的computed,第二个项目用指令来实现,用起来,发觉指令更加方便。下面就来介绍如何利用指令来实现全选。
    2016-09-09
  • Vue3如何清空Reactive定义的数组

    Vue3如何清空Reactive定义的数组

    这篇文章主要介绍了Vue3如何清空Reactive定义的数组问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Antd的table组件表格的序号自增操作

    Antd的table组件表格的序号自增操作

    这篇文章主要介绍了Antd的table组件表格的序号自增操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10

最新评论