| |

Alpine Dash HLS

A ready-prepared video transcoding pipeline to create DASH/ HLS compatible video files & playlists.

Recommended usage via Docker Kitematic & Docker Hub.

Simplified usage

(run in shell/ terminal/ cmd)

Prerequisite: Docker needs to be installed and running.

docker pull majamee/alpine-dash-hls
docker run -v /absolute/path/to/video/:/video majamee/alpine-dash-hls name_of_my_video_file.ext

Please just replace in the command above the absolute path to your video file folder and the full file name of your video file to be converted.

I am glad to receive any improvement ideas about this "any video to DASH/ HLS" pipeline.
Especially if someone has any input on integrating better Apple's support of fragemented mp4 (fmp4) files in this pipeline.

Suggestions welcome @Github. :)

General hints for hosting the files (to test streaming)

  • Video and playlist files should be hosted best via HTTPS
  • DASH requires the .mpd playlist to be set as Content-Type: application/dash+xml
  • No specific streaming server is required, but your hosting should have progressive downloading enabled
  • If using a different domain name for the video files compared to the page where the player is hosted CORS headers need to be set

Tools to test the generated files for streaming

  • HLS (e.g. Safari on Mac OS X): https://videojs.github.io/videojs-contrib-hls/ (use the .m3u8 master-playlist)
  • DASH (e.g. Firefox/ Chrome): http://reference.dashif.org/dash.js/ (use the latest released version & the .mpd playlist)


  • Supported devices: iOS (Chrome/ Firefox/ Safari), Android (Chrome/ Firefox), Mac (Chrome/ Firefox/ Safari), Windows (Chrome/ Firefox/ EDGE)
  • Creates DASH (VOD) compatible files (including Safari on Mac)
  • Creates HLS files for compatibility with Safari on iOS
  • Optimizes video files for web playback (moov atom)
  • Compresses videos using [email protected] (for best compatibility)
  • Compresses audio using [email protected] (for DASH as separate track to save data)
  • Creates automatically 3 quality levels (Full HD/ HD/ DVD quality)
  • Fragments video files in 2 second windows to allow dynamic quality switching based on available bandwidth
  • Creates master MPD-Playlist which connects everything (MPEG-DASH)
  • Creates master M3U8-Playlist for HLS
  • Creates all output files neatly stored in a sub-folder matching the video file name in the folder output next to the transcoded video file
  • Adds also HTML and .htaccess file including code ready for inclusion into the own website for playback next to all other created files
  • Generates and sets Poster image (from second 3 of the input video file)
  • Generates and includes video preview thumbnails (currently only natively supported by Fluid Player via WebVTT)
  • Video preview support thumbnail support added for Video.js via videojs-vtt-thumbnails
  • Included fallback player (fluid-player.html) is based on the great work of the devs at Fluid Player
  • Included second fallback player (plyr.html) is based on the great work of the devs at Plyr
  • Included third fallback player (videogular.html) is based on the great work of the devs at Videogular
  • Included player (index.html) is based on the great work of the guys at Video.js


For creating DASH/ HLS compatible files for multiple videos in a single run, please have a look at: