从Azure Blob存储到Flask Python,再到HTML/JS的检索和显示视频



我在ADLS Gen2存储帐户中有一个.mp4视频文件,我正试图在一个简单的Flask网络应用程序中显示该文件。为了简单起见,我会对所有的URL进行硬编码,直到我能够让它工作为止。

当我在连接字符串中输入没有SAS的URL时,网页显示:ResourceNotFoundThe specified resource does not exist. RequestId:xxxx-xxxx-xxxx-xxxx-xxxx Time:xxxx

当我将SAS附加到URL的末尾时,浏览器会下载该文件,但不会在页面上显示。

我正在尝试在浏览器中显示视频,并能够(在浏览器中(播放。下面是我的代码,任何输入都非常感谢!

@app.route('/playVideo/', methods=['GET'])
def playVideo():
return render_template('playVideo.html')
{% extends 'base.html' %}
{% block content %}
<h1>Hello world!</h1>
<iframe src="https://mystorageaccount.blob.core.windows.net/video/xxx-xxx-xxx/xxx-xxx-xxx..mp4" width="853" height="480" frameborder="0" allowfullscreen></iframe>
{% endblock %}

当我在连接字符串中输入没有SAS的URL时网页显示:ResourceNotFound指定的资源没有存在请求ID:xxxx-xxxx-xxx-xxxxx-xxxx时间:xxxx。

之所以会发生这种情况,是因为blob容器的ACL设置为Private。如果要通过blob的URL直接访问它,则需要将blob容器的ACL设置为BlobPublic

当我将SAS附加到URL末尾时,我的浏览器会下载文件,但不会在页面上显示。

请检查blob的内容类型属性。在所有可能性中,它被设置为application/octet-stream。更新blob属性并将其内容类型属性更改为video/mp4,这样就可以解决这个问题。

最新更新