Замена медиаресурса (http на rtmp) в MediaElementsJS на основе возможностей браузера - PullRequest
2 голосов
/ 02 февраля 2012

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

А теперь к моей проблеме. Я пытаюсь предоставить 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, но я могу ошибаться. Элемент или , созданный внутри

, по-прежнему содержит http-URL.

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

1 Ответ

4 голосов
/ 13 февраля 2012

Я только что нашел ответ на свой вопрос через систему отслеживания проблем 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. : -)

...