by mifi

mifi / hls-vod

HTTP Live Streaming with on-the-fly encoding of any video file for Web/Apple TV/iPhone/iPad/iPod

212 Stars 57 Forks Last release: almost 3 years ago (v1.0.0) 73 Commits 6 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

hls-vod ๐Ÿ“บ

HTTP Live Streaming with on-the-fly encoding of any video file for Apple TV, iPhone, iPad, iPod, Mac Safari and other devices that support HTTP Live Streaming. Also supports Android and normal desktop browsers through the use of mediaelement.js

is a server application lets you stream your whole video collection on-demand, regardless of format, to your iOS devices, playable from Safari, working with AirPlay as well. It does this by invoking ffmpeg/VLC on the fly through the command line, and presenting a web based GUI for playback.

Version 1.0 is out with simpler usage ๐ŸŽ‰


  • node.js (Tested on >=4)
  • ffmpeg (needs >=v1, must be built with libx264 and libmp3lame) OR VLC
  • Tested on Linux and Mac, but it might work on Windows too.


npm i -g hls-vod

Running (with ffmpeg, default)

  • Make sure you have node.js and ffmpeg in PATH
  • hls-vod --root-path /path/to/my/videos
  • Or:
    hls-vod --transcoder-path /path/to/ffmpeg --root-path /path/to/my/videos
  • Browse to http://localhost:4040/

Running (with VLC)

  • Make sure you have node.js and VLC installed and in PATH
  • hls-vod --transcoder-type vlc --root-path /path/to/my/videos
  • Or:
    hls-vod --transcoder-type vlc --transcoder-path /usr/bin/vlc --root-path /path/to/my/videos
  • Browse to http://localhost:4040/

VLC or ffmpeg ?

supports both VLC and ffmpeg as streaming backend. ffmpeg gives the best performance and best format/codec support, in my experience. Thumbs and audio is not implemented for VLC.


--root-path PATH - Root path allowed to read files in. Defaults to current directory.

--cache-path PATH - Where to write transcoded video cache. Defaults to OS temp dir.

--transcoder-type vlc|ffmpeg - Defaults to ffmpeg.

--transcoder-path PATH - Will use ffmpeg or vlc in PATH if not specified.

For more arguments run it without arguments:



  • Currently only supports encoding one stream at a time (only one user at a time).

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.