2008-08-01 5 views
52

Мы используем видеоролики WMV на внутреннем сайте, и мы внедряем их на веб-сайты. Это хорошо работает в Internet Explorer, но не в Firefox. Я нашел способы заставить его работать в Firefox, но потом он перестает работать в Internet Explorer.Внедрение Windows Media Player для всех браузеров

Мы пока не хотим использовать Silverlight, тем более что мы не можем быть уверены, что все клиенты будут работать под управлением Windows XP с установленным проигрывателем Windows Media.

Есть ли какой-то универсальный код, который встраивает WMP в Internet Explorer и Firefox, или нам нужно реализовать некоторые обнаружение агента пользователя и предоставить разные HTML-коды для разных браузеров?

+0

Решение для кросс-браузера, которое всегда работает ... Как передавать музыку или аудио с вашего сайта: http://nunzioweb.com/streaming_audio-example.htm – 2010-01-24 20:17:45

ответ

41

Следующие работы для меня в Firefox и Internet Explorer:

<object id="mediaplayer" classid="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#version=5,1,52,701" standby="loading microsoft windows media player components..." type="application/x-oleobject" width="320" height="310"> 
<param name="filename" value="./test.wmv"> 
    <param name="animationatstart" value="true"> 
    <param name="transparentatstart" value="true"> 
    <param name="autostart" value="true"> 
    <param name="showcontrols" value="true"> 
    <param name="ShowStatusBar" value="true"> 
    <param name="windowlessvideo" value="true"> 
    <embed src="./test.wmv" autostart="true" showcontrols="true" showstatusbar="1" bgcolor="white" width="320" height="310"> 
</object> 
5

Вы можете использовать условные комментарии, чтобы получить IE и Firefox, чтобы делать разные вещи

<![if !IE]> 
<p> Firefox only code</p> 
<![endif]> 

<!--[if IE]> 
<p>Internet Explorer only code</p> 
<![endif]--> 

браузеры сами игнорируют код, который не предназначен для них, чтобы читать.

6

Лучший способ развернуть видео в Интернете - это использовать Flash - гораздо проще внедрить его на веб-страницу и играть в более или менее любую комбинацию браузера и платформы. Единственная причина использовать проигрыватель Windows Media - это потоковое содержимое, и вам требуется чрезвычайно сильное управление цифровыми правами, и даже тогда провайдеры теперь начинают использовать Flash даже для них. См. IPlayer BBC для превосходного примера.

Я предлагаю вам переключиться на Flash даже для внутреннего использования. Вы никогда не знаете, кому понадобится доступ к нему в будущем, и это даст вам наилучшую возможную совместимость в будущем.

EDIT - 20 марта 2013 года. Интересно, как возникают эти старые вопросы время от времени! Как отличается мир сегодня и как это относится к этому. Сегодня я бы не рекомендовал использовать только флеш-маршрут любыми способами. Лучшей практикой в ​​наши дни было бы, вероятно, использовать HTML 5 для встраивания видео в формате H264 с резервностью Flash, как описано здесь: http://diveintohtml5.info/video.html

+0

id говорят, что это наивный комментарий. IPlayer легко сочетается с другие продукты во многом потому, что их «DRM» - это просто случай разработки, где кто-то через GeoIP. Flash повезло, что у него нет конкуренции со своим третьим языком программирования скорости и ошибочным временем выполнения, слишком субъективным, вопрос заключался в том, как встраивать WMP во все браузеры ... что делает флешка с этим? – Matt 2009-11-29 00:13:07

+0

Это альтернативный подход - что наивно предлагать альтернативы? – Polsonby 2009-12-01 13:43:24

+0

Не может быть правдой больше, теперь у нас есть HTML5. – 2012-05-25 16:48:57

4

Кодирование флеш-видео на самом деле очень просто с ffmpeg. Вы можете использовать одну команду для конвертирования практически из любого видеоформата, ffmpeg достаточно умен, чтобы понять остальное, и он будет использовать каждый процессор на вашем компьютере. Вызов это легко:

ffmpeg -i input.avi output.flv 

FFmpeg догадается с битрейтом вы хотите, но если вы хотите, чтобы указать один, вы можете использовать опцию -b, так -b 500000 является 500 кб, например. Конечно, есть тонна вариантов, но я обычно получаю хорошие результаты без особого труда. Это хорошее место для начала, если вы ищете дополнительные опции: video options.

Для отображения флеш-ролика вам не нужен специальный веб-сервер. Я отлично справился, просто нажав файлы .flv до стандартного веб-сервера и связавшись с ними с хорошим swf-плеером, например flowplayer.

WMVs прекрасно, если вы можете быть уверены, что все ваши пользователи будут всегда использовать только [последнюю, последнюю версию] Windows, но даже тогда Flash часто лучше подходит для Интернета. Плеер даже чрезвычайно доступен для скинов и может управляться с помощью javascript.

20

Могу ли я предложить jQuery Media Plugin?Предоставляет встроенный код для всех видов видео, а не только для WMV и обнаружения браузера, сохраняя все эти беспорядочные операторы switch/case из ваших шаблонов.

