Замена медиаресурса (http на rtmp) в MediaElementsJS на основе возможностей браузера

Прежде всего, если Джон Дайер читает это, большое спасибо за ваш плеер, это фантастика!:-)

А теперь к моей проблеме. Я пытаюсь предоставить MP4-видео с использованием HTML5 (iPad, iPhone, Android, Chrome Desktop) с запасным вариантом для Flash (Firefox, IE, Opera). MediaElementJS делает это нормально из коробки, за исключением того, что решение HTML5 позволяет случайным образом переходить к видео, используя HTTP, в то время как откат Flash заставляет браузер загрузить весь файл перед воспроизведением.

По этой причине я хочу использовать rtmp вместо http, когда используется резервный Flash-сервер (помимо обычного веб-сервера у нас есть Flash Media Server, готовый для обслуживания видео), поэтому я бы хотел изменить источник в этих случаях. Но я не знаю, может ли и как MediaElementJS подсказать мне, будет ли использоваться Flash. Я пробовал это:

<video autoplay controls width="800" height="600" id="video-tag" preload="auto">
  <source id="media-source-mp4" type="video/mp4" src="http://localhost/video1.mp4" />
  <object width="800" height="600" type="application/x-shockwave-flash" data="js/flashmediaelement.swf">
    <param name="movie" value="js/flashmediaelement.swf" />
    <param name="flashvars" value="controls=true&amp;autostart=true&amp;file=rtmp://localhost/video1.mp4" />
  </object>
</video>
<script type="text/javascript">$("#video-tag").mediaelementplayer({
     success: function(media, node, player) {
         if (media.pluginType != 'native') {
             media.setSrc('rtmp://localhost/video1.mp4');
             media.load();
             media.play();
         }
     }
 });</script>

Но это явно не работает. Я просмотрел код medialement.js и думаю, что медиа-элемент предоставляет атрибут pluginType, но я могу ошибаться. Элемент или , созданный внутри
, все еще содержит URL-адрес http.

Я делаю что-то не так или не могу просто выполнить то, что пытаюсь?

1 ответ

Я только что нашел ответ на свой вопрос через систему отслеживания проблем Github для MediaElementJS:

https://github.com/johndyer/mediaelement/issues/337

Хитрость заключается в добавлении "mp4:" перед именем медиа-файла в URL. Итак, в моем примере последние строки будут такими:

if (media.pluginType != 'native') {
    media.setSrc('rtmp://localhost/mp4:video1.mp4'); // NOTE the "mp4:" prefix
    media.load();
    media.play();
}

У нас это работает на Flash Media Server 3.5.:-)

Другие вопросы по тегам