Я использую последний и рекомендуемый Azure.Storage.Blobs
пакет. Я загружаю видеофайл в виде фрагментов, который работает нормально. Теперь проблема заключается в возврате видео обратно в веб-клиент, который является 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;
Но в браузере ничего не отображается. Каков наилучший способ достичь этого?