Python通过flask搭建音频流/文件服务

时间:2022-12-13 15:12:00

✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。

????个人主页:算法工程师的学习日志


工作上需要搭建一个音频推送服务,考虑到使用python Flask搭建一个服务,下面给出简单的代码,代码中每次请求推送当前目录下的音频文件。


from flask import Flask
from flask import Response
import os




app = Flask(__name__)
folder = './video'




@app.route('/video/<file_key>')
def stream_mp3(file_key):
def generate():
path = os.path.join(folder, file_key)
with open(path, 'rb') as video:
data = video.read(1024)
while data:
yield data
data = video.read(1024)


return Response(generate(), mimetype="video")




if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)

文件下面有2个视频文件供调试,

Python通过flask搭建音频流/文件服务

代码中读取文件每次读取1024字节,而不是一次全部读取到文件中,于是利用到了python 的 yield,为了简化问题,上面仅仅传递当前系统指定路径下的文件(实际工作中还有很多要处理,日志模块、视频处理分析等其他模块)

运行代码

Python通过flask搭建音频流/文件服务

浏览器输入:

​http://127.0.0.1:8080/video/1.mp4​

则弹出视频页面。

Python通过flask搭建音频流/文件服务

原创字数要达到300字就多写几句

Python通过flask搭建音频流/文件服务

Flask

Flask 是一个微型的 Python 开发的 Web 框架,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask使用BSD授权。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。

示例代码:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
return "Hello World!"

if __name__ == "__main__":
app.run()

启动

$ pip install Flask
$ python hello.py
* Running on http://localhost:5000/

特性

  • 内置开发用服务器和debugger
  • 集成单元测试(unit testing)
  • RESTful request dispatching
  • 使用Jinja2模板引擎
  • 支持secure cookies(client side sessions)
  • 100% WSGI 1.0兼容
  • Unicode based
  • 详细的文件、教学
  • Google App Engine兼容
  • 可用Extensions增加其他功能

收录于合集 #python

上一篇【OpenCV-Python】滑动条的创建和使用(createTrackbar())下一篇数据挖掘算法-KNN算法