我想创建本地存储媒体文件的播放列表,并在我的设备(台式机/笔记本电脑/手机)之间同步这些播放列表。但是,有一个主要的摩擦点:由于多年来我存储媒体库的方式发生了一些变化,文件路径在我的所有设备上不一定相同。因此,依赖于文件确切路径的常见文件格式(例如、、、).fpl
不适合。.m3u
.pls
.wpl
在几乎所有情况下,媒体的根目录在不同设备之间会有所不同。有些媒体播放器足够聪明,可以解决这个问题,只需匹配文件的后缀即可。例如,如果我D:\Music\Example Artist\Example Song.mp3
在播放列表中,音乐播放器可能会识别$SOME_ANDROID_IDENTIFIER/AndroidMusic/Example Artist/Example Song.mp3
为匹配条目。如果音乐播放器不够聪明,使用文本编辑器更改库的根目录也相当简单。
然而,这种策略通常不够稳健,无法应对路径中更复杂的差异。如果播放列表包含D:\Music\Example Artist\Example Song.flac
或D:\Music\Example Artist\Example Artist feat. Someone Else - 1-01 Example Song (2021).mp3
,查找和替换就会变得更加复杂,以至于对于大型库来说变得难以忍受。
我对这个问题的理想解决方案是基于元数据的文件格式。它不包含文件的精确路径,而是包含类似以下 JSON 的内容:
{
songs: [
{
artist: "Example Artist",
title: "Example Song"
}
]
}
由于我可以保证重新编码、重命名和复制之间的基本元数据的稳定性,这应该允许任何媒体播放器匹配提供的元数据,假设它可以索引我的设备上的所有媒体文件。
问题:是否存在与我上面描述的类似的文件格式?如果没有,是否有任何解决方案可以创建播放列表而不依赖于精确路径或查找和替换?(就我的具体情况而言,我担心 Windows 上的 foobar2000 和 Android 上的 Poweramp 之间的互操作性,但不使用这些应用程序的解决方案也受欢迎。)
答案1
看起来,现有的最好的文件格式是XML 可共享播放列表格式,简称 XSPF。不幸的是,它似乎没有得到广泛支持。它似乎主要在 IPTV 社区中使用,但在音频播放器方面却很少采用。
有一个foobar2000 插件它增加了支持,但我找不到任何对 Poweramp 或 Android 上的其他音乐播放器有意义的东西。一些服务,如 Soundiiz,似乎有能力导出至 XSPF来自流媒体服务。
答案2
.m3u 以及其他播放列表可能都需要不小路,仅文件名,如果 .m3u 和文件位于同一文件夹中。
话虽如此,但这似乎并不适用于相对的子文件夹的路径,也不是父文件夹的路径。[这可能取决于应用程序或文件系统;我尝试在 Windows/NTSF 下使用“点”、“点点”、正斜杠和反斜杠,但无济于事。]