【发布时间】:2021-10-06 19:31:49
【问题描述】:
我正在使用最新和推荐的Azure.Storage.Blobs 包。我将视频文件作为块上传,效果很好。现在的问题是将视频返回给 Web 客户端,即videojs。播放器正在使用Range 请求。
我的端点:
[HttpGet]
[Route("video/{id}")]
[AllowAnonymous]
public async Task<IActionResult> GetVideoStreamAsync(string id)
{
var stream = await GetVideoFile(id);
return File(stream, "video/mp4", true); // true is for enableRangeProcessing
}
还有我的GetVideoFile 方法
var ms = new MemoryStream();
await blobClient.DownloadToAsync(ms, null, new StorageTransferOptions
{
InitialTransferLength = 1024 * 1024,
MaximumConcurrency = 20,
MaximumTransferLength = 4 * 1024 * 1024
});
ms.Position = 0;
return ms;
视频可以正常下载和流式传输。但它下载了整个视频,根本不尊重Range。我也试过DownloadTo(HttpRange)
var ms = new MemoryStream();
// parse range header...
var range = new HttpRange(from, to);
BlobDownloadInfo info = await blobClient.DownloadAsync(range);
await info.Content.CopyToAsync(ms);
return ms;
但是浏览器中没有显示任何内容。实现这一目标的最佳方法是什么?
【问题讨论】:
标签: c# azure asp.net-core azure-blob-storage