Cast your local videos
JavaScript Go CSS HTML
Switch branches/tags
Nothing to show
Latest commit a1f7c26 Jun 4, 2017 @xenotor xenotor clean up
Failed to load latest commit information.
config only read config, if supplied Jun 3, 2017
dist clean up Jun 4, 2017
ffmpeg cleanup & readme Aug 3, 2016
fs only read config, if supplied Jun 3, 2017
web only read config, if supplied Jun 3, 2017
.gitignore gh init Aug 2, 2016
.project gh init Aug 2, 2016 dev update Jun 4, 2017
LICENSE Initial commit Aug 2, 2016 rdm frmt Jun 4, 2017
chrometizer.go only read config, if supplied Jun 3, 2017


Transcode and cast your video files. Inspired by steventrux.


Docker (recommended)

# install docker if you haven't
sudo apt-get install -y

# add your user to the docker group
sudo usermod -aG docker $USER

# Now log out/log in and THEN test
docker images

# get chrometizer latest image
docker pull mobileblobs/chrometizer

#See configuration bellow.

Native (Ubuntu x86_64)

# get ffmpeg with non-free
sudo add-apt-repository ppa:djcj/hybrid
sudo apt-get update && sudo apt-get install -y ffmpeg

# get the binary
chmod +x chrometizer && mv chrometizer /usr/local/bin/
sudo mkdir /storage && sudo chown -R $USER /storage

# See configuration bellow.

For other distros, platforms etc. see Develop.


Chrometizer expects all videos and configuration file to be in /storage.
This will be mapped by Docker volume but if you are running natively you should link, mount or move you video files in /storage.

Configuration file

Chrometizer looks for /storage/.chrometizer.json. If no file is found or it's invalid JSON, defaults are used.

/storage/.chrometizer.json example
  "UID": "",
  "Exclude": [],
  "Remove_orig": false

Your user numerical ID. If set it will be used to create new files with this UID.

# to get your UID
(echo $UID)
# Default is unset.

Exclude directories within /storage.

# json string arrya example
"Exclude": ["exclude_dir1", "exclude_dir2", "exclude_dir3"]
# Default is unset.

Should the original videos be deleted after successful transcoding.
If you have enough space and want to preserver the original set "false". If space is of concern use "true"

# no quotes
"Remove_orig": true
# Default is false.

Run it

You are OK with the default values or you have created .chrometizer.json file - let's have some fun!


If you need to overwrite the default config, you should create .chrometizer.json file in "/absolute/path/to/your/video/files".
Docker will union mount it to the container /storage. We will expose port 80 on the host and run in detached mode :

docker run -d -p 80:8080 -v /absolute/path/to/your/video/files:/storage --restart unless-stopped mobileblobs/chrometizer

If everything goes well you should see your container running

docker ps

and all of your CPU will be consumed by the initial transcoding.
The --restart unless-stopped will make sure it starts on boot.


You will need to link, mount or move you video files in /storage.
Chrometizer will open port 8080. For chromecast to be able to play you will need to proxy (nginx, apache, ha-proxy etc.) or port-forward 80 -> 8080 (iptables) or use the systemd service.
Create /storage/.chrometizer.json if needed.

# run once
# ctrl+c to kill

# startup service
# EDIT the file then :
sudo cp chrometizer.service /lib/systemd/system/
sudo systemctl enable chrometizer.service
sudo systemctl start chrometizer

Use (clients)

There is built-in, very primitive, web client which you can use at http://server_lan_ip/. You will need to use the LAN IP of the machine (host with docker) if you want to cast.