Frage

Wir benutzen WMV Videos auf einer internen Website und wir betten sie in Websites ein.Das funktioniert ganz gut im Internet Explorer, aber nicht in Firefox.Ich habe Möglichkeiten gefunden, es in Firefox zum Laufen zu bringen, aber dann funktioniert es im Internet Explorer nicht mehr.

Wir möchten Silverlight noch nicht verwenden, insbesondere da wir nicht sicher sein können, dass auf allen Clients Windows XP mit installiertem Windows Media Player ausgeführt wird.

Gibt es eine Art universellen Code, der WMP sowohl in Internet Explorer als auch in Firefox einbettet, oder müssen wir eine Benutzeragentenerkennung implementieren und unterschiedlichen HTML-Code für verschiedene Browser bereitstellen?

War es hilfreich?

Lösung

Folgendes funktioniert bei mir in Firefox und 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>

Andere Tipps

Darf ich das vorschlagen? jQuery-Medien-Plugin?Stellt Einbettungscode für alle Arten von Videos bereit, nicht nur für WMV, und führt eine Browsererkennung durch, sodass all diese chaotischen Switch-/Case-Anweisungen aus Ihren Vorlagen entfernt werden.

Verwenden Sie Folgendes.Es funktioniert in Firefox und 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" />

Und in 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)
        } 


        }

Elizabeth Castro hat einen interessanten Artikel zu diesem Problem: Bye Bye Embed.Es lohnt sich zu lesen, wie sie dieses Problem angegangen ist und wie sie mit QuickTime-Inhalten umgegangen ist.

Sie könnten bedingte Kommentare verwenden, um IE und Firefox dazu zu bringen, unterschiedliche Dinge zu tun

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

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

Die Browser selbst ignorieren Code, der nicht zum Lesen bestimmt ist.

Der beste Weg, Videos im Web bereitzustellen, ist die Verwendung von Flash – es lässt sich viel einfacher sauber in eine Webseite einbetten und kann auf mehr oder weniger jeder Browser- und Plattformkombination abgespielt werden.Der einzige Grund, den Windows Media Player zu verwenden, besteht darin, dass Sie Inhalte streamen und eine außerordentlich starke Verwaltung digitaler Rechte benötigen, und selbst dann beginnen Anbieter jetzt, Flash auch dafür zu verwenden.Ein hervorragendes Beispiel finden Sie im iPlayer der BBC.

Ich würde vorschlagen, dass Sie auch für den internen Gebrauch auf Flash umsteigen.Sie wissen nie, wer in Zukunft darauf zugreifen muss und erhalten so die bestmögliche Zukunftskompatibilität.

BEARBEITEN – 20. März 2013.Interessant, wie diese alten Fragen von Zeit zu Zeit wieder auftauchen!Wie anders die Welt heute ist und wie veraltet das alles erscheint.Ich würde heute auf keinen Fall eine reine Flash-Route empfehlen – die beste Vorgehensweise heutzutage wäre wahrscheinlich die Verwendung von HTML 5 zum Einbetten von H264-codierten Videos mit einem Flash-Fallback, wie hier beschrieben: http://diveintohtml5.info/video.html

Das Kodieren von Flash-Videos ist mit ffmpeg eigentlich sehr einfach.Mit einem einzigen Befehl können Sie nahezu jedes Videoformat konvertieren. ffmpeg ist intelligent genug, um den Rest herauszufinden, und es nutzt jeden Prozessor auf Ihrem Computer.Der Aufruf ist einfach:

ffmpeg -i input.avi output.flv

ffmpeg errät die gewünschte Bitrate, aber wenn Sie eine angeben möchten, können Sie die Option -b verwenden -b 500000 beträgt zum Beispiel 500 kbps.Es gibt natürlich eine Menge Möglichkeiten, aber im Allgemeinen erhalte ich gute Ergebnisse, ohne viel herumbasteln zu müssen.Dies ist ein guter Ausgangspunkt, wenn Sie nach weiteren Optionen suchen: Videooptionen.

Sie benötigen keinen speziellen Webserver, um Flash-Videos anzuzeigen.Ich habe es ganz gut hinbekommen, indem ich einfach .flv-Dateien auf einen Standard-Webserver hochgeschoben und sie mit einem guten SWF-Player verlinkt habe Flowplayer.

WMVs sind in Ordnung, wenn Sie sicher sein können, dass alle Ihre Benutzer immer nur [eine aktuelle, aktuelle Version von] Windows verwenden, aber selbst dann ist Flash oft besser für das Web geeignet.Der Player ist sogar extrem Skinbar und kann mit Javascript gesteuert werden.

Ich habe einen guten Artikel darüber gefunden Verwenden des WMP mit Firefox auf MSDN.

Basierend auf dem Artikel von MSDN und nach einigen Versuchen habe ich herausgefunden, dass die Verwendung von JavaScript besser ist als die Verwendung von bedingten Kommentaren oder verschachtelten „EMBED/OBJECT“-Tags.

Ich habe eine JS-Funktion erstellt, die ein WMP-Objekt basierend auf bestimmten Argumenten generiert:

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

Dann habe ich diese Funktion verwendet, indem ich einige Markups und Inline-JS wie diese geschrieben habe:

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

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

Sie können verwenden jQuery.ready anstatt Fensterladeereignis um die Codes abwärtskompatibel und browserübergreifend zu machen.

Ich habe die Codes über IE 9-10, Chrome 27, Firefox 21, Opera 12 und Safari 5 unter Windows 7/8 getestet.

Ich habe auf der Website von Elizabeth Castro (dank des Links auf dieser Website) etwas gefunden, das tatsächlich sowohl in FireFox als auch im IE funktioniert. Ich habe alle anderen Versionen hier ausprobiert, konnte sie jedoch nicht in beiden Browsern zum Laufen bringen

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

Schauen Sie sich ihre Website an: http://www.alistapart.com/articles/byebyeembed/ und die Version mit der Classid im anfänglichen Objekt-Tag

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top