我正在尝试从 Azure Blob 存储提供 MP4 视频内容。通过确保将 Blob 的内容类型设置为;我可以让视频在现代浏览器中播放video/mp4
;但是我无法向后寻求。
将相同的视频放入 S3 存储桶会产生所需的结果,因此我排除了内容的问题。
我是否需要以特定方式配置存储角色来提供视频内容?
我正在尝试从 Azure Blob 存储提供 MP4 视频内容。通过确保将 Blob 的内容类型设置为;我可以让视频在现代浏览器中播放video/mp4
;但是我无法向后寻求。
将相同的视频放入 S3 存储桶会产生所需的结果,因此我排除了内容的问题。
我是否需要以特定方式配置存储角色来提供视频内容?
从@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);
You may try setting the default version for your storage account to 2011-08-18: http://blogs.msdn.com/b/windowsazurestorage/archive/2011/09/15/windows-azure-blobs-improved-http-headers-for-resume-on-download-and-a-change-in-if-match-conditions.aspx. It improves a couple things around range requests (probably what progressive download in your browser is doing). I haven't heard anything specific about video playback, but it can't hurt to try. :-)
对于从谷歌来到这里的任何人:
Azure 有两种类型的存储帐户:StorageV1/V2(创建新帐户时选择的默认选项)和 BlobStorage。
虽然 StorageV2 选项可能具有更多功能,但它不支持partial content requests
,这意味着 Chrome 将不允许视频搜索。
您可以通过导航到存储帐户 > 属性 > 帐户类型来识别 Azure 门户中的存储类型
对于想要使用 Azure CLI 的任何人:
az storage account blob-service-properties update --account-name [account_name] --default-service-version '2020-10-02'
我尝试直接从启用了控件的 HTML5 视频元素播放一个非常小的 MP4 编码 blob,我可以使用控件来回滚动我的视频。
您的视频内容的大小是多少?您还可以使用 Fiddler 检查 HTTP 标头以验证它们是否是预期的,或者当您使用 S3 存储桶中的相同 blob 时它们是否完全匹配?
如果您可以共享您的 blob 链接,我可以快速尝试一下,看看可能是什么问题。
您可以通过 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