7

У Элизабет Кастро есть интересная статья по этой проблеме: Bye Bye Embed. Стоит прочитать, как она напала на эту проблему, а также на обработку содержимого QuickTime.

8

Используйте следующее. Он работает в Firefox и Internet Explorer.

 <object id="MediaPlayer1" width="690" height="500" classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" 
      codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" 
      standby="Loading Microsoft® Windows® Media Player components..." type="application/x-oleobject" 
      > 
      <param name="FileName" value='<%= GetSource() %>' /> 
      <param name="AutoStart" value="True" /> 
      <param name="DefaultFrame" value="mainFrame" /> 
      <param name="ShowStatusBar" value="0" /> 
      <param name="ShowPositionControls" value="0" /> 
      <param name="showcontrols" value="0" /> 
      <param name="ShowAudioControls" value="0" /> 
      <param name="ShowTracker" value="0" /> 
      <param name="EnablePositionControls" value="0" /> 


      <!-- BEGIN PLUG-IN HTML FOR FIREFOX--> 
      <embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" 
       src='<%= GetSource() %>' align="middle" width="600" height="500" defaultframe="rightFrame" 
       id="MediaPlayer2" /> 

И в JavaScript,

function playVideo() { 
     try{ 
       if(-1 != navigator.userAgent.indexOf("MSIE")) 
       { 
         var obj = document.getElementById("MediaPlayer1"); 
          obj.Play(); 

       } 
       else 
       { 
          var player = document.getElementById("MediaPlayer2"); 
          player.controls.play(); 

       } 
      } 
     catch(error) { 
      alert(error) 
     } 


     } 
3

Я нашел то, что на самом деле работает в обоих FireFox и IE, на сайте Элизабет Кастро (спасибо ссылки на этом сайте) - я попытался все другие версии здесь, но не может заставить их работать в обоих браузерах

<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" 
    id="player" width="320" height="260"> 
    <param name="url" 
    value="http://www.sarahsnotecards.com/catalunyalive/fishstore.wmv" /> 
    <param name="src" 
    value="http://www.sarahsnotecards.com/catalunyalive/fishstore.wmv" /> 
    <param name="showcontrols" value="true" /> 
    <param name="autostart" value="true" /> 
    <!--[if !IE]>--> 
    <object type="video/x-ms-wmv" 
    data="http://www.sarahsnotecards.com/catalunyalive/fishstore.wmv" 
    width="320" height="260"> 
    <param name="src" 
     value="http://www.sarahsnotecards.com/catalunyalive/fishstore.wmv" /> 
    <param name="autostart" value="true" /> 
    <param name="controller" value="true" /> 
    </object> 
    <!--<![endif]--> 
</object> 

Проверить ее сайт из: http://www.alistapart.com/articles/byebyeembed/ и версия с ClassID в начальном теге объекта

4

Я нашел хорошую статью о using the WMP with Firefox на MSDN.

Основываясь на статье MSDN и после нескольких проб и ошибок, я нашел использование JavaScript лучше, чем использование условных комментариев или вложенных тегов «EMBED/OBJECT».

Я сделал функцию JS, которые генерируют объект WMP на основе заданных аргументов:

<script type="text/javascript"> 
    function generateWindowsMediaPlayer(
     holderId, // String 
     height,  // Number 
     width,  // Number 
     videoUrl // String 
     // you can declare more arguments for more flexibility 
     ) { 
     var holder = document.getElementById(holderId); 

     var player = '<object '; 
     player += 'height="' + height.toString() + '" '; 
     player += 'width="' + width.toString() + '" '; 

     videoUrl = encodeURI(videoUrl); // Encode for special characters 

     if (navigator.userAgent.indexOf("MSIE") < 0) { 
      // Chrome, Firefox, Opera, Safari 
      //player += 'type="application/x-ms-wmp" '; //Old Edition 
      player += 'type="video/x-ms-wmp" '; //New Edition, suggested by MNRSullivan (Read Comments) 
      player += 'data="' + videoUrl + '" >'; 
     } 
     else { 
      // Internet Explorer 
      player += 'classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" >'; 
      player += '<param name="url" value="' + videoUrl + '" />'; 
     } 

     player += '<param name="autoStart" value="false" />'; 
     player += '<param name="playCount" value="1" />'; 
     player += '</object>'; 

     holder.innerHTML = player; 
    } 
</script> 

Затем я использовал эту функцию, написав несколько пометок и встроенный JS, как эти:

<div id='wmpHolder'></div> 

<script type="text/javascript">   
    window.addEventListener('load', generateWindowsMediaPlayer('wmpHolder', 240, 320, 'http://mysite.com/path/video.ext')); 
</script> 

Вы можете использовать jQuery.ready вместо событие загрузки окна to ma король кодирует более обратную совместимость и кросс-браузер.

Я тестировал коды через IE 9-10, Chrome 27, Firefox 21, Opera 12 и Safari 5, в Windows 7/8.

Смежные вопросы