2016-05-06 34 views
7

流在過去的幾天中,我們注意到,我們的視頻不幹使用MediaElement.js Version 2.11.3Chrome Version 50.0.2661.94 (64-bit)影片不再mediaelement.js在Chrome

影片在Firefox和Safari瀏覽器仍然發揮沒有問題流。

我們在Chrome瀏覽器開發工具收到的錯誤是:

Uncaught (in promise) DOMException: The element has no supported sources.

所呈現的頁面上的標記看起來是這樣的:

<video height="150" poster="https://xxxxxxxxxx.cloudfront.net/123423_1_thumb.jpg" preload="auto" width="200" src="" hidden-source="https://xxxxxxx.cloudfront.net/123423_1_wm.webm"> 
    <object data="flashmediaelement.swf" height="150" type="application/x-shockwave-flash" width="200"> 
    <param name="movie" value="flashmediaelement.swf"> 
    <param name="flashvars" value="controls=true&amp;file=http://s38zby1czkz3d7.cloudfront.net/123423_1_wm.mp4"> 
    </object> 
</video> 

下面是錯誤的一些圖像,使它更清楚一點:

enter image description here

下面是在控制檯中的錯誤消息:

enter image description here

+1

與三星Galaxy Tab 4上的Chrome 51.0.2704.81相同的問題 – svassr

+0

對於它的價值,我在處理混合http/https音頻源時遇到了此錯誤。我的網頁是https,但是我的資源已提供給http。在https下爲資源和頁面提供服務解決了此錯誤。我看到你的代碼中有一個http服務的mp4文件,所以這可能是問題? –

+0

這是一個CORS問題。在這裏看到我的答案:http://stackoverflow.com/a/43434754/625745 –

回答

4

這是因爲由於鉻50的播放()在調用<video><audio>元件返回一個無極。如果播放成功,Promise就會被執行,如果播放失敗,Promise將被拒絕並顯示一條錯誤消息來解釋失敗。

你可以找到一些例子和更多的信息在這裏:https://developers.google.com/web/updates/2016/03/play-returns-promise?hl=en

+0

有趣的信息。可悲的是,我認爲這與錯誤沒有多大關係。下面的答案提供了有關問題來源的確切信息,這是Chromium 50中的錯誤,而不是API更改。 – viskin

5

我可以用鉻51 複製此問題,但它似乎不適用於Chrome 53再出現這個問題

不幸的是我一直無法在互聯網上找到易於閱讀的確認,這是Chromium/Chrome已經修復的一個已確認的錯誤,但僅表明幾個人報告了Chrome/Chromium版本的問題。例如這裏 Videos no longer streaming with mediaelement.js in Chrome 谷歌Chrome開發者cwilso指向這個內部的鉻郵件列表,但其內容相當神祕,沒有進一步的研究。它似乎與一個名爲ENABLE_BROWSER_CDMS的開關和用於DRM​​支持的EME實現有關,該開發並不像它應該的那樣工作。 https://groups.google.com/a/chromium.org/forum/#!topic/chromium-reviews/Qi4dLcKjcCM

+1

Deepak,這清楚地回答了這個問題。在Chromium 50/51中,媒體元素被破壞。從Chromium 52開始,問題就解決了,上面的代碼工作。 – viskin

+0

謝謝你。 Deepak:我試圖擴展我的答案,提示我對手頭問題的瞭解。由於我無法找到官方的,易於理解的Chromium團隊的錯誤確認,並且有相當軼事的數據可以直觀地支持媒體元素在50/51版本中被打破的概念,所以當我在此首先回復我的回覆時,我有點防守。而且,是的,我確實喜歡發表評論,而不必發表回覆,但我無法做到這一點並不是我的錯。 –

+0

我仍然在Chrome 55中出現這個錯誤。如果瀏覽器無法理解文件,它似乎是一個標準錯誤。 – VectorVortec

0

它也可能是一個CORS問題。設置media.crossOrigin = 'anonymous';並確保服務器響應的標頭爲Access-Control-Allow-Origin: *。或者,不要使用星號通配符,請指定允許從服務器訪問視頻的網站域。