Streaming wideo MP4 za pośrednictwem .NET HTML5

Próbuję utworzyć stronę testową, która będzie zawierała tag V5 HTML5, który umożliwi odtwarzanie przekonwertowanych filmów. Z powodzeniem mogę konwertować filmy i przechowywać je lokalnie na serwerze, ale chcę mieć możliwość przesyłania strumieniowego wszystkich filmów za pośrednictwem innej strony .aspx.

Zakładając, że mam stronę player.aspx, która będzie zawierała kod HTML i stronę getvideo.aspx, które nic nie zrobią, z wyjątkiem dostarczenia binarnego pliku wideo, pomyślałem, że poniższy kod będzie działał dobrze na mojej stronie 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>  

Strona getvideo.aspx zawiera następujący kod 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 )

Na wyjściu strony dostaję tylko odtwarzacz wideo HTML (podstawowy odtwarzacz Chrome), który wydaje się wygasać, a przycisk PLAY zmienia kolor na szary. Narzędzie Sieć w narzędziach dla programistów Chrome pokazuje, że pobiera 45 MB i otrzymuje kod 200 odpowiedzi. Sugeruje to, że działa dobrze. Chociaż otrzymuję drugie żądanie GET ze statusem „Anulowane”?

Jeśli odwiedzę stronę www.mywebsite.com/output/videos/myvideo.mp4, gra będzie działać poprawnie w przeglądarce, więc wiem, że IIS jest skonfigurowany do prawidłowego przesyłania strumieniowego wideo.

Także, jeśli zmienię ustawienie treści odpowiedzi na „załącznik”, przeglądarka poprawnie wymusza pobieranie wideo podczas przechodzenia na moją stronę ASPX, ale to również nie odtwarza poprawnie na odtwarzaczu HTML. Czy jest coś „mądrego” w tagu VIDEO HTML5, który powstrzymuje plik .aspx przed serwowaniem wideo przez .net? Czy brakuje mi nagłówka odpowiedzi?

Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion