我正在嘗試創建一個包含HTML5 VIDEO標記的測試頁面,該標記將允許播放轉換後的視頻。我成功地能夠轉換視頻並將它們本地存儲在服務器上,但我希望能夠通過另一個.aspx頁面流式傳輸所有視頻。通過.NET流式傳輸MP4視頻HTML5
假設我有一個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 Developer工具中的網絡工具顯示它正在下載45mb並獲得200響應代碼。這表明它工作正常。雖然我收到了狀態爲「已取消」的第二個GET請求?
如果我訪問www.mywebsite.com/output/videos/myvideo.mp4,那麼這在瀏覽器中播放良好,所以我知道IIS配置爲正確流式傳輸視頻。
此外,如果我將響應內容處置更改爲「附件」,則瀏覽器在進入我的ASPX頁面時正確強制下載視頻,但這也無法在HTML播放器上正確播放。 HTML5 VIDEO標籤有沒有什麼「聰明」的東西可以阻止.aspx文件通過.net提供視頻?或者我錯過了一個響應標題?
謝謝!
繼續調查,仍然沒有得到關於這個 – JLo 2013-06-06 10:05:34