Solución:
Si desea transmitir el video en el navegador, su servidor debe admitir solicitudes de rango HTTP. En tal caso, el servidor puede enviar solo una pequeña parte del contenido solicitado por el cliente. Como desea transmitir video en el navegador, puede usar video
etiqueta html que solicita un contenido utilizando encabezados de rango. Por lo tanto, también puede omitir algo de tiempo e inmediatamente reproducir la película desde esa posición, antes de que se descargue por completo.
ASP.NET Core 3 ya tiene soporte para solicitudes de rango HTTP, está implementado en PhysicalFile
método que tiene atributo enableRangeProcessing. Como dice la documentación:
Devuelve el archivo especificado por PhysicalPath (Status200OK), el contentType especificado como Content-Type y el fileDownloadName especificado como el nombre de archivo sugerido. Esto admite solicitudes de rango (Status206PartialContent o Status416RangeNotSatisfiable si el rango no es satisfactorio).
[Route("getFileById")]
public FileResult getFileById(int fileId)
{
...
return PhysicalFile($"C:/movies/{file.Name}", "application/octet-stream", enableRangeProcessing: true);
}
Tenga en cuenta que la ruta debe ser absoluta (no relativa).