我想从终端为服务器上包含 mp3 文件的目录生成 M3U 播放列表。由于我想确保每个播放器都能够播放这些文件,因此我想在每个文件条目前面加上该目录的绝对 URL,如下所示:
http://server.com/dir/file1.mp3 http://server.com/dir/file2.mp3 ...
因此不幸的是,仅仅这样做ls -1 *.mp3 > play.m3u
是不够的。有没有一行代码可以实现这一点?
答案1
这是@chronitis 的回答,有一些改进:
- 将文件名存储在变量 $playlist 中以供以后使用
- 如果文件之前存在则删除
- 将文件的完整路径写入播放列表
命令
playlist='play.m3u' ; if [ -f $playlist ]; then rm $playlist ; fi ; for f in *.mp3; do echo "$(pwd)/$f" >> "$playlist"; done
也可以在命令行上使用 mplayer 播放
mplayer -playlist play.m3u
答案2
我认为下面的一行代码应该有效:
for f in *.mp3; do echo "http://..../$f" >> play.m3u; done
答案3
您最初要求将每个条目创建为 Web URL 格式的行。除了用 http://... 替换本地路径外,您还需要用“%20”替换空格。所以,这行很长,但您可以这样做:
find /path/to/mp3s/ -name "*.mp3" | sed 's/ /%20/g' | sed 's|/path/to/mp3s/|http://www.server.com/serverpath/|g' > playlist.m3u
答案4
点赞此帖子问库本图,我尝试mkpl
以下是创建者提出的一些示例:
为一个音乐专辑创建播放列表:
cd myalbum mkpl myalbum.m3u
创建电影传奇的播放列表
mkpl -d HarryPotter -f mkv HP_saga.m3u
使用我的音乐收藏创建随机播放列表
mkpl -d "my_mp3_collection" "my_mp4_collection" -rs "my music.m3u"
使用我的音乐收藏创建随机播放列表并排除目录
mkpl -d "my_mp3_collection" "my_mp4_collection" -r -s -e "my_mp3_collection/metallica" "my_mp3_collection/dk" "my music.m3u"
创建最多包含 15 首曲目的电视剧播放列表
mkpl -d "my_series/GOT" -m 15 "got_first_15.m3u"
添加到我的音乐播放新歌曲并且不添加相同的文件
mkpl -d "new_collection" -rsu "my music.m3u" -a
如果文件大于 10MB,则创建包含音乐和视频文件的播放列表
mkpl -d "my_files" -r -z 10485760 "multimedia.m3u"
使用正则表达式创建仅包含第一首和第二首曲目的播放列表
mkpl -d "my_mp3_collection" -r -p "^[12]|[012]{2}" "my music.m3u"
为一个音乐专辑创建播放列表并设置标题:
cd myalbum mkpl myalbum.m3u -t "My Album"
创建播放列表并添加UTF-8编码
mkpl -d "new_collection" -r "my music.m3u" -g "UTF-8"
创建播放列表并设置图像
mkpl -d "new_collection" -r "my music.m3u" -I "new_collection/playlist_cover.jpg"
创建播放列表并添加远程文件链接
mkpl -d "new_collection" -r "my music.m3u" -l http://192.168.1.123/mp3/song1.mp3, http://192.168.1.123/mp3/song2.mp4
创建播放列表并设置 Windows 反斜杠 () 文件夹分隔符(适用于 Windows 操作系统)
mkpl -d "new_collection" -r "my music.m3u" -w