2013-03-22 4 views
1

Я пытаюсь работать с потоком rtmp. Я почти тот же код предложил hereRTMP потоковое воспроизведение

<html> 
    <head> 
    <script src="me/build/jquery.js"></script> 
    <script src="me/build/mediaelement-and-player.js"></script> 
    <link rel="stylesheet" href="me/build/mediaelementplayer.min.css" /></code> 
    </head> 
    <body> 

<video> 
    <source src="000109f6004b00a6004af03676235daa" type="video/rtmp"> 
</video> 
<script> 
$('video').mediaelementplayer({flashStreamer:"rtmp://thinkbuntu:1935/flvplayback/000109f6004b00a6004af03676235daa"}); 
</script> 

    </body> 
</html> 

В то время как rtmp://thinkbuntu:1935/flvplayback является URL локального rtmpserver и «000109f6004b00a6004af03676235daa» является mp4 видео. Я знаю, что локальный сервер работает, потому что я могу сбросить его через rtmpdump, а также с помощью jwplayer. Я могу правильно воспроизвести видео. С медиальным использованием flv, webm, ogv не работают ни.

Я получаю эту ошибку в Firefox (без ошибок на всех в Chrome):

Specified "type" attribute of "video/rtmp" is not supported. Load of media resource 000109f6004b00a6004af03676235daa failed.

Настройка его с помощью атрибута JSon терпит неудачу таким же образом.

Я также пробовал этот подход Replacing media source (http with rtmp) in MediaElementsJS based on browser capabilities, но он тоже не работает.

Я что-то не так?

ответ

1

У меня почти такая же установка, и мои работы. Не уверен, требуется ли какой-либо из атрибутов, но у меня есть некоторые из тегов видео.

(FYI, я предполагаю, что дополнительный </code> тег только из вашей вставки в SO?)

<video width="300" height="240" controls="controls" preload="none" id="stream"> 
     <source src="7901e75800f700d700437a45351f0214" type="video/rtmp"> 
    </video> 

    <script type="text/javascript"> 
     $('#stream').mediaelementplayer({ 
      flashStreamer: "rtmp://170.93.143.150/rtplive/000109f6004b00a6004af03676235daa", 
      plugins: ['flash', 'silverlight'], 
      alwaysShowControls: false, 
      success: function (mediaElement, domObject) { 
       if (mediaElement.pluginType == 'flash') { 
        mediaElement.play(); 
       } 
      }, 
     }); 
    </script> 
+0

является этот поток ключ «000109f6004b00a6004af03676235daa»? если да, то чем вы это видите? 7901e75800f700d700437a45351f0214 "? –

0

Нам пришлось порт нюхать RTMP трафика, чтобы точно определить, что браузер ведет переговоры поскольку URL RTMP однозначно интерпретируется: часть URL-адреса идентифицирует конечную точку службы потоковой передачи, а остальная часть идентифицирует ресурс потока, где-то между ними находится формат файла, за которым следует двоеточие. Если вы не знаете конфигурацию сервера RTMP, вы не можете указать, где в URL-адресе заканчивается конечная точка службы и начинается поток. Это не привело нас к разочарованию, поскольку мы не знали настройки сервера.

В исходном теге мы помещаем полный RTMP-URL в качестве атрибута «src» (протокол, конечная точка службы, поток и формат файла - все, весь shebang), а в свойстве flashStreamer мы идентифицировали услугу только конечная точка (все до, но не включая формат файла). После многих экспериментов это была единственная успешная комбинация свойств.

+0

Джефф, пожалуйста, укажите пример !!! – Ranhot

1

в вашем случае вы должны добавить префикс «mp4:» внутри видеотега

<video width="360" height="203" id="player1" src="mp4:sample" type="video/rtmp" controls="controls"></video> 

<script>$('video').mediaelementplayer({flashStreamer:"rtmp://localhost/vod"});</script>