我想在由Flask提供支持的网站上使用循环视频。显然,Chrome不会循环播放视频unless it was streamed with an HTTP 206 code being returned。但是,Flask总是使用HTTP 200返回此静态文件。如何从我的Flask项目(在Heroku上托管,用于记录)中流式传输静态内容,以使视频在Chrome中正确循环?
答案 0 :(得分:3)
我在处理视频文件时遇到了同样的问题,我通过挖掘Werkzeug
的源代码找到了解决方案。我通过在conditional=True
函数中添加标记send_from_directory
来解决它,如下所示:
@app.route('/uploads/<filename>')
def uploaded_file(filename):
"""Endpoint to serve uploaded videos
Use `conditional=True` in order to support range requests necessary for
seeking videos.
"""
return send_from_directory(app.config['UPLOAD_FOLDER'], filename,
conditional=True)
答案 1 :(得分:1)
Flask中的响应对象有一个&#34; status_code&#34;你可以传递的参数。有关更多详细信息,请参阅this documentation,但实质上,您可能希望继承Response对象。
另请查看make_response() - 根据您的应用程序结构,它可能会显示更简单的方法。
请查看streaming pattern以获取更多详细信息,但它是针对生成的内容而非静态内容。