문제

우리는 사용하고 있습니다 WMV 내부 사이트에 있는 비디오를 웹사이트에 삽입하고 있습니다.이는 Internet Explorer에서는 잘 작동하지만 Firefox에서는 작동하지 않습니다.Firefox에서 작동하도록 하는 방법을 찾았지만 Internet Explorer에서는 작동이 중지됩니다.

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

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 미디어 플러그인?WMV뿐만 아니라 모든 종류의 비디오에 대한 포함 코드를 제공하고 브라우저 감지를 수행하여 지저분한 스위치/케이스 문을 템플릿에서 모두 제거합니다.

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

그리고 자바스크립트에서는

    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는 이 문제에 대한 흥미로운 기사를 가지고 있습니다: 안녕 안녕 삽입.그녀가 어떻게 이 문제를 해결했는지, 그리고 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 인코딩된 비디오를 삽입하고 여기에 설명된 Flash 대체 기능을 사용하는 것입니다. http://diveintohtml5.info/video.html

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

ffmpeg -i input.avi output.flv

ffmpeg는 원하는 비트 전송률을 추측하지만, 이를 지정하려면 -b 옵션을 사용할 수 있습니다. -b 500000 예를 들어 500kbps입니다.물론 수많은 옵션이 있지만 일반적으로 별로 손댈 필요 없이 좋은 결과를 얻습니다.더 많은 옵션을 찾고 있다면 여기에서 시작하는 것이 좋습니다. 비디오 옵션.

플래시 비디오를 표시하기 위해 특별한 웹 서버가 필요하지 않습니다.나는 단순히 .flv 파일을 표준 웹 서버로 푸시하고 좋은 swf 플레이어로 연결함으로써 잘 해냈습니다. 플로우플레이어.

모든 사용자가 항상 Windows(최신 최신 버전)만 사용할 것이라고 확신할 수 있다면 WMV는 괜찮지만, 그럼에도 불구하고 Flash가 웹에 더 적합한 경우가 많습니다.플레이어는 매우 스킨 가능하며 자바스크립트로 제어할 수 있습니다.

에 관한 좋은 기사를 찾았습니다. Firefox에서 WMP 사용 MSDN에서.

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

주어진 인수를 기반으로 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를 통해 코드를 테스트했습니다.

Elizabeth Castro의 사이트(이 사이트의 링크 덕분에)에서 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가 있는 버전

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top