Встраивание проигрывателя Windows Media для всех браузеров
мы используем WMV видео на внутреннем сайте, и мы внедряем их в веб-сайты. Это довольно хорошо работает в Internet Explorer, но не в Firefox. Я нашел способы заставить его работать в Firefox, но затем он перестает работать в Internet Explorer.
мы пока не хотим использовать Silverlight, тем более что мы не можем быть уверены, что все клиенты будут работать под управлением Windows XP с установленным Windows Media Player.
есть ли какой-то универсальный Код, который вставляет WMP как в Internet Explorer, так и в Firefox, или нам нужно реализовать некоторое обнаружение пользовательских агентов и доставить разные HTML для разных браузеров?
9 ответов:
следующие работы для меня в 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) } }
Элизабет Кастро есть интересная статья по этой проблеме: Прощай Добавьте. Стоит прочитать о том, как она атаковала эту проблему, а также обрабатывать контент QuickTime.
лучший способ развернуть видео в интернете - это использовать Flash-его гораздо проще встроить в веб-страницу и будет воспроизводить более или менее любую комбинацию браузера и платформы. Единственная причина использовать проигрыватель Windows Media-Если вы потоковое содержимое, и вам нужно чрезвычайно сильное управление цифровыми правами, и даже тогда поставщики теперь начинают использовать Flash даже для них. См. iPlayer Би-би-си для превосходного примера.Я бы посоветовал вам переключиться мигать даже для внутреннего использования. Вы никогда не знаете, кто будет нуждаться в доступе к нему в будущем, и это даст вам наилучшую возможную совместимость в будущем.
редактировать - 20 марта 2013 года. Интересно, как эти старые вопросы всплывают время от времени! Как изменился мир сегодня и каким устаревшим все это кажется. Я бы ни в коем случае не рекомендовал маршрут Flash only сегодня - лучшей практикой в эти дни, вероятно, было бы использовать HTML 5 для встраивания кодированного видео H264 с резервным вариантом Flash как описано здесь: http://diveintohtml5.info/video.html
вы можете использовать условные комментарии, чтобы заставить IE и Firefox делать разные вещи
<![if !IE]> <p> Firefox only code</p> <![endif]> <!--[if IE]> <p>Internet Explorer only code</p> <![endif]-->сами браузеры будут игнорировать код, который не предназначен для их чтения.
кодирование флэш-видео на самом деле очень легко с ffmpeg. Вы можете использовать одну команду для преобразования практически из любого формата видео, ffmpeg достаточно умен, чтобы понять остальное, и он будет использовать каждый процессор на вашем компьютере. Вызвать его легко:
ffmpeg -i input.avi output.flvffmpeg угадает нужный вам битрейт, но если вы хотите его указать, вы можете использовать опцию-b, поэтому
-b 500000это 500 Кбит / с например. Конечно, есть множество вариантов, но я обычно получаю хорошие результаты без много возиться. Это хорошее место для начала, если вы ищете другие варианты: видео.вам не нужен специальный веб-сервер для отображения Flash-видео. Я отлично справился, просто нажимая.flv файлы до стандартного веб-сервера, и ссылки на них с хорошим SWF-плеером, как flowplayer.
WMVs отлично, если вы можете быть уверены, что все ваши пользователи всегда будут использовать [последнюю, актуальную версию] только Windows, но даже тогда, Flash часто лучше подходит для интернета. Игрок даже очень скины и можно управлять с помощью JavaScript.
Я нашел хорошую статью о С помощью программы для работы с 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.готов вместо окне load событие чтобы сделать коды более обратно совместимыми и кроссбраузерными.
Я тестировал коды через IE 9-10, Chrome 27, Firefox 21, Opera 12 и Safari 5, на Windows 7/8.
Я нашел то, что на самом деле работает как в 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 в начальном теге объекта
Comments