擅长:python、mysql、java
<p>我遇到了同样的问题,最终发现真正的问题是视频播放器客户端(至少在Objective-C iOS中)在响应中使用了“range”头(您可以打印出Flask<code>request.headers</code>进行检查)。换句话说,流媒体实际上是通过HTTP中的“range”支持来实现的。在</p>
<p>我遵循了<a href="https://codeburst.io/the-taste-of-media-streaming-with-flask-cdce35908a50" rel="nofollow noreferrer">https://codeburst.io/the-taste-of-media-streaming-with-flask-cdce35908a50</a>中的示例,Flask服务器代码需要使用“部分内容”(HTTP状态代码206)构建响应,并需要处理请求中的“range”头。相关代码如下:</p>
<ol>
<li>在请求后在Flask app中添加“Accept Ranges”,以便客户端知道“range”是受支持的:</li>
</ol>
<pre><code>@app.after_request
def after_request(response):
response.headers.add('Accept-Ranges', 'bytes')
return response
</code></pre>
<ol start=“2”>
<li>在服务mp4文件的函数中,假设文件路径是“full-path”:</li>
</ol>
^{pr2}$
<p>在我的测试中,上面的Flask代码可以与iOS objective-C客户端以及Chrome、Firefox浏览器中的.mp4文件一起使用。在</p>