Date 2018-05-01

I have some files lying around in my computer with movies I want to watch. The process typically involves copying the file over to a pendrive, plug that into the TV and use the TV media player. This works very well, but I am lazy. It also happens that I have a Chromecast on my dumb TV. It would be very convenient for me to figure out a way of sending directly files from my computer to the Chromecast. It turns out it's not difficult at all.

1. Install PyChromecast

PyChromecast is a wonderful Python library (3.4+) that allows you to send videos to your Chromecast at home. It handles everything, from device detection, to buffering, to play / pause / several controls.

I have an old-ish Ubuntu 14.04, but this did the trick:

# I like to keep stuff tidy virtualenv -p /usr/bin/python3 ~/virtualenv/pychromecast source ~/virtualenv/pychromecast/bin/activate pip3 install pychromecast

2. Start a local HTTP server

Just go to the folder where you have the videos and start a SimpleHTTPServer Python module.

python -m SimpleHTTPServer

Leave that running on the background. We're almost there.

3. Send the video to your Chromecast

This might be different for you, as I only have one Chromecast at home, so my device will always be the first from the list of detected devices, but this is my test script:

import pychromecast if __name__ == "__main__" : cast = pychromecast . get_chromecasts ()[ 0 ] mc = cast . media_controller mc . play_media ( "http://192.168.0.103:8000/video_test.mp4" , content_type = "video/mp4" ) mc . block_until_active () mc . play ()

At first I was trying to send the file directly, but that didn't work. The example provided in the documentation took the file from a web server, so I thought that perhaps Chromecast can't receive a file but can receive an URL with the contents of the video. That 192.168.0.103 up there is the internal IP of my computer.