Потоковое видео MP4 через .NET HTML5

Я пытаюсь создать тестовую страницу, которая будет содержать тег HTML5 VIDEO, который позволит воспроизводить конвертированные видео. Я успешно могу конвертировать видео и хранить их локально на сервере, но я хотел бы иметь возможность передавать все видео через другую страницу .aspx.

Предполагая, что у меня есть страница player.aspx, которая будет содержать HTML-код и страницу getvideo.aspx, которая ничего не будет делать, кроме предоставления двоичного видео, я подумал, что следующий код будет хорошо работать на моей странице player.aspx:

<div style="text-align:center">   
<video controls autoplay id="video1" width="920">  
    <source src="http://www.mywebsite.com/getvideo.aspx?getvideo=1" type="video/mp4">  
    Your browser does not support HTML5 video.  
</video>  

Страница getvideo.aspx содержит следующий код vb.net:

Response.clearheaders
Response.AddHeader("Content-Type", "video/mp4")
Response.AddHeader("Content-Disposition", "inline;filename=""newvideo.mp4""")

dim Err as string = ""
Dim iStream As System.IO.Stream

' Buffer to read 10K bytes in chunk:
Dim buffer(buffersize) As Byte
' Length of the file:
Dim length As Integer

' Total bytes to read:
Dim dataToRead As Long

' Identify the file to download including its path.
Dim filepath As String = "./outout/videos/newvideo.mp4"

' Identify the file name.
Dim filename As String = System.IO.Path.GetFileName(filepath)

' Open the file.
try
    iStream = New System.IO.FileStream(filepath, System.IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
catch ex as exception
    throw new exception("Could not create FileStream for [" & filepath & "], error follows." & vbcrlf & ex.toString)
end try

Try
    ' Total bytes to read:
    dataToRead = iStream.Length

    ' Read the bytes.
    While dataToRead > 0
        ' Verify that the client is connected.
        If system.web.httpcontext.current.Response.IsClientConnected Then
            ' Read the data in buffer
            length = iStream.Read(buffer, 0, buffersize)
            ' Write the data to the current output stream.
            system.web.httpcontext.current.Response.OutputStream.Write(buffer, 0, length)
           ' Flush the data to the HTML output.
           system.web.httpcontext.current.Response.Flush()

           ReDim buffer(buffersize) ' Clear the buffer
           dataToRead = dataToRead - length
       Else
           'prevent infinite loop if user disconnects
           dataToRead = -1
       End If
    End While

Catch ex As Exception
    ' Trap the error, if any.
    err =  "Error accessing " & filepath & " : " & ex.tostring
Finally
    If IsNothing(iStream) = False Then
        ' Close the file.
        iStream.Close()
    End If
End Try

if err<>"" then throw new exception( err )

Все, что я получаю на своей странице, - это проигрыватель HTML-видео (базовый проигрыватель Chrome), который, кажется, истекает, а кнопка PLAY становится серой. Инструмент «Сеть» в инструментах разработчика Chrome показывает, что он загружает 45 МБ и получает код ответа 200. Это говорит мне о том, что он работает нормально. Хотя я получаю второй запрос GET со статусом «Отменено»?

Если я захожу на сайт www.mywebsite.com/output/videos/myvideo.mp4, то это нормально воспроизводится в браузере, поэтому я знаю, что IIS настроен для правильной потоковой передачи видео.

Кроме того, если я изменю расположение содержимого ответа на «вложение», браузер корректно принудительно загружает видео при переходе на мою страницу ASPX, но это также не правильно воспроизводится на проигрывателе HTML. Что-то «умное» происходит с тегом VIDEO HTML5, который мешает файлу .aspx подавать видео через .net? Или мне не хватает заголовка ответа?

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос