Как правильно указать относительный путь к файлу в плейлистах m3u?

Как правильно указать путь к mp3-файлу в плейлистах M3U, для использования плейлистов в аппаратных проигрывателях, таких как компактные и полочные стереосистемы, Микрокомпонентные системы, автомобильные аудиоплееры? Я понимаю, что путь должен быть относительным, для более надежного воспроизведения. Например, плейлист Windows Media Player m3u имеет две точки перед ведущей косой чертой:

#EXTM3U
#EXTINF:0,Artist - Track Name (Mix).mp3
..My AlbumArtist - Track Name (Mix).mp3

имеет ли это точки и ведущие назад косые черты какой-либо смысл для аппаратных игроков?

2 ответов


все игроки, которых я видел (включая проигрыватель Windows Media), принимают относительные пути.

на .. означает один каталог вверх. Если вы хотите указать текущий путь, используйте ., или не указывайте его вообще.

если у вас есть проблемы с совместимостью, рассмотрите возможность использования регулярных" прямых " косых черт / вместо. Большинство аппаратных проигрывателей не работают под управлением Windows, и большинство программ Windows могут обрабатывать обычные косые черты, даже если пути Windows используют обратные косые черты \.


вот однострочная команда для преобразования абсолютного в относительное для an .файл m3u (обновление playlistname и имя пользователя перед использованием):

name='playlistname'; cd /Volumes/'Mac Storage'/Music/Music/playlists; cat $name.m3u >> $name-old.m3u; LC_ALL=C sed -i '' 's/\Users\username\Music\/\.\.\//g' $name.m3u

что это значит:

  • name='playlistname' - имя списка воспроизведения.файл m3u, который вы хотите изменить.
  • cd ~/Music/playlists; - переход к папке плейлисты.
  • cat playlist.m3u >> playlist-old.m3u; - резервное копирование списка воспроизведения перед внесением изменений.
  • sed -i '' 's/oldtext/newtext/g' playlist.m3u - в целевом списке воспроизведения заменяет все экземпляры (g для глобального) oldtext (абсолютный путь) с newtext (относительный путь: ../).
  • LC_ALL=C избегает ошибки, которая иногда возникает:sed: RE error: illegal byte sequence.