编辑:这个问题写于2008年,就像3年前的互联网时代一样。如果这个问题仍然与您的环境有关,请接受我的慰问。其他所有人都应转换为浏览器支持的格式(如果需要Internet Explorer,则为H.264;如果不需要,则为AV1,VP8 / VP9),并使用<video>元素。
我们在内部站点上使用WMV视频,并将其嵌入到网站中。这在Internet Explorer上效果很好,但在Firefox上效果不佳。我已经找到了使其在Firefox中运行的方法,但是随后它在Internet Explorer中停止了工作。
我们暂时还不想使用Silverlight,尤其是因为我们不能确定所有客户端都将在安装Windows Media Player的情况下运行Windows XP。
是否存在将WMP嵌入到Internet Explorer和Firefox中的某种通用代码,还是我们需要实现一些用户代理检测并为不同的浏览器提供不同的HTML?
以下内容适用于Firefox和Internet Explorer:
1 2 3 4 5 6 7 8 9 10
| <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">
</object> |
我可以建议使用jQuery Media Plugin吗?为所有类型的视频提供嵌入代码,而不仅仅是WMV,并提供浏览器检测功能,将所有凌乱的switch / case语句保留在模板之外。
使用以下内容。它可以在Firefox和Internet Explorer中运行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <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中,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 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内容。
在Web上部署视频的最佳方法是使用Flash-干净地嵌入到网页中将更容易,并且可以或多或少地在任何浏览器和平台组合上播放。使用Windows Media Player的唯一原因是,如果您正在流式传输内容,并且需要非常强大的数字版权管理,那么即使现在提供商也开始为此使用Flash。有关出色的示例,请参见BBC的iPlayer。 s>
s>
我建议您即使是内部使用也要切换到Flash。您永远都不知道将来会有谁需要访问它,这将为您提供最佳的将来兼容性。 s>
EDIT-2013年3月20日。
这些老问题不时浮出水面,很有趣!今天的世界有多么不同,这一切看起来如何过时。我不建议今天以任何方式使用仅限Flash的路由-这些天的最佳实践可能是使用HTML 5嵌入H264编码的视频,并使用Flash后备,如此处所述:http://diveintohtml5.info/video.html <铅>
您可以使用条件注释来使IE和Firefox做不同的事情
1 2 3 4 5 6 7
| <![if !IE]>
<p> Firefox only code</p>
<![endif]>
<!--[if IE]>
<p>Internet Explorer only code</p>
<![endif]--> |
浏览器本身将忽略并非旨在阅读的代码。
我找到了一篇很好的文章,关于在MSDN上将WMP与Firefox一起使用。
根据MSDN的文章,经过一些试验和错误,我发现使用JavaScript比使用条件注释或嵌套的" EMBED / OBJECT"标签要好。
我制作了一个JS函数,该函数根据给定的参数生成WMP对象:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <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;
} |
然后我通过编写一些标记和内联JS来使用该功能,如下所示:
1 2
| <script type="text/javascript">
window.addEventListener('load', generateWindowsMediaPlayer('wmpHolder', 240, 320, 'http://mysite.com/path/video.ext')); |
您可以使用jQuery.ready而不是window load事件来使代码更加向后兼容和跨浏览器。
我在Windows 7/8上通过IE 9-10,Chrome 27,Firefox 21,Opera 12和Safari 5测试了代码。
使用ffmpeg编码Flash视频实际上非常容易。您可以使用一个命令来转换几乎任何视频格式,ffmpeg足够聪明,可以找出其余的视频格式,并且它将使用计算机上的每个处理器。调用很容易:
1
| ffmpeg -i input.avi output.flv |
ffmpeg会猜测您想要的比特率,但是如果您要指定一个比特率,则可以使用-b选项,例如,-b 500000是500kbps。当然有很多选择,但是我通常不会花很多时间就能得到很好的结果。如果您正在寻找更多选择:视频选项。
您不需要特殊的Web服务器即可显示Flash视频。通过将.flv文件推送到标准Web服务器,并使用优质的swf播放器(例如flowplayer)链接到它们,我做得很好。
如果您可以确保所有用户始终仅使用Windows的[最新,最新版本],
WMV很好,但是即使那样,Flash仍然通常更适合于Web。该播放器甚至具有非常可换肤的外观,并且可以使用javascript进行控制。
我在Elizabeth Castro的网站上发现了实际上在FireFox和IE中都可以使用的东西(由于该网站上的链接)-我在这里尝试了所有其他版本,但无法使其在两个浏览器中都可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <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的版本
2020年12月:
-
我们现在有Firefox 83.0和Chrome 87.0
-
Internet Explorer已死,它已被新的基于Chromium的Edge 87.0取代
-
银光死了
-
Windows XP已死
-
WMV不是标准的:https://www.w3schools.com/html/html_media.asp
回答问题:
-
您必须将WMV文件转换为另一种格式:MP4,WebM或Ogg视频。
-
然后使用HTML 5 <video>元素将其嵌入到您的页面中。
我认为这个问题应该解决。