`
fuyun
  • 浏览: 51631 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

FF & IE下的Real和Wmp播放器

阅读更多
很简单,两个文件,如下:(先贴出,再简单分析)
<html>
<head><title>Radio Online~Author:Fuyun</title></head>
<script language="javascript" src="radio.js"></SCRIPT>
<body>
<center>
<table>
<tr>
  <td>
    <table cellSpacing="1" width="100%" align="center" bgColor="#c6cfef" border="0">
      <tbody>
        <tr>
          <td class="title1" colspan="2">
            在线广播,电视,MP3,Flash,视频<label style="CURSOR: pointer" onclick="PlayerZoom()">【转为<font color="red">电视视频模式</font>】</label> 
          </td>
        </tr>
        <tr align="center">
          <td width="50%" bgColor="#ffffff" height="90">
            <select id="MediaSelect" style="width: 320px" onchange="return(MediaSelectSubmit(0))" name="MediaSelect">
              <script language="javascript">MediaSelectWrite(0);</script>
            </select> 
            <input onclick="MediaOpenUrl()" type="submit" value="打开网址" name="submit3" />
            <object id="MediaPlayer" height="66" width="400" classid="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6" type="application/x-oleobject">
<!--如果为"CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95",则下面的url参数应该改为filename,value值不变——这是不同版本的wmp造成的。参见[url]http://www.w3school.com.cn/media/media_playerref.asp[/url]//-->
              <param NAME="url" value="">
              <param NAME="AutoStart" value="1">
              <param NAME="ShowStatusBar" value="1">
              <param NAME="ShowPositionControls" value="0">
              <embed id="MediaPlayerFF" src="" width="400" height="66" 
              	type="application/x-mplayer2" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701">
<!--将type="application/x-mplayer2"换成type="application/x-mplayer",在最新版FF下将不可用,关于详细的MIME类型,请参考[url]http://www.w3school.com.cn/media/media_mimeref.asp[/url]//-->
              </embed>
            </object>
          </td>
          <td width="50%" bgColor="#ffffff" height="90">
            <select id="RealSelect" style="width: 320px" onchange="return(RealSelectSubmit(0))" name="RealSelect">
              <script language="javascript">RealSelectWrite(0);</script>
            </select> 
            <input onclick="RealOpenUrl()" type="submit" value="打开网址" name="submit3" />
            <object id="RealPlayer" height="66" width="400" classid="CLSID:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA">
              <param NAME="autostart" value="true">
              <param NAME="controls" value="ControlPanel,StatusBar">
              <embed id="RealPlayerFF" src="" width="400" height="66" autostart="true" 
              	type="audio/x-pn-realaudio-plugin">
              </embed>
            </object>
          </td>
        </tr>
      </tbody>
    </table>
  </td>
</tr>
</table>
</center>
</body>
</html>

//文件名:radio.js
var g_MediaList = [
  ["Please choose one...", ""],
  ["音乐之声", "mms://mms.cnr.cn/live3"],
  ["长沙音乐频道", "mms://real.rednet.cn/1061"],
  ["猫扑网络电台", "mms://ting.mop.com/mopradio"],
  ["青檬网络电台", "mms://pub.qmoon.net:8009/audio"],
  ["QQ电台综艺之声", "http://qr.fm.qq.com/qqradio?qqradio"],
  ["银河网络电台", "http://union.itlearner.com/radio/asx/iwant.asx"],
  ["45度网络电台", "mms://szlive.45doo.com/live"],
  ["中国国际广播电台", "mms://living.chinabroadcast.cn/inet"],
  ["----广播(港澳台)----", ""],
  ["澳门电台", "mms://202.175.80.10/LiveAudio"],

  ["----电视(大陆)----", ""],
  ["CCTV-1", "mms://202.102.249.220/live_tv01"],
  ["云南卫视", "mms://202.102.249.220/live_tv04"],
  ["XINHUATV", "http://202.109.80.136/channel3"],
  ["南京新闻综合频道", "mms://live.njbg.com.cn:88/NJTV01"],
  ["南京影视频道", "mms://live.njbg.com.cn:88/NJTV02"],
  ["南京文体频道", "mms://live.njbg.com.cn:88/NJTV03"],
  ["南京生活频道", "mms://live.njbg.com.cn:88/NJTV04"],
  ["南京教科频道", "mms://live.njbg.com.cn:88/NJTV05"],
  ["南京信息频道", "http://live.njbg.com.cn:88/NJTV06"],
  ["南京少儿频道", "mms://live.njbg.com.cn:88/NJTV07"],
  ["南京18频道", "mms://live.njbg.com.cn:88/NJTV18"],
       
  ["----音乐视频----",  ""],
  ["艳女舞曲", "http://video-v1.9you.com/421b47ffd946ca083b65cd668c6b17e6/flv/u/x/uxeo6pywy.flv"],
  ["伤感女孩", "http://shiyang.ucoz.com/mp3/duobideai.mp3"],

  ["----电视(国外)----", ""],
  ["美国音乐台", "mms://stream.nwez.net/nwez3"],
  ["法国BFM TV", "mms://vipmms9.yacast.net/bfm_bfmtv"],
  ["Discovery探索频道", "mms://media-wm.cac.washington.edu/ResearchTV%20Live%20(LAN)"],
  ["加拿大综合电视台", "http://video.cpac.ca/CPAC1E/.asf"],
  ["韩国TBC频道", "mms://203.251.80.180/tbc_tv"],
  ["日本LFX频道", "mms://bbn-lf.stream.ne.jp/lfx2"],
  ["瑞士TELEM", "mms://wms01.green.ch/telem1"]
];

var g_RealList = [
  ["Please choose one...", ""],
  ["中央人民广播电台一套", "rtsp://211.89.225.1:554/encoder/cnr1"],
  ["中央人民广播电台二套", "rtsp://211.89.225.1:554/encoder/cnr2"],
  ["中央人民广播电台三套", "rtsp://211.89.225.1:554/encoder/cnr3"],
  ["北京音乐台", "http://www.bmr.com.cn/script/live.ram"],
  ["重庆新闻台", "rtsp://218.201.40.221/encoder/live.rm"],
  ["重庆音乐台", "rtsp://218.201.40.221/encoder/music.rm"],
  ["宁波新闻频道", "rtsp://real.nbradio.com/encoder/xwpd.rm"],
  ["宁波音乐之声", "rtsp://broadcast.nbradio.com/encoder/jkzs.rm"],
  ["成都飞跃调频电台", "rtsp://61.157.96.231:554/broadcast/cd/broadcast/djok.rm"],
  ["成都电台新闻广播", "rtsp://61.157.96.231:554/broadcast/cd/broadcast/1.rm"],
  ["21CN网络电台", "rtsp://radio.21cn.com/id/live1.smil"],
  ["----广播(国外)----", ""],
  ["香港电台普通话台", "http://www.rthk.org.hk/live6.ram"],
  ["法国国际广播电台", "http://www.tv-radio.com/ondemand/rfi/mere/mandarin/info/mandarin_0930-1030-20k.ram"],
  ["日本国际广播电台(NHK)", "http://www.nhk.or.jp/rj/ram/en/chinese.ram"],
  ["美国之音(英语)", "rtsp://a1702.l211048984.c2110.g.lr.akamaistream.net:554/live/D/1702/2110/v0001/reflector:48984"],
  ["美国之音(中文)", "rtsp://a1702.l211020409.c2110.g.lr.akamaistream.net:554/live/D/1702/2110/v0001/reflector:23641"],
  ["BBC News Summary", "rtsp://rmv7.bbc.net.uk/worldservice/summary.rm"],
  ["BBC World Service (Live)", "http://www.bbc.co.uk/worldservice/ram/live_infent.ram"],
  ["BBC音乐站", "http://www.bbc.co.uk/radio1/realaudio/media/r1livev7.ram"],
  ["BBC(中文)", "rtsp://rmv8.bbc.net.uk/chinese/ch_hold_anno.ra"],
  ["BBC ASIAN NETWORK", "http://www.bbc.co.uk/asiannetwork/rams/asiannetwork.ram"],
  ["ABC News Radio", "http://www.abc.net.au/streaming/newsradio.ram"],
  ["WRN CBC", "http://www.wrn.org/audio/rnz_eng.ram"],
  ["----电视(国外)----", ""],
  ["美国NASA频道", "http://www.nasa.gov/ram/35037main_portal.ram"]
];

var g_MediaListEn = [
  ["Please choose one...", ""],
  ["America Music", "mms://stream.nwez.net/nwez3"],
  ["France BFM TV", "mms://vipmms9.yacast.net/bfm_bfmtv"],
  ["Discovery Channel", "mms://media-wm.cac.washington.edu/ResearchTV%20Live%20(LAN)"],
  ["Canada TV", "http://video.cpac.ca/CPAC1E/.asf"],
  ["Korea TBC", "mms://203.251.80.180/tbc_tv"],
  ["Japan LFX", "mms://bbn-lf.stream.ne.jp/lfx2"],
  ["Switzerland TELEM", "mms://wms01.green.ch/telem1"],
  ["----MP3-Video----", ""],
  ["MP3-A place nearby-Lene Marlin", "http://www.ell.com.cn/ejsound/jre061107.mp3"],
  ["Flash-Fishing", "http://218.87.253.164:8088/tfs92006/upload_swf/ftp/20060516/6.swf"]
];

var g_RealListEn = [
  ["Please choose one...", ""],
  ["BBC News Summary", "rtsp://rmv7.bbc.net.uk/worldservice/summary.rm"],
  ["BBC World Service (Live)", "http://www.bbc.co.uk/worldservice/ram/live_infent.ram"],
  ["BBC Music", "http://www.bbc.co.uk/radio1/realaudio/media/r1livev7.ram"],
  ["BBC ASIAN NETWORK", "http://www.bbc.co.uk/asiannetwork/rams/asiannetwork.ram"],
  ["VOA News Now", "rtsp://a1702.l211048984.c2110.g.lr.akamaistream.net:554/live/D/1702/2110/v0001/reflector:48984"],
  ["ABC News Radio", "http://www.abc.net.au/streaming/newsradio.ram"],
  ["WRN CBC", "http://www.wrn.org/audio/rnz_eng.ram"],
  ["----TV----", ""],
  ["America NASA Channel", "http://www.nasa.gov/ram/35037main_portal.ram"]
];
function MediaSelectSubmit(nType){
  var List = (nType == 0 ? g_MediaList : g_MediaListEn);
  //alert(navigator.appName);
  var MediaPlayer = document.getElementById("MediaPlayer");
//目前仍可直接使用id进行访问(FF和IE均可),但w3c推荐使用decument.getElementById()
  var MediaSelect = document.getElementById("MediaSelect");
  if(navigator.appName == "Netscape"){
  	MediaPlayer = document.getElementById("MediaPlayerFF");
  	MediaPlayer.controls.stop();
  	MediaPlayer.src = List[MediaSelect.value][1];
  	MediaPlayer.controls.play();
  }
  else{
  	MediaPlayer.controls.stop();
//旧版本的wmp,调用方式为MediaPlayer.Stop()等,同时还有open()方法(wmp11好像不支持open())
  	MediaPlayer.URL = List[MediaSelect.value][1];
  	MediaPlayer.controls.play();
  }
  MediaPlayer.focus();
}

function MediaSelectWrite(nType){
  var List = (nType == 0 ? g_MediaList : g_MediaListEn);
  var nLen = List.length - 1;
  for (var i = 0; i <= nLen; i++){
    document.write("<option value=",i,">",List[ i ][0],"</option>");
  }
}

function RealSelectSubmit(nType){
  var List = (nType == 0 ? g_RealList : g_RealListEn);
  var RealPlayer = document.getElementById("RealPlayer");
  var RealSelect = document.getElementById("RealSelect");
  if(navigator.appName == "Netscape"){
  	RealPlayer = document.getElementById("RealPlayerFF");
  	RealPlayer.DoStop();
  	RealPlayer.SetSource(List[RealSelect.value][1]);
  	RealPlayer.DoPlay();
  }
  else{
  	RealPlayer.DoStop();
  	RealPlayer.SetSource(List[RealSelect.value][1]);
  	RealPlayer.DoPlay();
  }
  RealPlayer.focus();
}

function RealSelectWrite(nType){
  var List = (nType == 0 ? g_RealList : g_RealListEn);
  var nLen = List.length - 1;
  for (var i = 0; i <= nLen; i++){
    document.write("<option value=",i,">",List[ i ][0],"</option>");
  }
}

function MediaOpenUrl(){
  var strUrl = prompt("","http://");
  if (strUrl.length < 1)
    return;
  var MediaPlayer = document.getElementById("MediaPlayer");
  if(navigator.appName == "Netscape"){
  	MediaPlayer = document.getElementById("MediaPlayerFF");
  }
  MediaPlayer.controls.stop();
  if(navigator.appName == "Netscape"){
    MediaPlayer.src = strUrl;
  }
  else{
    MediaPlayer.URL = strUrl;
  }
  MediaPlayer.controls.play();
}

function RealOpenUrl(){
  var strUrl = prompt("","http://");
  if (strUrl.length < 1)
    return;
  var RealPlayer = document.getElementById("RealPlayer");
  if(navigator.appName == "Netscape"){
  	RealPlayer = document.getElementById("RealPlayerFF");
  }
  RealPlayer.DoStop();
  RealPlayer.SetSource(strUrl);
  RealPlayer.DoPlay();
}

function PlayerZoom(){
  var MediaPlayer = document.getElementById("MediaPlayer");
  var RealPlayer = document.getElementById("RealPlayer");
  if(navigator.appName == "Netscape"){
  	MediaPlayer = document.getElementById("MediaPlayerFF");
  	RealPlayer = document.getElementById("RealPlayerFF");
    if (MediaPlayer.height<100){
      RealPlayer.controls = "ImageWindow,ControlPanel,StatusBar";
//      MediaPlayer.SetShowStatusBar(true);
//      MediaPlayer.SetShowControls(true);
//      MediaPlayer.SetShowDisplay(true);
      MediaPlayer.height = RealPlayer.height = (MediaPlayer.width*0.75 + 66);//366
    }
    else{
      RealPlayer.controls = "ControlPanel,StatusBar";
      MediaPlayer.height = RealPlayer.height = 66;
    }
  }
  else{
    if (MediaPlayer.height<100){
      RealPlayer.controls = "ImageWindow,ControlPanel,StatusBar";
      MediaPlayer.height = RealPlayer.height = (MediaPlayer.width*0.75 + 66);//366
    }
    else{
      RealPlayer.controls = "ControlPanel,StatusBar";
      MediaPlayer.height = RealPlayer.height = 66;
    }
  }
}

    程序比较简单,就没有添加注释了。在FF3.0.5和IE8下测试通过,其中,在FF下,Real的电视视频模式还不能正确显示视频窗口(估计,仍旧是兼容性的问题,在google下尚未搜索到解决的方案)。其余情况,均无bug,可正常使用。
    本文,仅起抛砖引玉之用,在探讨js在FF和IE下的兼容性和有兼容性开发需求的问题上,做一些初步的研究。
    可以看到,对于wmp和real,在IE和FF下的各种属性、行为、使用方式等,区别还是很大的;另外,新旧版本不同的wmp和real,也会导致兼容性的差错,从而影响开发的难度。
    要从最大范围上做到兼容,实为一件难事,或许根本就不现实,在力求遵循W3C标准的同时,还应根据不同的具体需求进行灵活的“放宽”条件。
分享到:
评论

相关推荐

    WMP播放器demo

    在Web环境下,常常使用HTML和JavaScript来构建播放器界面,并通过JavaScript调用WMP插件的API。在桌面应用中,可能使用.NET Framework和Visual Studio这样的开发环境,用C#或VB.NET来实现对WMP的控制。 6. **媒体...

    wmp播放器静态类模块.rar

    通过深入研究和实践,开发者不仅可以掌握WMP播放器的使用,还能增强在易语言环境下开发多媒体应用的能力。在实际项目中,这种模块化的编程方式可以大大提高代码的可复用性和维护性,降低开发成本。因此,对于任何...

    wmP播放器对象版

    此外,wmP播放器对象版可能还涉及到与其他技术的集成,例如DirectShow,它是Windows平台下进行多媒体处理的一个框架,可以增强WMP的播放能力。同时,考虑到版权和许可证问题,使用wmP播放器对象时需确保遵循微软的...

    易语言wmp播放器静态类模块

    易语言wmp播放器静态类模块源码,wmp播放器静态类模块,方法_创建,方法_关闭,读_属性_地址,写_属性_地址,读_属性_打开状态,读_属性_播放状态,方法_取控制,方法_取设定,方法_取当前媒体,方法_置当前媒体,...

    易语言源码易语言wmp播放器静态类模块源码.rar

    在本压缩包“易语言源码易语言wmp播放器静态类模块源码.rar”中,包含的是一个使用易语言编写的Windows Media Player(WMP)播放器的静态类模块源代码。 首先,我们要理解“静态类模块”在易语言中的概念。静态类...

    FLASH+WMP播放器

    标题中的“FLASH+WMP播放器”指的是在网页中同时集成Adobe Flash Player和Windows Media Player(WMP)这两种媒体播放技术的解决方案。这种集成允许网页在不支持Flash的环境中也能播放Windows Media格式的音视频内容...

    alienware wmp 播放器皮肤

    标题中的“alienware wmp 播放器皮肤”指的是Alienware品牌为Windows Media Player (WMP)设计的一款独特的播放器界面皮肤。Alienware是知名的高端游戏电脑品牌,以其科幻风格的设计闻名,这款皮肤显然是为了给用户...

    VS2008使用WMP制作播放器

    总结,使用VS2008和WMP控件制作播放器涉及到以下几个关键知识点: 1. 创建MFC C++应用程序。 2. 添加和配置WMP ActiveX控件。 3. 设置控件属性以满足播放需求。 4. 编写C++代码处理消息映射,实现播放器功能。 5. ...

    WMP播放器解码器media player codec pack v4.4.1.rar

    用过WINDOWS自带的WMP播放器的都知道,由于WMP自带的解码器有限,所以只支持播放几种常用音频视频格式,很多主流媒体格式都不支持,其实可以通过安装这个解码包来扩展支持的格式,解决WMP无法播放某一视频问题,安装...

    js控制的wmp播放器,含进度条

    总结来说,`js控制的wmp播放器,含进度条`是一个利用JavaScript与Windows Media Player插件交互,创建自定义播放控制和进度反馈的示例。虽然随着技术的发展,这种做法可能逐渐被HTML5的多媒体API取代,但在特定的...

    基于WMP自制的MFC播放器

    【基于WMP自制的MFC播放器】 在编程领域,创建一个媒体播放器是一个常见的学习项目,这有助于开发者深入理解多媒体处理和用户界面设计。在这个案例中,我们讨论的是一个基于Windows Media Player(WMP)组件,并...

    PowerPoint2021中WMP播放器控件的使用.docx

    下面将详细介绍如何在PowerPoint 2021中使用WMP播放器控件。 首先,你需要启动PowerPoint 2021并打开你的演示文稿。在菜单栏上,选择“视图”选项,然后在下拉菜单中找到并点击“工具栏”。在弹出的子菜单中,确保...

    wmp.ocx音乐播放器控件

    3. **Windows Media Player (WMP)**: WMP是微软提供的一个多媒体播放器,它支持多种音频和视频格式。WMP控件允许开发者将WMP的功能集成到他们的应用程序中,如在Web页面或桌面应用上播放媒体文件。 4. **WMP Codecs...

    基于WMP内核的VB播放器,界面漂亮.rar

    【标题】"基于WMP内核的VB播放器,界面漂亮.rar" 描述了一个使用Visual Basic(VB)编程语言开发的媒体播放器程序,该程序是建立在Windows Media Player(WMP)内核之上的。这意味着它利用了WMP的核心功能来实现音频...

    wmp.rar_CSharp wmp_csharp media player_player_wmp_wmp 流媒体播放器

    10. **调试与优化**:使用Visual Studio的调试工具进行测试,确保播放器在不同环境下都能正常工作,并优化性能,如减少CPU占用和内存泄漏。 总之,"wmp.rar"中的项目提供了一个学习和参考C#和Windows Media Player...

    基于wmp内核的视频播放器

    本项目聚焦于一个基于Windows Media Player(WMP)内核的视频播放器,该播放器具备基本的播放、暂停、停止以及打开文件和调整进度等核心功能,为用户提供了一种简洁易用的多媒体体验。 1. **Windows Media Player...

    使用WMP控件自制的媒体播放器

    在本文中,我们将深入探讨如何使用...总的来说,使用WMP控件创建自定义媒体播放器是一项涉及多媒体编程、用户界面设计和ActiveX技术的综合任务。通过学习和实践,我们可以构建出功能强大且用户体验良好的媒体播放应用。

    仿wmp外星人播放器

    wmp外星人播放器rainmeter皮肤,有需要的人可以下载

Global site tag (gtag.js) - Google Analytics