media
  • windows-media-player
  • multimedia
  • 2009-09-03 98 views 2 likes 
    2

    我在網頁中使用Windows Media Player。我安裝了版本11,這是我現在正在測試的版本。該播放器嵌入在網頁上使用此HTML:Window Media Player在網頁上發出兩個音頻請求

    <OBJECT id='MS_mediaPlayer' width="400" height="45" classid='CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6' 
        codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701' 
        standby='Loading Microsoft Windows Media Player components...' type='application/x-oleobject'> 
        <param name='autoStart' value="false"> 
        <param name='uiMode' value="invisible"> 
        <param name='loop' value="false"> 
    </OBJECT> 
    

    我打電話的JavaScript:

    MS_mediaPlayer.URL = "SomeAudioFile.mp3" 
        MS_mediaPlayer.controls.play(); 
    

    當我看着Fiddler我可以看到玩家實際下載「SomeAudioFile.mp3」兩次。有一些設置我錯了嗎?我試圖將「autoPlay」設置爲true,並避免調用「play()」。得到了相同的結果 - 兩次下載。

    更新: 第一個請求的用戶代理是「Windows-Media-Player/11.0.5721.5268」。第二個是「Mozilla/4.0(兼容; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)「。看起來瀏覽器第二次運行相同的請求。不知道爲什麼

    任何想法?

    UPDATE(10年4月1日):
    仍然沒有解決方案。

    • 我徹底調試了JS,只有一個調用MediaPlayer.URL='.....'來設置音頻文件。沒有別的東西會觸發媒體播放器加載文件,也沒有其他地方引用頁面上的音頻文件。
    • 另一個有趣的事實是,當我在我的開發Web服務器上本地運行瀏覽器時,不會發生這種情況(雙音頻加載)。但是對同一個Web服務器的其他遠程請求會生成雙音頻加載。
    • 我相信我消除了與特定的IE版本或媒體播放器版本的任何關聯。這發生在IE6-8和WM9-12中
    +0

    我直接從媒體播放器應用程序(通過網絡)打開WAV文件時看到相同的問題。它會加載文件2或3次(由Fiddler觀察)。由於某些原因,當文件具有MP3擴展名時不會發生這種情況。 – 2010-04-05 20:29:52

    +0

    我終於找到了一個解決方案(實際上是解決方法):簡單地刪除第一個請求。對於我來說,第一個請求帶有一個'User-Agent:Windows-Media-Player/12.x.y.z',第二個請求將以'User-Agent:NSPlayer/12.x.y.z WMFSDK/12.x.y.z'的形式出現。第二個似乎是唯一重要的。我有PHP完全忽略了第一個請求,並且一切都很好。因人而異。我認爲這是內部WMP行爲,所以我們無法阻止它,只能緩解它。 – ken 2013-08-13 16:11:03

    回答

    1

    您必須仔細檢查請求。有時,您會看到媒體播放器發出兩個請求,因爲它們使用HTTP範圍請求(而不是請求整個文件)。尋找「範圍」請求標題。同時檢查以確保這兩個請求都不使用HEAD方法,因爲它只是檢索服務器的響應標頭。

    另外,如果其中任何一個會話在Fiddler會話列表中顯示爲中止(「不輸入圖標,帶有通過它的紅色圓圈」),則意味着客戶端在中間關閉了請求。如果組件開始下載,放棄它,然後重新啓動它,可能會發生這種情況。爲什麼它可以這樣做,我不確定。

    您可能會嘗試查看使用WMP的其他網站並查看您是否看到兩個請求。

    +0

    這兩個請求都是成功的,都具有相同的大小(這是整個音頻文件的大小)。兩個GET請求。我發現一個區別。第一個請求的用戶代理是「Windows-Media-Player/11.0.5721.5268」。第二個是「Mozilla/4.0(兼容; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)「。 看起來像瀏覽器第二次運行相同的請求。不知道爲什麼 – 2009-09-04 16:17:35

    +0

    使用您提供的HTML,瀏覽器本身從不會看到音頻文件的URL。所以它要麼在HTML的不同部分引用,要麼WMP導致瀏覽器以其他方式提出請求。 – EricLaw 2009-09-04 20:17:53

    +0

    除了WMP本身,HTML頁面上沒有任何內容請求音頻文件:( – 2009-09-04 21:06:50

    0

    請參閱本文的下半部分,它解釋了第一個請求是Windows Media Player「嗅探」以確定文件類型,而第二個請求是真正的請求。

    https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/226315f4-1271-4694-9a0d-68da9a1414cb/media-player-dlna-request-does-not-carry-authorization-header?forum=mediafoundationdevelopment

    仍在研究如何使用通用的處理程序,不公開的文件名信息的此位....

    相關問題