It is written in Python, and it streams via node.js or ffmpeg. mkchromecast is capable of using lossy and lossless audio formats provided that ffmpeg is installed. It also supports Multi-room group playback, and 24-bits/96kHz high audio resolution. Additionally, a system tray menu is also available.
By default, mkchromecast streams with node.js (or parec in Linux) together with mp3 audio coding format at a sample rate of 44100Hz and average bitrate of 192k. These defaults can be changed using the --sample-rate and -b flags. It is useful to modify these parameters when your wireless router is not very powerful, or in the case you don't want to degrade the sound quality. You can also cast videos using the --video flag.
mkchromecast can cast using either pulseaudio or ALSA. The respective dependencies can be pulled by mkchromecast-pulseaudio and mkchromecast-alsa dependency packages respectively. For more information, please read the README.Debian file shipped in this package.