我正在尝试从Azure Blob Storage提供MP4视频内容。 通过确保Blob的内容类型设置为video/mp4
,我可以让现代浏览器播放视频; 但是我无法向后搜索。
将相同的视频放入S3存储桶会产生所需的结果,因此我排除了内容问题。
我需要以特定方式配置Storage角色才能提供视频内容吗?
我正在尝试从Azure Blob Storage提供MP4视频内容。 通过确保Blob的内容类型设置为video/mp4
,我可以让现代浏览器播放视频; 但是我无法向后搜索。
将相同的视频放入S3存储桶会产生所需的结果,因此我排除了内容问题。
我需要以特定方式配置Storage角色才能提供视频内容吗?
我从@smarx的回答中并不清楚如何为我的Blob容器设置它,但是经过一些谷歌搜索,我发现了下面的代码。只需在LINQPad中执行它,视频便会开始流式传输:
var storageAccount = CloudStorageAccount.Parse("AccountName=<accountName>;AccountKey=<accountKeyBase64>;DefaultEndpointsProtocol=http");
var blobClient = storageAccount.CreateCloudBlobClient();
// Get the current service properties
var serviceProperties = blobClient.GetServiceProperties();
// Set the default service version to 2011-08-18 (or a higher version like 2012-03-01)
serviceProperties.DefaultServiceVersion = "2011-08-18";
// Save the updated service properties
blobClient.SetServiceProperties(serviceProperties);
az storage account blob-service-properties update --account-name [account_name] --default-service-version '2020-10-02'
对于从谷歌搜索到这里的任何人:
Azure有两种类型的存储账户: StorageV1/V2(创建新账户时默认选项)和BlobStorage.
尽管StorageV2选项可能具有更多功能,但它不支持部分内容请求
,这意味着Chrome将不允许视频寻求。
您可以通过导航到Azure门户中的存储账户>属性>账户类型来识别您拥有的存储类型。
您可以通过 Powershell 完成它。这是一个针对 Azures ARM 的示例(不是经典模式,但您可以轻松转换它)。
Select-AzureRmSubscription -SubscriptionName "subscription" $Name = 'storageaccountname' $resourcegroup = 'resourcegroup'
$sp = New-Object -TypeName Microsoft.WindowsAzure.Storage.Shared.Protocol.ServiceProperties
$sp.DefaultServiceVersion = "2017-04-17" $key = (Get-AzureRMStorageAccountKey -StorageAccountName $Name
-ResourceGroupName $resourcegroup).Value[1]
$context = New-AzureStorageContext -StorageAccountName $Name
-StorageAccountKey $key
$blobClient = $context.StorageAccount.Create
我尝试使用启用控件的HTML5视频元素直接播放非常小的MP4编码的blob,我可以使用控件来滚动我的视频。
你的视频内容大小是多少?此外,您可以使用Fiddler检查HTTP标头以验证它们是否符合预期或是否与从S3存储桶使用相同的blob时完全相同。
如果您可以分享您的blob链接,我可以快速尝试并查看可能出现的问题。
<video>
元素显示;这依赖于渐进式下载而不是流媒体。我会尝试托管一个问题的示例,但使用Azure Storage Emulator非常容易重新创建该问题。 - JonnyReeves