我正在使用Azure blob存储来存储我所有的图像和视频。我已经实现了上传和获取功能,它运行得相当不错。我在加载视频时遇到了1个问题,因为当我使用在Azure blob存储上上传视频后生成的URL时,它会先下载所有内容,然后再呈现给用户。因此,如果视频大小为100 MB,它会下载所有的100 MB,直到比用户将无法看到视频.
我做了大量的研发工作,发现在渲染视频时,我需要获取部分内容(状态206),而不是一次获取整个视频。在添加请求头“Range:bytes-500”后,我尝试点击博客网址,但它仍然在下载整个内容。因此,我检查了一些开源视频网址,并尝试点击视频网址和“Range”请求头,它成功地给出了206响应状态,这意味着它正确地给了我部分内容,而不是完整的视频。
我看了一些论坛,他们说Azure存储支持部分内容概念,需要从属性中启用它。但我已经检查了Azure存储帐户下的所有选项,但没有找到任何启用此功能的内容。
有人能帮我解决这个问题吗?或者Azure门户上有什么我需要启用的东西吗?这是我一周以来一直在做的研发工作。任何帮助都将不胜感激。
谢谢注意安全。
4条答案
按热度按时间lhcgjxsq1#
假设
Accept-Ranges
没有启用,从这个blog我得到了它需要的set the default version of the service。下面是实现它的示例代码。
下面是设定属性后的传回信头比较。
之前:
之后:
rxztt3cl2#
假设视频内容是MPEG-4,问题可能是媒体本身需要将moov原子的位置从文件的末尾更改到文件的开头。浏览器在找到文件中的moov原子之前不会渲染视频,因此您需要确保原子位于文件的开头,这可以通过使用ffmpeg和"快速启动"来实现。下面是一篇很好的文章,其中包含更多细节:HERE
kxe2p93d3#
下面是我用来下载内容的SDK:
它会立即下载整个文件!不幸的是,其他答案中提供的解决方案似乎引用了另一个SDK?因此,对于我使用的SDK,解决方案是使用方法
OpenReadAsync
:默认情况下-它获取4 MB的数据,所以如果你想让你的应用有更小的内存占用量,你必须将该值覆盖为更小的数量。
我认为SDK在内部发送的请求已经设置了字节范围。因此,您所要做的就是在Web API中启用部分内容支持,如下所示:
4xrmg8kj4#
使用Azure CLI
刚跑: