Видео больше не потоковое с mediaelement.js в Хроме

за последние несколько дней мы заметили, что наши видео перестали транслировать с помощью MediaElement.js Version 2.11.3 и Chrome Version 50.0.2661.94 (64-bit)

видео по-прежнему воспроизводятся в Firefox и Safari без проблем.

ошибка, которую мы получаем в инструментах Chrome Dev:

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

3 ответов


это потому, что с Chrome 50 play () вызовите <video> или <audio> элемент возвращает обещание. Если воспроизведение успешно, обещание выполняется, а если воспроизведение не удается, обещание отклоняется вместе с сообщением об ошибке, объясняющим сбой.

вы можете найти некоторые примеры и дополнительную информацию здесь:https://developers.google.com/web/updates/2016/03/play-returns-promise?hl=en


Я мог бы повторить эту проблему с Chromium 51. Однако, похоже, эта проблема больше не возникает с Chrome 53.

к сожалению, я не смог найти легко читаемое подтверждение в интернете, что это была подтвержденная ошибка для Chromium/Chrome, которая была исправлена, но просто указывает, что несколько человек сообщили о проблемах с версиями Chrome/Chromium. например, здесь видео больше не потоковое с mediaelement.js в Chrome где Google Chrome Разработчик cwilso указывает на этот внутренний список рассылки chromium, но содержание которого довольно загадочно без дальнейших исследований. Похоже, это связано с коммутатором ENABLE_BROWSER_CDMS и реализацией EME для поддержки DRM, которая не работала так, как предполагалось. https://groups.google.com/a/chromium.org/forum/#!topic/chromium-reviews/Qi4dLcKjcCM


Это также может быть проблемой CORS. Set media.crossOrigin = 'anonymous'; и убедитесь, что ответ сервера заголовок Access-Control-Allow-Origin: *. Или вместо подстановочного знака звездочка укажите домен веб-сайта, которому разрешен доступ к видео с сервера.