2012-07-21 120 views
2

我很難嘗試從網站上的虛擬URL播放視頻。 我無法直接鏈接到視頻,因爲實際文件未位於網絡可訪問的根目錄下的任何位置。而且,虛擬路徑實際上是一個HTTP處理程序(ASP.Net「ASHX」),用於額外的權限檢查等。從虛擬URL播放視頻文件

我試圖建立視頻連接(使用JWPlayer,但沒有得到那點), 的ASHX處理程序我在開始時被簡單地傳輸文件使用HTTP標頭下載, :content-disposition: attachment; filename=example.mp4

當我在瀏覽直接鏈接.mp4文件與虛擬鏈接之間比較瀏覽器(Chrome 20.0.1132.57)的行爲時 - 我注意到直接鏈接會在小型嵌入式視頻播放器中打開,其中as虛擬鏈接僅下載文件。

我已經嘗試(並失敗)捕獲HTTP頭的區別(使用Fiddler)併爲視頻編寫一個特殊的ASHX - 這將發送與IIS完全相同的響應(沒有任何特定的mp4配置,甚至沒有一個啞劇式)。 我似乎無法像直接鏈接那樣從虛擬網址中打開視頻,即使我模擬了所有標題(至少,據我瞭解)。

我試圖發出正確Content-Type & Content-Length,使用Accept-Ranges & Content-Range標頭,甚至試圖模仿兩相請求時第一個不具有在Acceptvideo/mp4*/*(我也嘗試只發送1個字節在第一個響應/在兩個響應上發送整個視頻)。 (當我說所有這些值是「正確的」,我的意思是它們與我在Fiddler中捕獲的工作響應相同...)

請問,有人可以解釋什麼觸發瀏覽器將文件視爲視頻? 我需要指定/省略哪些標頭? (除了省略當然content-disposition: attachment ...)

回答

2

原來的主要問題是與JWPlayer的嵌入代碼來執行。

當指向視頻的URL不包含可識別的視頻擴展名時 - 播放器不知道該怎麼做 - 因此它需要明確的定義。

這裏是JWPlayer一個正常運作的嵌入代碼: (注意的'provider':'video'明確規範)

<video id="jwplayer_placeholder" 
     src="http://localhost/mysite/SecuredFile.ashx?File=1234" 
     height="270" 
     width="480"> 
</video> 
<script type="text/javascript"> 


    jwplayer("jwplayer_placeholder").setup(              
    { 
    modes: 
    [ 
     { type: "flash", src: http://localhost/mysite/jwplayer/player.swf" }, 
     { type: 'html5' }, 
     { type: 'download' } 
    ], 
    'provider':'video' 
    }); 
</script> 

希望這可以幫助別人...