前阵子为了发这是最好的未来的音频,找了很多wp的插件都不行,原有的插件也不行,后来找到个AnyPlayer,怕会忘记这个插件的用法,特记录一下。下文来自作者blog http://cpiz.com/blog/archives/159,需要此插件的朋友可以去作者网站下载。

前阵子转了几个视频和Flash游戏到Blog上,分别来自不同的网站,播放器也五花八门。但每一个都在页面上占很大的地方不太雅观,而且那个Bloxorz游戏在页面打开时就会自动播放,发出诡异的响声,很是不爽,想弄成像U148那样的可以展开与折叠的效果。在网上找了不少这方面的插件,效果都达不到我的希望,但也收获了一个Audio player插件,嵌入音频很方便。后来我还是用了土办法,研究了一下U148的实现方式,让页面加载一个js文件,然后在文章中嵌入这样的代码:

  1. <blockquote>
  2. <a href=javascript:MediaShow(‘swf’,’bloxorz’,’http://cpiz.com/files/bloxorz.swf’,’500′,’300′); id=bloxorz_href>播放视频/音频</a>
  3. <p id=bloxorz> </p>
  4. </blockquote>

后来又发现文章一旦编辑后,在IE中会报脚本错误,原来是Wordpress会在编辑文章的时候自作聪明地把<div></div>标签转为<p></p>,而js脚本中使用的又是<div></div>,而且在<p></p>标签内不允许嵌入其它格式块。第N次编辑了五六篇文章后,我实在有些不耐烦了。

  • 过程是这样子的:

我这人习惯用广度优先的算法做事,昨晚本来继续编写我的Robocode机器人,想还没有很好的idea。于是转而写篇博客为介绍Robocode,这事是早就计划好的,视频我都录好传到土豆上去了。在嵌入视频的时候,脚本又发生了些问题。调试解决后,我开始想怎么样一劳永逸地搞定这事。首先想到的是在编辑文章时在html模式下加入<script>调用播放器函数,js中用document.write()来输出播放器HTML代码,试过后再一次失望地发现Wordpress又自作聪明地把<script></script>内容转义了。忍无可忍的我终于决定自己写一个在WordPress嵌入各种播放器的插件。想法很简单,仿照Audio player的方式,通过在文章中输入[xxxplayer:]并附件属性的方式嵌入播放器,在页面打开的时候把这部分代码替换为对应的播放器。

用Google找到了篇在wordpress中使用Javascript的文章,介绍了一种最简单的内容替换插件实现,再结合Audio player的源码,我已经对实现方式有了把握。接下来研究如何使用正则表达式提取[xxxplayer:a=aaa …]中的属性,我的初衷是希望它可以有很高的兼容性,可以提取类似[xxxplayer:a=”aaa;’aaa’;aaa” b=’b b b’ c=ccc …]这样各种引号形式的标签。我的正则是个半桶水的水平,又趁这机会找了个PHP正则表达式的教程仔细地看了一把,一个小时后还是没写出来。上网搜,两个小时后还是没搜到。看来难度很高,于是退而求次,只解析有双引号括起来的属性。最后在部署插件的时候,发现它根本没按我所想的去工作,在编辑模式下半角输入的双引号,用HTML都成了全角,而且“”"这三种形式的同时存在,百思不得其解。只能再退一步,不给属性加引号了,最后的正则是这样的。

  1. // 从内容中获得指定属性
  2. function get_attribute($player_info, $attribute){
  3. return preg_replace(/(.*) . $attribute . ([ ]?)=([ ]?)([^ ]*)(.*)/i, $4, $player_info);
  4. }

把它传到远程服务器上,运行正常。

  • 使用是这样子的:

在文章编辑模式入插入[anyplayer:type=swf url=http://xxxx.com/swf width=400 height=300],注意,两边要使用半角方括号。

  1. type是媒体类型,支持swf flv mp3 wma wmv rm ra qt
  2. url是媒体地址
  3. width是播放器宽度,缺省则为450
  4. height是播放器高度,缺省则为350

PS:属性不能用引号括起来

  • 效果是这样子的:

swf:支持各种标准的flash文件,常见视频网站上的视频都可采用这种方式发布

[anyplayer:type=swf url=http://cpiz.com/files/bloxorz.swf width=500 height=300]

[anyplayer:type=swf url=http://www.youtube.com/v/flwnaJXi9y0&rel=1 width=425 height=355]

flv:基本上和swf使用一样

[anyplayer:type=flv url=http://www.whosworks.com/upload/20081111992260222.flv width=460 height=330]

mp3:如果不需要皮肤自定义功能的话,可以替下Audio player了,该模式下宽高属性无效

[anyplayer:type=mp3 url=http://bbmedia.qq.com/media/yule/kekewang/music/jindie/sunyanzitonglei.mp3 ]

wma:调用MediaPlayer播放音频,Firefox下要额外插件支持,该模式下宽高属性无效

[anyplayer:type=wma url=http://show.jj.jx.cn/upload_mp3/20071021196261562.wma]

wmv:调用MediaPlayer播放音频,Firefox下要额外插件支持

[anyplayer:type=wmv url=http://mtv26.3378.com.cn/071110/梁静茹_www.3378.com.cn崇拜(完整版).wmv width=460 height=400]

Tags:

http://blog.dngz.net/551.htm

我想发表对此文的评论 ...(没有弹出错误信息则说明评论成功,需要等待审核.)