Playlist parsers
Liquidsoap supports various playlists formats. Those formats can be
used for playlist
sources, input.http
streams
and manually using request.create
.
Supported formats
Most supported playlists format are strict, which means that
the decoder can be sure that is has found a correct playlist for that
format. Some other format, such as m3u
, however, may cause
false positive detections.
All formats are identified by their mime-type or content-type. Supported formats are the following:
- Text formats:
audio/x-scpls
: PLS format, strictapplication/x-cue
: CUE format, strict. This format’s usage is described below.audio/x-mpegurl
,audio/mpegurl
: M3U, non strict
- Xml formats:
Usage
Playlist files are parsed automatically when used in a
playlist
or input.http
operator. Each of these
two operators has specific options to specify how to pick up a track
from the playlist, e.g. pick a random track, the first one
etc.
Additionally, you can also manually parse and process a playlist
using request.create
and request.resolve
and
some programming magic. You can check the code source for
playlist.reloadable
in our standard library for a detailed
example.
Special case: CUE format
The CUE format originates from CD burning programs. They describe the set of tracks of a whole CD and are accompanied by a single file containing audio data for the whole CD.
This playlist format can be used in liquidsoap, using a
cue_cut
operator. By default, the CUE playlist parser will
add metadata from cue-in and cue-out points for each track described in
the playlist, which you can then pass to cue_cut
to play
each track of the playlist. Something like:
cue_cut(playlist("/path/to/file.cue"))
You can find an example of using cue_cut
with cue sheets
here and a throughout explanation of how
seeking in liquidsoap works there.
The metadata added for cue-in and cue-out positions can be customized using the following configuration keys:
settings.playlists.cue_in_metadata.set("liq_cue_in")
settings.playlists.cue_out_metadata.set("liq_cue_out")