我在设置 DLNA 服务器(Debian 上的 minidlna)时注意到的一件事是,该协议支持创建播放列表。我想利用它。我的问题:
- 播放列表需要采用什么格式?
- 相对于音乐,播放列表文件本身应该位于哪里?
- 如果文件被重命名或移动,或者标签被编辑,播放列表会自动更新吗?
我的 XBox 360 和互联网收音机都支持播放列表,手机上的应用程序也支持。我的设备目前都不支持创造播放列表。我希望我对这个问题回答得很清楚
答案1
我今天刚刚设置了一个非常相似的盒子(Debian,minidlna
),我必须解决其中一些相同的问题。就我而言,我使用 Onkyo 立体声接收器作为音频文件的客户端,使用 Roku 播放器播放视频和图片。
看看你的问题:
播放列表需要采用什么格式?
播放列表文件格式为 M3U(参见https://en.wikipedia.org/wiki/M3U)。这可以通过Windows Media Player和其他类似工具创建。
您必须解决的一个问题是,WMP 生成的 M3U 文件通常包含文件的完整路径(假设您已在 Debian 框中设置了 Samba,然后在 Windows 中将您的音乐库安装为网络驱动器)。因此,文件将类似于G:\MusicLibrary\Artist\Album\Song.mp3
,Windows 就是这样识别它的。不幸的是,由于您在 Debian 上托管它,目录分隔符不同,没有驱动器号等,因此 Debian 将文件识别为/MusicLibrary/Artist/Album/Song.mp3
。
如果您熟悉编辑sed
器等 Unix/Linux 实用程序,那么这不是什么大问题。您可以轻松地将文件名从 Windows 格式转换为 Linux 格式。我使用 WMP 创建播放列表,通过 FTP 将其传输到 Debian,运行一个简单的sed
替换命令来更改文件名的格式。
相对于音乐,播放列表文件本身应该位于哪里?
我不知道是否有“必需”位置。我最初将播放列表放在我的库的顶级目录中 ( /MusicLibrary
),这样就很好了。然后我创建了一个专用目录/MusicLibrary/Playlists
并将播放列表放在其中。同样,这样就很好了。
创建或重新定位播放列表后,我不得不强制minidlna
重新扫描媒体文件。
如果文件被重命名或移动,或者标签被编辑,播放列表会自动更新吗?
如果我理解正确的话,这实际上是两个问题。如果文件被重命名或移动,则必须手动更新播放列表。如果标签被编辑,则标签包含在 MP3 文件本身中,播放列表指向 MP3 文件,因此您应该没问题。我唯一能看到的是 M3U 文件中有一个扩展格式选项,允许将歌曲时长 (mm:ss)、艺术家和标题信息存储在 M3U 文件中。创建播放列表时,通常会从当时存在的标签中提取此信息。如果您更新标签,M3U 文件中的信息将不会更新以匹配。
答案2
以下sed
命令将删除 *nix 和 Windows 绝对路径:
sed -Ei 's/^\/.*\/|^.*\\//' playlist.m3u
这可以与find
命令结合,如下面的脚本所示:
#!/usr/bin/env bash
# This command removes both *nix and Windows absolute paths from all found .m3u playlists.
find . -type f -name '*.m3u' -readable -writable -exec sed -Ei 's/^\/.*\/|^.*\\//' {} \;
答案3
仅代表我个人观点... 您只需使用 Debian 计算机创建播放列表即可轻松完成相同的操作。假设您安装了桌面 GUI,则可以使用 VLC 将您喜欢的歌曲放入播放列表中,然后在 minidlna 可访问的目录中“将播放列表保存到文件”。由于您是在 Debian 系统上创建播放列表,因此无需进行所有 Windows 到 Unix 文件路径转换。