JW Player之XML播放清单简介

分类:Javascript| 发布:camnprbubuol| 查看: | 发表时间:2012/2/24

一、XML是什么?

XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language标准通用标记语言)。XML是一种简单的数据存储语言,使用一系列简单的标记描述数据。XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,因为XML 是个公共格式(它不专属于任何一家公司), XML不是一个依附于特定浏览器的语言。(以上摘自“JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

2、微软免费的XML工具JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

3、Windows系统自带的“记事本”。前两种工具我还很陌生,其实大部分时候我还是用系统自带的“记事本”来完成。XML文件还可以用浏览器打开预览,我建议编写完XML播放清单之后,用浏览器打开,如果文件编写含有语法错误,浏览器会提示你第几行第几列出现什么样的错误。其次,如果播放清单中含有中文,用“记事本”编写或修改完之后请务必以UTF-8编码保存。 
JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

三、JW Player对XML播放清单文件的特别要求

 

要特别强调的是,提供播放清单的域名必须与提供播放器源码即player.swf的域名一致,否则播放清单无法加载,这是Adobe Flash Player包含的一项安全措施。受此影响的有以下三项:

*播放清单文件,字幕文件
*SWF文件(比如播放器源码player.swf,皮肤插件)
*原生媒体数据文件(如波形数据waveform data,位图数据bitmap data)

也就是说,你要检查提供以上所有文件的网址域名是否一致,否则无法加载。LongTail官网介绍了两种迂回的解决办法:

*在站点放置crossdomain.xml
*或者使用代理

参见:JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

每种格式LongTailVideo都有提供示例(example),点击它让浏览器打开,可以清楚地看到播放清单的结构。下图是浏览器打开ASX播放清单的截图:
JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

我们还可以把它下载下来(点击右键,IE“目标另存为……”或Firefox“链接另存为……”)。
JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

用“记事本”打开可以看到如下代码(仍以打开ASX播放清单为例):

<asx version="3.0">
<title>Example ASX playlist</title>
<entry>
<title>FLV video</title>
<author>the Peach Open Movie Project</author>
<abstract>Big Buck Bunny is a short animated film by the Blender Institute, part of the Blender Foundation.</abstract>
<moreinfo href="upload/2012/3/201203231347461706.jpg" />
</entry>
<entry>
<title>PNG Image with duration</title>
<author>the Peach Open Movie Project</author>
<abstract>Big Buck Bunny is a short animated film by the Blender Institute, part of the Blender Foundation.</abstract>
<ref href="upload/2012/3/201203231347460501.png" />
<duration value="00:00:10" />
</entry>
<entry>
<title>Youtube video with start</title>
<author>the Peach Open Movie Project</author>
<abstract>Big Buck Bunny is a short animated film by the Blender Institute, part of the Blender Foundation.</abstract>
<moreinfo href="http://j-coriolanus.blog.163.com/blog/http://www.bigbuckbunny.org/"/>
<ref href="http://j-coriolanus.blog.163.com/blog/http://youtube.com/watch?v=IBTE-RoMsvw" />
<starttime value="10" />
</entry>
</asx>

我的理解是,如果把XML比作中文,那么所谓ASX、ATOM、RSS、XSPF等格式就像各地的方言。我们这里的方言是闽南话,非闽南人听不懂,但是我们书写的还是全中国人都看得懂的中文,这就像我们是以闽南的“格式”来念中文。

1、ASX:全称Advanced Stream Redirector,是一种作为存储Windwos Media播放清单的XML文件格式。下图是ASX元素参考简表,要获得更详细的信息请参考:http://msdn.microsoft.com/en-us/library/ms910265.aspx。
JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

2、ATOM:是IETF组织标准化程序下的一个开放的发展中标准。值得一提的是Google提供的多种服务正在使用Atom,Google Data API (GData) 亦基于Atom。可能因为如此,LongTail提供给我们关于ATOM的参考网址正是YouTube APIs and Tools的Reference Guide (v2.0)(http://code.google.com/intl/zh-CN/apis/youtube/2.0/developers_guide_protocol.html#Understanding_Video_Entries)。而JW Player支持的是带Media RSS扩展的ATOM播放清单。Media RSS则是由雅虎(yahoo)于2004年设计的。

3、XSPF:全称XML Shareable Playlist Format,是由Xiph.Org Foundation于2004年设计的格式,目前最新的版本是2006年的1.0版。特点是开源跨平台,广泛用于便携播放设备。LongTail给出的参考网址:http://xspf.org/specs。

4、RSS:

*RSS是什么?RSS[Rich Site Summary(RSS 0.9 and 1.0)/ Really Simple Syndication(RSS 2.0)]是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用,它是站点用来和其他站点之间共享内容的一种简易方式。目前RSS已经分化为RSS 0.9x/2.0和RSS 1.0两个阵营,共有七种版本,其中RSS 0.9x/2.0应用最为广泛。(以上摘自“百度百科”)

*RSS播放清单文件的结构:
JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

我们可以看到,一个RSS文件是由带版本号的文件头及channel组成,channel又是由<channel>的子元素及若干<item>组成,而item还有自己的子元素,一层嵌套一层。

通过比较其他格式ASX、ATOM、XSPF文件我们还可以发现,它们结构大同小异:

ASX以版本号<asx version="3.0">为文件头,ATOM没有版本号,它的文件头是<feed xmlns="http://www.w3.org/2005/Atom">,RSS以版本号<rss version="2.0">为文件头,XSPF以版本号<playlist version="1">为文件头;

ASX和ATOM都是在文件头之下直接由若干曲目组成,RSS和XSPF是在版本号文件头之下再嵌套一层:RSS是<channel>,XSPF是<tractlist>

ASX和ATOM的曲目元素叫<entry>,RSS的曲目元素叫<item>,XSPF的曲目元素叫<track>

基于这个原因,我打算只介绍RSS格式播放清单,其他格式完全可以触类旁通。

我介绍的RSS格式参考的是RSS 2.0 at Harvard Law

*RSS之<channel>子元素:

下表是<channel>子元素的参考,要说明的是,对于播放清单而言,子元素并非是必须的,完全可以忽视,但是channel嵌套还是必须有的。

元素

描述

必要/可选

示例数据

title

channel标题

必要

 

link

channel链接地址

必要

 

description

channel描述

必要

 

language

channel编写语言

可选

en-uszh-cnzh-tw

copyright

channel内容的版权人

可选

 

managingEditor

channel内容负责人邮箱

可选

(George Matesky)

webMaster

网站管理员邮箱

可选

(Betty Guernsey)

pubDate

发布日期

可选

Sat, 07 Sep 2002 00:00:01 GMT

lastBuildDate

最后修订日期

可选

Sat, 07 Sep 2002 09:42:31 GMT

category

类别,它有个可选属性domain="类别链接"
这个元素同时也是<item>的子元素

可选

<category>Grateful Dead</category>
<category domain="http://www.fool.com/cusips">MSFT</category>

generator

channel生成程序

可选

MightyInHouse Content System v2.3

docs

一个指向RSS文件格式的文档链接。这可能是此页面的指针,以便25年后某人偶然路过这里可以知道这到底是个啥东东。

可选

http://blogs.law.harvard.edu/tech/rss

cloud

指定一个可支持rssCloud接口的web服务器

可选

<cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>

ttl

指定channel缓存时间,秒

可选

<ttl>60</ttl>

image

指定与channel同时显示的GIFJPEGPNG图片

可选

<image>
<title>WriteTheWeb</title>
<url>upload/2012/3/201203231347500733.gif</url>
<link>http://writetheweb.com</link>
<width>88</width>
<height>31</height>
<description>News for web users that write back</description>
</image>

rating

channel内容成人级别

可选

 

textInput

设定文本输入

可选

 

skipHours

(本人尚未搞明白)

可选

 

skipDays

(本人尚未搞明白)

可选

 

*RSS之<channel><item>子元素:

对于播放清单而言,<item>才是最重要的子元素,每条<item>代表一首曲目,而<item>的子元素则记录了每一首曲目的媒体信息如:媒体标题、媒体描述、媒体附件等等。下表是<item>的子元素参考表,但是只有红色部分才是对播放清单有意义的子元素,其他尽可以无视。

元素

                   

描述

 

示例数据

title

                   

item标题

 

 

link

                   

item链接地址

 

 

description

                   

item摘要、描述

 

 

author

                   

item作者的邮箱

 

<author> (Lawyer Boyer)</author>

category

                   

这个元素同时也是<channel>的子元素。
对于播放清单而言,它可以表示“专辑”名称。

 

<category>专辑名称</category>

comments

                   

item评论/注解的链接地址

 

 

enclosure

                   

item的媒体附件,它有三个属性:
1.url
:表示媒体文件的链接地址;
2.length
:表示媒体文件的字节数;
3.type
:表示媒体的类别,一个标准的
MIME类型。

 

<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg" />

guid

                   

全局唯一标识符字符串

 

<guid>http://some.server.com/weblogItem3207</guid>

pubDate

                   

item的出版时间

 

<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>

source

                   

xml文件地址

 

<source url="http://www.tomalak.org/links2.xml">Tomalak&39;s Realm</source>

尽管<author>(表示媒体作者,确切地说是作者的邮箱)是<item>的子元素,但是JW Player并不会读取这个元素当作媒体作者,除了<author>另外还有一些媒体信息如:<duration><image>等,在RSS格式下是无法体现的,这个问题要在RSS的扩展来解决。JW Player支持的RSS扩展有两种:itunes和media:
JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

下图是一个不带扩展的示例RSS播放清单:
JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

*itunes RSS:我想将重点放在media RSS,因此对itunes RSS有兴趣的朋友可以自己去Apple网站查阅相关资料。

*media RSS:这是由Yahoo公司于2004年设计的格式,它极大地扩展了RSS 2.0的内容附件及其附加元数据(metadata)。media RSS播放清单的文件头如下:

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">

主要元素

(1)<media:group>

<item>的子元素,可以将有相同内容的<media:content>分为一组。(对播放清单而言,每条item对应一首曲目,我认为可以分组的可能性或必要性几乎没有。)

(2)<media:content>

<item><media:group>的子元素,含有14项属性参数,示例如下:

<media:content

               url="http://www.foo.com/movie.mov"

               fileSize="12216320"

               type="video/quicktime"

               medium="video"

               isDefault="true"

               expression="full"

               bitrate="128"

               framerate="25"

               samplingrate="44.1"

               channels="2"

               duration="185"

               height="200"

               width="300"

               lang="en" />

下表是<media:content>属性参数表,大部分参数是可选的(红色为必选):

元素

描述

url

指定媒体文件的直链地址
如果没有此项,则必须在<media:player>中指定

fileSize

媒体文件大小的字节(byte)数

type

媒体文件的标准MIME类型

medium

对象属性,有5个选项:
image
audiovideodocumentexecutable
看起来这个属性和“type”是重复的

isDefault

是否为<media:group>默认对象

expression

表现方式,有3个选项:
sample
fullnonstop,默认是full

bitrate

每秒千比特率

framerate

每秒帧率

samplingrate

取样率,单位:kHz/

channels

音频声道数

duration

媒体播放时长,单位:秒

height

高度,单位:像素

width

宽度,单位:像素

lang

语言

可选元素

以下元素是可选的,且可能作为<channel><item><media:content><media:group>的子元素。越接近对象优先级别越高,比如作为<channel>的子元素时,定义将适用于<channel>内所有的对象,但是如果<item>另有同样子元素的不同定义,则<item>内的对象将忽略<channel>的定义。按优先权由强到弱的排列是:<media:content><media:group><item><channel>

另外, XML播放清单的所有元素并非都会出现在播放器的播放清单里,还要看皮肤skin而定,比如官方默认的皮肤就不显示<media:category><media:credit>元素,即便你编写的XML播放清单含有它们。

元素

描述

示例数据

<media:adult>

成人内容级别限制。该元素已被更具灵活性的<media:rating>取代。

 

<media:rating>

成人内容级别限制。这个与JW Player无太大关系,略。

 

<media:title>

媒体标题。它有个type可选属性,属性可选值是“plain”或“html”,默认是“plain”即纯文本。注意html必须是实体编码(entity-encoded)。

<media:title type="plain">媒体标题</media:title>

<media:description>

媒体的简短描述。它也有个type可选属性,见<media:title>

<media:description type="plain">媒体简短描述</media:description>

<media:keywords>

媒体关键字(tags)。有多个字时,以英文逗号隔开

<media:keywords>kitty,cat,big dog,yarn,fluffy</media:keywords>

<media:thumbnail>

媒体缩略图。它有1个必选属性“url”和3个可选属性“height”、“width”、“time”。经我的实验,那3个可选属性对JW FLV Player没有作用。

<media:thumbnail url="http://www.foo.com/keyframe.jpg" width="75" height="50" time="12:05:01.123" />

<media:category>

媒体类别。在JW FLV Player的某些皮肤,会显示为专辑名称。它有2个可选属性“scheme”和“lable”,但是可选属性对JW FLV Player同样没有意义。示例数据不带可选属性。

<media:category>专辑名称</media:category>

<media:hash>

媒体hash值。这个与JW Player无太大关系,略。

 

<media:player>

如果在<media:content>没有指定媒体地址,那么就要在此指定(通常<media:content>用的是直链地址)。它有1个必选属性“url”和2个可选属性“height”、“width”(可选属性我估计对JW Player也没有作用)。

<media:player url="http://www.foo.com/player?id=1111" height="200" width="400" />

<media:credit>

这个元素可包含参与媒体创作的多个角色(role),如作曲、演唱、导演、指挥、演员……等等。它有两个可选属性“scheme”、“role”。“scheme”属性值默认是“urn:ebu”,而更多“role”的值可参阅:European Broadcasting Union Role Codes

<media:credit role="author

" scheme="urn:ebu">作者名字</media:credit>

<media:copyright>

版权信息。这个与JW Player无太大关系,略。

 

<media:text>

媒体的文字副本、隐藏字幕、歌词等文本。这个与JW Player无太大关系,略。(如果要在JW FLV Player运用字幕,我建议还是用另外的字幕插件“Captions”更合适且方便)

 

<media:restriction>

媒体限制。这个与JW Player无太大关系,略。

 

<media:community>

媒体社区。这个与JW Player无太大关系,略。

 

<media:comments>

媒体评论。这个与JW Player无太大关系,略。

 

<media:embed>

媒体嵌入代码。这个与JW Player无太大关系,略。(JW FLAV Player提供有Viral插件)

 

<media:responses>

媒体回应。这个与JW Player无太大关系,略。

 

<media:backLinks>

媒体的反向链接。这个与JW Player无太大关系,略。

 

<media:status>

媒体状态。这个与JW Player无太大关系,略。

 

<media:price>

媒体价格。这个与JW Player无太大关系,略。

 

<media:license>

媒体许可。这个与JW Player无太大关系,略。

 

<media:subTitle>

媒体字幕链接。这个与JW Player无太大关系,略。(建议还是用另外的字幕插件“Captions”更合适且方便)

 

<media:peerLink>

媒体的P2P链接。这个与JW Player无太大关系,略。

 

<media:location>

媒体内容获取的地理信息。这个与JW Player无太大关系,略。

 

<media:rights>

原创或官方版权。这个与JW Player无太大关系,略。

 

<media:scenes>

媒体场景。这个与JW Player无太大关系,略。

 

前面我提供了一个不带Media扩展的RSS示例截图,下图则是将前例改写为带Media扩展的RSS示例截图。
JW Player之XML播放清单简介 - Coriolanus - Coriolanus 音乐分享

要特别注意文件头:

不带Media扩展的文件头是:<rss version="2.0">

Media扩展的文件头是:<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">

五、补充说明:

播放清单的元素并非都会体现在播放器,还会受到皮肤的限制,比如默认皮肤就不出现<category><media:category>元素,而Modieus (aka: Stylish)皮肤就可以。因此如果用户有特别的需要,而官方的皮肤又不能满足,我想那只好自己设计皮肤了。

来源:http://j-coriolanus.blog.163.com/blog/static/64211038200910213830999/

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/javascript/533.html