What is proper way to specify relative path to fil

2020-07-11 10:00发布

问题:

What is proper way to specify the path to mp3 file in M3U playlists, for use playlists in hardware players, like Compact & Shelf Stereos, Micro Component Systems, Car Audio Players? I understand the path should be relative, for more reliable playback. For example, Windows Media Player m3u playlist have two dots before the leading back slash:

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

Does this dots and leading back slashes make any sense for hardware players?

回答1:

All the players I've seen (Windows Media Player included) accept relative paths.

The .. means one directory up. If you wanted to specify the current path, either use ., or don't specify it at all.

If you have compatibility problems, consider using regular "forward" slashes / instead. Most hardware players aren't running Windows, and most Windows software can handle the regular slashes even though Windows paths use backslashes \.



回答2:

Here is a one-line command to convert absolute to relative for an .m3u file (update playlistname and username before using):

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

What it means:

  • name='playlistname' - The name of the playlist.m3u file you wish to change.
  • cd ~/Music/playlists; - Navigates to the playlists folder.
  • cat playlist.m3u >> playlist-old.m3u; - Backs up your playlist before making changes.
  • sed -i '' 's/oldtext/newtext/g' playlist.m3u - In the target playlist, replaces all instances (g for global) of the oldtext (the absolute path) with newtext (the relative path: ../).
  • LC_ALL=C avoids an error that sometimes comes up: sed: RE error: illegal byte sequence.