Incrustar Windows Media Player para todos los navegadores


Estamos utilizando WMV videos en un sitio interno, y los estamos incrustando en sitios web. Esto funciona bastante bien en Internet Explorer, pero no en Firefox. He encontrado maneras de hacer que funcione en Firefox, pero luego deja de funcionar en Internet Explorer.

No queremos usar Silverlight todavía, especialmente porque no podemos estar seguros de que todos los clientes ejecutarán Windows XP con Windows Media Player instalado.

¿ Hay algún tipo de Código Universal que incorpore WMP en Internet Explorer y Firefox, o tenemos que implementar alguna detección de agente de usuario y entregar diferentes HTML para diferentes navegadores?

Author: Peter Featherstone, 2008-08-01

9 answers

Lo siguiente funciona para mí en Firefox e 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>
 44
Author: Grant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-14 11:45:15

¿Puedo sugerir el Plugin jQuery Media? Proporciona código de inserción para todo tipo de video, no solo WMV y hace detección de navegador, manteniendo todas esas instrucciones de interruptor/caso desordenadas fuera de sus plantillas.

 20
Author: Jake McGraw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-08 18:29:13

Utilice lo siguiente. Funciona en Firefox e 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" />

Y en 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)
        } 


        }
 9
Author: Peter Mortensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-08 16:23:19

Elizabeth Castro tiene un artículo interesante sobre este problema: Bye Bye Embed . Vale la pena leer cómo atacó este problema, así como el manejo de contenido QuickTime.

 7
Author: Jim Nelson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-10 19:52:28

La mejor manera de implementar video en la web es usando Flash - es mucho más fácil de incrustar de forma limpia en una página web y se reproducirá en más o menos cualquier combinación de navegador y plataforma. La única razón para usar Windows Media Player es si está transmitiendo contenido y necesita una administración de derechos digitales extraordinariamente sólida, e incluso entonces los proveedores ahora están comenzando a usar Flash incluso para estos. Vea iPlayer de la BBC para un excelente ejemplo.

Sugeriría que cambies a Flash even para uso interno. Nunca se sabe quién va a necesitar acceder a él en el futuro, y esto le dará la mejor compatibilidad futura posible.

EDIT-20 de marzo de 2013. ¡Interesante cómo estas viejas preguntas resurgen de vez en cuando! Cuán diferente es el mundo hoy y cuán anticuado parece todo esto. No recomendaría una ruta solo Flash hoy por ningún medio-la mejor práctica en estos días probablemente sería usar HTML 5 para incrustar video codificado H264, con una reserva Flash como se describe aquí: http://diveintohtml5.info/video.html

 7
Author: Polsonby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-20 17:59:17

Puedes usar comentarios condicionales para que IE y Firefox hagan cosas diferentes

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

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

Los propios navegadores ignorarán el código que no está destinado a que lean.

 6
Author: Grant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-01 18:14:56

La codificación de vídeo flash es realmente muy fácil con ffmpeg. Puede usar un comando para convertir desde casi cualquier formato de video, ffmpeg es lo suficientemente inteligente como para resolver el resto, y usará todos los procesadores de su máquina. Invocarlo es fácil:

ffmpeg -i input.avi output.flv

Ffmpeg adivinar el bitrate que queremos, pero si desea especificar una, puede utilizar la opción-b, por lo que -b 500000 es 500kbps por ejemplo. Hay un montón de opciones, por supuesto, pero generalmente obtengo buenos resultados sin mucho retoque. Este es un buen lugar para comenzar si está buscando más opciones: opciones de video.

No necesita un servidor web especial para mostrar video flash. Lo he hecho bien simplemente empujando .archivos flv hasta un servidor web estándar, y enlazarlos con un buen reproductor swf, como flowplayer .

Las WMV están bien si puede estar seguro de que todos sus usuarios siempre usarán [una versión reciente y actualizada de] solo Windows, pero incluso entonces, Flash es a menudo una mejor opción para la web. El reproductor es incluso extremadamente skinnable y se puede controlar con javascript.

 4
Author: Peter Burns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-04 02:14:59

Encontré un buen artículo sobre usando el WMP con Firefox en MSDN.

Basado en el artículo de MSDN y después de hacer algunas pruebas y errores, encontré que usar JavaScript es mejor que usar comentarios condicionales o etiquetas "EMBED/OBJECT" anidadas.

Hice una función JS que genera un objeto WMP basado en argumentos dados:

<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>

Luego usé esa función escribiendo algunos markups y JS en línea como estos:

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

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

Puede utilizar jQuery.listo en lugar de evento de carga de ventana para hacer que los códigos sean más compatibles con versiones anteriores y entre navegadores.

Probé los códigos sobre IE 9-10, Chrome 27, Firefox 21, Opera 12 y Safari 5, en Windows 7/8.

 4
Author: Perseus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-01 20:40:35

He encontrado algo que realmente funciona tanto en FireFox como en IE, en el sitio de Elizabeth Castro (gracias al enlace en este sitio) - He probado todas las otras versiones aquí, pero no pude hacerlas funcionar en ambos navegadores

<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>

Echa un vistazo a su sitio: http://www.alistapart.com/articles/byebyeembed/ y la versión con el classid en la etiqueta de objeto inicial

 3
Author: Vonzy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-08 06:21:20