# HTML5 audio player with playlist
A compact audio player built with HTML, CSS and vanilla JavaScript. It creates its controls from a simple playlist in the page and does not require a JavaScript framework.
[Open the live demo](https://streaming.nnsprod.com/?MP3=Naheulbeuk)
## Features
- play, pause, previous and next controls;
- seek bar with elapsed and total time;
- volume control and mute button;
- track title, artist and optional cover artwork;
- automatic playback of the next track;
- sequential and random playback modes;
- collapsible album and playlist sections;
- responsive layout.
## Quick start
Clone the repository and open `index.html` in a browser:
```bash
git clone https://nnsprod.com/git/oversu/html5-css3-audio-player-with-playlist.git
cd html5-css3-audio-player-with-playlist
```
No build step is required. For reliable audio loading, serving the directory through a small local HTTP server is preferable to opening it with a `file://` URL:
```bash
python3 -m http.server 8080
```
Then visit .
## Define the playlist
Each track is represented by an item in `.apwp-playlist`. The audio URL is stored in `data-src`; the title and artist use `.apwp-source` and `.apwp-desc`:
```html
My track
Artist name
```
`data-cover` is optional. Replace the demonstration URLs in `index.html` with audio files you are allowed to distribute.
## Player options
The player reads a JSON object from the `data-config` attribute:
```html
```
| Option | Effect |
|---|---|
| `auto_load` | Loads the first track as soon as the player starts. |
| `shide_top` | Starts with the album information collapsed. |
| `shide_btm` | Starts with the playlist collapsed. |
The `shide_*` names are retained for compatibility with the existing script.
## Integration notes
- Include `style.css` and load `script.js` after the player markup.
- The supplied stylesheet imports Font Awesome 4.7 from a CDN for the control icons.
- Remote audio servers must permit playback from your site. Browsers can block cross-origin resources or insecure `http://` tracks on an HTTPS page.
- The current script initializes the player whose identifier is `apwp`.
## Project structure
```text
index.html Demonstration playlist and player container
style.css Player layout, controls and responsive styles
script.js Playback, playlist and volume behaviour
LICENSE GNU General Public License v3
```
## Credits and license
This project is derived from the player by [Sekedus](https://codepen.io/sekedus/pen/ExxjZEz) and maintained by [OverSu](https://oversu.fr).
It is distributed under the GNU General Public License v3. See [LICENSE](LICENSE) for the complete terms.