program tip

모든 브라우저에 Windows Media Player 포함

radiobox 2020. 12. 30. 08:00
반응형

모든 브라우저에 Windows Media Player 포함


내부 사이트에서 WMV 비디오를 사용 하고 있으며 웹 사이트에 포함하고 있습니다. 이것은 Internet Explorer에서는 잘 작동하지만 Firefox에서는 작동하지 않습니다. Firefox에서 작동하도록하는 방법을 찾았지만 Internet Explorer에서 작동하지 않습니다.

특히 모든 클라이언트가 Windows Media Player가 설치된 Windows XP를 실행하는지 확인할 수 없기 때문에 아직 Silverlight를 사용하고 싶지 않습니다.

Internet Explorer와 Firefox 모두에 WMP를 포함하는 일종의 범용 코드가 있습니까? 아니면 사용자 에이전트 감지를 구현하고 다른 브라우저에 대해 다른 HTML을 제공해야합니까?


다음은 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>

jQuery Media Plugin을 제안해도 될까요? WMV뿐만 아니라 모든 종류의 비디오에 대한 포함 코드를 제공하고 브라우저 감지를 수행하여 모든 지저분한 switch / case 문을 템플릿에서 제거합니다.


다음을 사용하십시오. 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)
        } 


        }

Elizabeth Castro는이 문제에 대한 흥미로운 기사를 가지고 있습니다 : Bye Bye Embed . 그녀가이 문제를 어떻게 공격했는지와 QuickTime 콘텐츠를 처리하는 방법에 대해 읽어 볼 가치가 있습니다.


조건부 주석을 사용하여 IE와 Firefox가 다른 작업을 수행하도록 할 수 있습니다.

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

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

브라우저 자체는 읽을 수없는 코드를 무시합니다.


웹에 비디오를 배포하는 가장 좋은 방법은 Flash를 사용하는 것입니다. 웹 페이지에 깔끔하게 삽입하는 것이 훨씬 더 쉽고 모든 브라우저 및 플랫폼 조합에서 재생됩니다. Windows Media Player를 사용하는 유일한 이유는 콘텐츠를 스트리밍하고 매우 강력한 디지털 권한 관리가 필요한 경우에도 공급자가 이러한 경우에도 Flash를 사용하기 시작하기 때문입니다. 좋은 예는 BBC의 iPlayer를 참조하십시오.

내부 용으로도 Flash로 전환하는 것이 좋습니다. 미래에 누가 액세스해야하는지 알 수 없으며,이를 통해 향후 최상의 호환성을 얻을 수 있습니다.

편집-2013 년 3 월 20 일. 이러한 오래된 질문이 때때로 어떻게 다시 나타나는지 흥미 롭습니다! 오늘날 세상은 얼마나 다른지, 그리고이 모든 것이 얼마나 연대인지. 오늘은 Flash 전용 경로를 권장하지 않습니다. 요즘 가장 좋은 방법은 HTML 5를 사용하여 H264로 인코딩 된 비디오를 포함하는 것입니다. http://diveintohtml5.info/video.html


플래시 비디오 인코딩은 실제로 ffmpeg로 매우 쉽습니다. 하나의 명령을 사용하여 거의 모든 비디오 형식에서 변환 할 수 있습니다. ffmpeg는 나머지를 알아낼만큼 똑똑하며 컴퓨터의 모든 프로세서를 사용합니다. 호출하는 것은 쉽습니다.

ffmpeg -i input.avi output.flv

ffmpeg는 원하는 비트 전송률을 추측하지만 지정하려는 경우 -b 옵션을 사용할 수 있습니다 -b 500000. 예를 들어 500kbps도 마찬가지 입니다. 물론 많은 옵션이 있지만 일반적으로 많은 수정없이 좋은 결과를 얻습니다. 더 많은 옵션을 찾고있는 경우 시작하기에 좋은 곳입니다 : 동영상 옵션 .

플래시 비디오를 표시하기 위해 특별한 웹 서버가 필요하지 않습니다. .flv 파일을 표준 웹 서버로 밀어 넣고 flowplayer 와 같은 좋은 swf 플레이어로 연결하는 것만으로도 괜찮 았습니다 .

WMV는 모든 사용자가 항상 [최신의 최신 버전의 Windows] 만 사용하도록 할 수 있다면 괜찮습니다.하지만 그런 경우에도 Flash는 웹에 더 적합합니다. 플레이어는 극도로 스키닝 가능하며 자바 스크립트로 제어 할 수 있습니다.


MSDN 에서 Firefox와 함께 WMP를 사용하는 방법 에 대한 좋은 기사를 찾았습니다 .

MSDN의 기사를 기반으로 몇 번의 시행 착오를 거쳐 JavaScript를 사용하는 것이 조건부 주석이나 중첩 된 "EMBED / OBJECT"태그를 사용하는 것보다 낫다는 것을 알았습니다.

주어진 인수를 기반으로 WMP 개체를 생성하는 JS 함수를 만들었습니다.

<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사용 하여 코드를 더 이전 버전과 호환되고 브라우저 간 호환되도록 만들 수 있습니다 .

Windows 7/8에서 IE 9-10, Chrome 27, Firefox 21, Opera 12 및 Safari 5에서 코드를 테스트했습니다.


I have found something that Actually works in both FireFox and IE, on Elizabeth Castro's site (thanks to the link on this site) - I have tried all other versions here, but could not make them work in both the browsers

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

Check her site out: http://www.alistapart.com/articles/byebyeembed/ and the version with the classid in the initial object tag

ReferenceURL : https://stackoverflow.com/questions/164/embedding-windows-media-player-for-all-browsers

반응형