XSPF中每个<track />的多个<location>元素

时间:2016-12-12 13:15:48

标签: audio audio-streaming playlist resolver xspf

用于解析XSPF文档,specification表示a <track> element can have zero or more <location> elements to define the URI of a resource to be rendered。例如:

<?xml version="1.0" encoding="UTF-8"?> <playlist version="1" xmlns="http://xspf.org/ns/0/"> <trackList> <track> <location>http://example.com/song_1.ogg</location> <location>http://mirror.xyz/example.com/song_1.ogg</location> </track> <track> <location>http://example.com/song_2.ogg</location> <location>http://example.com/song_2.mp3</location> </track> </trackList> </playlist>

我的问题是这是否允许:

  • 同一类型资源的多个位置(例如原始来源和镜像的MP3文件)与上面的song_1相同?

  • 或不同类型的资源(例如,使用多个位置同时提供曲目的Ogg Vorbis和MP3版本),如上面的song_2所示?

  • 或者两者兼而有之?

目前VLC和Audacious都使用<location>中提供的最后一个<track>,即使它不可用。因此,他们似乎只是使用最后一个<location>元素,这似乎不是规范的意图。无论哪种方式,他们都不会执行上面列出的任何一个解决案例。

显然,如何解释这些位置会改变包含<track>元素的<location>元素解析器的预期行为。第一个案例提供了一个很好的后备解决方案。更有趣的是,第二种情况简化了需要2个播放列表的情况,1个用于Ogg Vorbis,1个用于MP3版本的音轨,例如,必须使用M3U和PLS。

因此:是否有标准或推荐的行为来处理/解析XSPF中单个<location>的多个<track>元素?

感谢

1 个答案:

答案 0 :(得分:1)

我作为规范的作者之一发言。

location元素的基数是&#34;零或更多。&#34;这是选择而不是&#34;零或一个&#34;旨在支持您提到的两个用例(后备和备用媒体类型)。

VLC和Audacious在仅使用最后一个位置时所做的是不正确的实现。

尽管如此,我们的策略是让构建一个弱解析器变得容易,并且可以构建一个强大的解析器。如果通过添加对冗余位置的支持,VLC或Audacious随着时间的推移变得更强大,那就是希望的过程。