gpt4 book ai didi

azure - 如何使用 Azure Function 中的范围 header 和部分内容流式传输存储在 Azure Blob 存储中的 mp4 文件?

转载 作者:行者123 更新时间:2023-12-02 08:27:34 32 4
gpt4 key购买 nike

我想创建一个 Azure 函数,使用请求范围 header 和部分响应(http 状态代码 206s)将 mp4 文件从 Azure Blob 存储流式传输到 HTML 视频标记等客户端。我正在使用 Azure 函数,以便稍后可以实现所需的安全检查。

FileStreamResult 类可以自动处理来自 html video 标签的范围请求,因此以下代码可以很好地将视频从本地文件系统流式传输到浏览器,从而允许用户随意向前/向后扫描视频:

    [FunctionName("StreamVideo")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]
HttpRequest req, ILogger log)
{
// This stream is seekable!
Stream str = File.OpenRead($@"C:\temp\BigBuckBunny.mp4");

return new FileStreamResult(str, new MediaTypeHeaderValue("video/mp4").MediaType)
{
EnableRangeProcessing = true,
};
}

我想要执行此操作,但使用位于 Azure Blob 存储中的文件。下面的代码不起作用。它在单个响应中返回整个文件,http 状态代码为 200。大概这是因为流不可查找?

    [FunctionName("StreamVideo")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]
HttpRequest req, ILogger log)
{
string containerName = req.Query["container"];
string blobName = req.Query["blob"];

var blobServiceClient = new BlobServiceClient("CONNECTION_STRING_HERE", new BlobClientOptions(BlobClientOptions.ServiceVersion.V2019_12_12));

BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);
BlobClient blob = containerClient.GetBlobClient(blobName);

// This stream is NOT seekable!
Stream str = await blob.OpenReadAsync();

return new FileStreamResult(str, new MediaTypeHeaderValue("video/mp4").MediaType)
{
EnableRangeProcessing = true,
};
}

我怎样才能让它发挥作用?请注意,我已经使用 Web Api for .NET Framework 4.x 实现了类似的解决方案,该解决方案使用具有相同媒体文件的 PushStreamContent,因此我知道 Blob 存储中的 mp4 文件没问题。我的函数面向 .NET Core 3.1,目前我正在本地测试它。

最佳答案

我刚刚检查了您的代码,似乎没有错误。您可以检查以下内容。

1.导航到Azure Blob存储,并检查视频的内容类型是否为video/mp4

2.对于 MediaTypeHeaderValue 命名空间,我使用的是这个:using System.Net.Http.Headers;

3.这是我正在使用的软件包:

<PackageReference Include="Azure.Storage.Blobs" Version="12.6.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.7" />

在我这边,我可以看到响应代码实际上是206。截图如下:

enter image description here

关于azure - 如何使用 Azure Function 中的范围 header 和部分内容流式传输存储在 Azure Blob 存储中的 mp4 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63710137/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com