pax_global_header 0000666 0000000 0000000 00000000064 13217735121 0014514 g ustar 00root root 0000000 0000000 52 comment=965c6e80672d192439e09da64346a8f9a014f6f9
mkchromecast-0.3.8.1/ 0000775 0000000 0000000 00000000000 13217735121 0014343 5 ustar 00root root 0000000 0000000 mkchromecast-0.3.8.1/LICENSE 0000664 0000000 0000000 00000003100 13217735121 0015342 0 ustar 00root root 0000000 0000000 MIT License
Copyright (c) 2017 Muammar El Khatib
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
All files located in the nodejs and archive directories are externally
maintained codes used by this software which have their own licenses; we
recommend you read them, as their terms may differ from the terms above.
Files in `mkchromecast/getch` are maintained under the MIT license. For more
information please see: https://github.com/joeyespo/py-getch.
Files in `notifier`, except for `Terminal.icns` are maintained under the MIT
license. For more information see: https://github.com/julienXX/terminal-notifier#license
mkchromecast-0.3.8.1/Makefile 0000664 0000000 0000000 00000004567 13217735121 0016017 0 ustar 00root root 0000000 0000000 # This file is part of mkchromecast. It is used to build the macOS app.
# It does the following:
#
# 1) It changes the strings tray and debug to True.
# 2) Build the application using py2app.
# 3) Copy Qt plugins.
# 4) macdeployqt
#
# The clean target does a `git clean -f -d` to delete all untracked
# directories, and does a `git checkout mkchromecast/__init__.py`.
#
# Note: Be careful when using this Makefile, because all files not tracked will
# be deleted, and all changes to mkchromecast/__init__.py will be discarded if
# they are not committed.
#
# How to use it?
# ==============
# Test the start_tray.py script:
# make clean
# make sed
# python start_tray.py
# Test the application locally
# make clean
# make test
# check inside the dist/ directory
# Deploy with debug
# make clean
# make debug
# check inside the dist/ directory
# Deploy
# make clean
# make deploy
# check inside the dist/ directory
#
# Note again that make clean will do a checkout of mkchromecast/__init__.py.
#
# Muammar El Khatib
#
# This target is used to test the start_tray.py script that is used to deploy
# the macOS app
sed:
sed -i -e 's/tray = args.tray/tray = True/g' mkchromecast/__init__.py
sed -i -e 's/debug = args.debug/debug = True /g' mkchromecast/__init__.py
# This target creates the app just to be used locally
test:
sed -i -e 's/tray = args.tray/tray = True/g' mkchromecast/__init__.py
sed -i -e 's/debug = args.debug/debug = True/g' mkchromecast/__init__.py
python3 setup.py py2app -A
# This target creates a standalone app with debugging enabled
debug:
sed -i -e 's/tray = args.tray/tray = True/g' mkchromecast/__init__.py
sed -i -e 's/debug = args.debug/debug = True/g' mkchromecast/__init__.py
python3 setup.py py2app
cp -R /usr/local/Cellar/qt/5.9.1/plugins dist/Mkchromecast.app/Contents/PlugIns
/usr/local/Cellar/qt/5.9.1/bin/macdeployqt dist/Mkchromecast.app
# This target creates a standalone app with debugging disabled
deploy:
sed -i -e 's/tray = args.tray/tray = True/g' mkchromecast/__init__.py
sed -i -e 's/debug = args.debug/debug = False/g' mkchromecast/__init__.py
python3 setup.py py2app
cp -R /usr/local/Cellar/qt/5.9.1/plugins dist/Mkchromecast.app/Contents/PlugIns
/usr/local/Cellar/qt/5.9.1/bin/macdeployqt dist/Mkchromecast.app -dmg
# This cleans
clean:
git clean -f -d
git checkout mkchromecast/__init__.py
rm -f mkchromecast/*.pyc
mkchromecast-0.3.8.1/README.md 0000664 0000000 0000000 00000052530 13217735121 0015627 0 ustar 00root root 0000000 0000000 Mkchromecast
============
[](https://raw.githubusercontent.com/muammar/mkchromecast/master/LICENSE)
[](https://github.com/muammar/mkchromecast/)
[](https://github.com/muammar/mkchromecast/blob/master/nodejs/)
[](https://github.com/muammar/mkchromecast/releases)
[](https://github.com/muammar/mkchromecast/releases/latest)
This is a program to cast your **macOS** audio, or **Linux** audio to your
Google Cast devices or Sonos speakers. It can also [cast video files](#video).
It is written in Python, and it can stream via `node.js`, `parec` (**Linux**),
`ffmpeg`, or `avconv`. **Mkchromecast** is capable of using lossy and lossless
audio formats provided that `ffmpeg`, `avconv` (**Linux**), or `parec`
(**Linux**) are installed. It also supports [Multi-room group
playback](https://support.google.com/chromecast/answer/6329016?hl=en), and
[24-bit/96kHz high audio resolution](https://github.com/muammar/mkchromecast#high-quality-audio).
Additionally, a system tray menu is 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. For more information visit the
[wiki](https://github.com/muammar/mkchromecast/wiki/), and the
[FAQ](https://github.com/muammar/mkchromecast/wiki/FAQ).
You can optionally install `ffmpeg` or `avconv` (the latter only supported in **Linux**,
[more information
here](https://github.com/muammar/mkchromecast#using-the-ffmpeg-backend-with-mkchromecast-installed-from-sources)).
**Linux** users also can configure [ALSA to capture
audio](https://github.com/muammar/mkchromecast/wiki/ALSA). Note that sometimes
the lag between playing a song and hearing may be up to 8 seconds for certain
backends.
Tell me more about it
----------------------
To have an idea of using **Mkchromecast** from console [check this
gif](https://github.com/muammar/mkchromecast#usage).
**Mkchromecast** provides a **beta** system tray menu. It requires you to
install `PyQt5`. For more information check the
[Requirements](https://github.com/muammar/mkchromecast#requirements) and
[Install](https://github.com/muammar/mkchromecast#install) sections.
This is what the system tray menu looks like:
#### macOS
[](https://www.youtube.com/embed/d9Qn_LltOjU)
#### Linux
Check these images:
* [Gnome 1](https://raw.githubusercontent.com/muammar/mkchromecast/master/images/Gnome1.png)
* [Gnome 2](https://raw.githubusercontent.com/muammar/mkchromecast/master/images/Gnome2.png)
* [KDE5 1](https://raw.githubusercontent.com/muammar/mkchromecast/master/images/Kde5_1.png)
* [KDE5 2](https://raw.githubusercontent.com/muammar/mkchromecast/master/images/Kde5_2.png)
* [Awesome WM with Blue icons](https://raw.githubusercontent.com/muammar/mkchromecast/master/images/Awesome_BI.png)
Sonos support
--------------
If you have Sonos speakers, you can play whatever you are listening to in your
computer with **Mkchromecast**. To add Sonos support, install the `soco` python
module:
```
pip install soco
```
Contribute
----------
If you want to contribute, help me improving this application by [reporting
issues](https://github.com/muammar/mkchromecast/issues), [creating pull
requests](https://github.com/muammar/mkchromecast/pulls), or you may also buy
me some pizza :).
[](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=RZLF7TDCAXT9Q&lc=US&item_name=mkchromecast¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted)
Requirements:
------------
#### macOS
In order to use **Mkchromecast** you need the following software to stream with
`node.js`:
* Python2 (already shipped in OS X), or Python3.
* pychromecast.
* psutil.
* mutagen.
* [Soundflower](https://github.com/mattingalls/Soundflower/).
* PyQt5 (optional if you want to use the system tray menu).
For more control, you need `ffmpeg` as backend. In that case install the
following:
* flask (optional).
* ffmpeg (optional).
* youtube-dl (option if you plan to cast youtube URLs or [supported
websites](https://rg3.github.io/youtube-dl/supportedsites.html)).
#### Linux
* Pulseaudio.
* Pavucontrol.
* Python2 (if using the official debian package), or Python3.
* pychromecast.
* psutil.
* mutagen.
* flask.
* vorbis-tools.
* sox.
* lame.
* flac.
* faac.
* ffmpeg (optional).
* avconv (optional).
* PyQt5 (optional if you want to use the system tray menu).
* youtube-dl (option if you plan to cast youtube URLs or [supported
websites](https://rg3.github.io/youtube-dl/supportedsites.html)).
* soco (this module adds Sonos support to Mkchromecast).
For those who don't like Pulseaudio, it is possible to [cast using
ALSA](https://github.com/muammar/mkchromecast/wiki/ALSA). In that case the
requirements are:
* alsa-base
* alsa-utils
* alsa-utils
* Python2 (if using the official debian package), or Python3.
* pychromecast.
* psutil.
* mutagen.
* flask.
* vorbis-tools.
* sox.
* lame.
* flac.
* faac.
* ffmpeg.
* avconv (optional).
* PyQt5 (optional if you want to use the system tray menu).
* youtube-dl (option if you plan to cast youtube URLs or [supported
websites](https://rg3.github.io/youtube-dl/supportedsites.html)).
* soco (this module adds Sonos support to Mkchromecast).
Install
-------
There are two ways of installing this application:
1. Using the [binaries](https://github.com/muammar/mkchromecast#binaries).
2. From [sources](https://github.com/muammar/mkchromecast#from-sources).
#### Binaries
##### macOS
There is a standalone application for **macOS** users. You need to drag it to your
`/Applications/` folder.
[Download the latest dmg
here](https://github.com/muammar/mkchromecast/releases/latest/).
You need also to [install
Soundflower](https://github.com/muammar/mkchromecast#soundflower-macos-users-only).
###### Homebrew Cask
If you are using homebrew, it is possible to install the binary as follows:
```
brew cask install mkchromecast
```
If you find any problem with the application, please [report it
here](https://github.com/muammar/mkchromecast/issues).
##### Linux
* Debian (.deb): [https://packages.debian.org/mkchromecast](https://packages.debian.org/mkchromecast).
* Ubuntu (.deb): [http://packages.ubuntu.com/search?keywords=mkchromecast](http://packages.ubuntu.com/search?keywords=mkchromecast).
**Mkchromecast** is available in the [official Debian
repositories](https://packages.debian.org/mkchromecast). To install
it, just do:
```
apt install mkchromecast
```
Download the latest [deb package
here](https://github.com/muammar/mkchromecast/releases/), and install it as
follows:
```
sudo apt -f install ./mkchromecast_$VERSION_all.deb
```
where `$VERSION = X.Y.Z-Rev`, _e.g._: `0.2.6-1`.
This should work in Debian Unstable and Testing. I would appreciate Ubuntu
testers as well. If you find any problems, please [report it
here](https://github.com/muammar/mkchromecast/issues).
If you experience other problems related to dependencies, please [discuss them
here](https://github.com/muammar/mkchromecast/issues/9) or open a new issue.
Additionally, there are two dependency packages for pulling pulseaudio or ALSA
dependencies:
```
apt-get install mkchromecast-alsa (ALSA users)
```
or
```
apt-get install mkchromecast-pulseaudio (Pulseaudio users)
```
#### From sources
To install **Mkchromecast**, clone this repository:
```
git clone https://github.com/muammar/mkchromecast.git
```
Or you may download one of the [stable releases
here](https://github.com/muammar/mkchromecast/releases), and unzip the file.
##### Arch Linux
Mkchromecast is available at the AUR : [https://aur.archlinux.org/packages/mkchromecast-git/](https://aur.archlinux.org/packages/mkchromecast-git/).
```bash
#install with yaourt
yaourt mkchromecast-git
```
```bash
#install with pacaur
pacaur -S mkchromecast-git
```
If you get the error `cannot import name 'DependencyWarning'` in Arch Linux,
please check issue [#31](https://github.com/muammar/mkchromecast/issues/31).
##### Python
To install python requirements use the `requirements.txt` file shipped in
this repository:
```
pip install -r requirements.txt
```
**Note**: if this step fails, maybe you need to run the installation with
`sudo` as shown below. However, before installing using this method verify why
a regular user cannot install these requirements.
```
sudo pip install -r requirements.txt
```
**Linux** users can try to install these python requirements using the package
managers coming with their distributions.
Example for Debian based distros:
```
sudo apt-get install python2.7 python-pip python-pychromecast python-flask python-psutil python-setuptools python-mutagen python-gi vorbis-tools sox lame flac faac opus-tools
```
**Note**: if `python-pychromecast` is not available in your repository,
follow instructions in [#9](https://github.com/muammar/mkchromecast/issues/9).
##### Soundflower (macOS users only)
For installing Soundflower you can check
[https://github.com/mattingalls/Soundflower/](https://github.com/mattingalls/Soundflower/)
and just download the [latest dmg
file](https://github.com/mattingalls/Soundflower/releases).
If you have [Homebrew](http://brew.sh/) you can use [brew
cask](https://caskroom.github.io/) as follows:
```
brew cask install soundflower
```
By default, the sample rate in Soundflower is set to `44100Hz`. If you desire
to stream at higher sample rates follow the [instructions in the
wiki](https://github.com/muammar/mkchromecast/wiki/Sample-rates).
**Note**: re-sampling to higher sample rates is not a good idea. It was indeed
an issue in chromecast audio devices. See [this thread](https://goo.gl/yNVODZ).
Therefore, if you want to go beyond `44100Hz` you have to [capture the sound at
a higher sample rate](https://github.com/muammar/mkchromecast/wiki/Sample-rates).
##### ffmpeg or avconv
The easiest way of installing `ffmpeg` is using a package manager, *e.g.*: brew,
macports or fink. Or in the case of **Linux**, *e.g.*: apt, yum, or pacman.
###### macOS
I will briefly describe the case of Homebrew here. First, you will need
Homebrew installed in your machine:
```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
Once Homebrew is ready, you can install `ffmpeg`. As stated in the [ffmpeg
website](https://trac.ffmpeg.org/wiki/CompilationGuide/MacOSX), and for being
able to use all audio coding formats in **Mkchromecast**, it is better to
install `ffmpeg` with the following options enabled:
```
brew install ffmpeg --with-fdk-aac --with-tools --with-freetype --with-libass --with-libvorbis --with-libvpx --with-x265 --with-opus
```
**Mkchromecast** does not support `avconv` in **macOS**.
###### Linux
As I use Debian, the way of installing `ffmpeg` is:
```
apt-get install ffmpeg
```
or `avconv`
```
apt-get install libav-tools
```
**Audio coding formats available with `parec`, `ffmpeg` and `avconv` backends**
**Audio coding format** | **Description** | **Notes**
------------------------| ----------------------------------|------------------
`mp3` | MPEG Audio Layer III (default) | Lossy compression format (default bitrate: 192k)
`ogg` | Ogg Vorbis | Lossy compression format (default bitrate: 192k)
`aac` | Advanced Audio Coding (AAC) | Lossy compression format (default bitrate: 192k)
`opus` | Opus | Lossy compression format (default bitrate: 192k)
`wav` | Waveform Audio File Format | Lossless format (HQ sound)
`flac` | Free Lossless Audio Codec | Lossless format (HQ sound)
##### PyQt5
These Python bindings are needed if you intend to use the system tray menu. As
of today April 28th, `pip` is able to install `PyQt5`. Therefore, you can do
a `pip install pyqt5`.
If this does not work for you, I suggest you to install it using a package
manager.
###### macOS
Example with Homebrew:
```
brew install pyqt5 --with-python
```
###### Linux
* **Debian**
For Python2:
```
apt-get install python-pyqt5
```
For Python3:
```
apt-get install python3-pyqt5
```
or if you desire it you can do it yourself from the sources.
Updating
--------
To update **Mkchromecast** sources, just get into the cloned directory and:
```
git pull
```
or if you prefer it, you can just pass the `--update` argument to
**Mkchromecast**:
```
python mkchromecast.py --update
```
If you are using the **macOS** application:
1. Click on `Check For Updates`.
2. If there are new versions, you will be prompted to [download the latest
dmg](https://github.com/muammar/mkchromecast/releases/latest).
3. Replace the `mkchromecast.app` in your `/Applications/` directory.
**Linux** users need to either perform a `apt-get upgrade` or [download the
latest deb here](https://github.com/muammar/mkchromecast/releases/), and `dpkg
-i mkchromecast_$VERSION_all.deb`.
Usage
-----
#### Audio
Get into the cloned **Mkchromecast** directory and execute:
```
python mkchromecast.py
```
This will launch **Mkchromecast** using `node.js` (or `parec` for **Linux**
users), and will do the streaming part together with the `mp3` audio coding
format. `node.js` works decently but the server may tend to _fail_ under certain
circumstances. In such a case, **Mkchromecast** is able to restart the
_streaming/casting_ process automatically. So, some hiccups are expected.
**Note**: most of the steps described herein are the same for **macOS** and **Linux**
users. However, if you launch the command above in **Linux**, the process is
less automatized. In **Linux**, you need to select with `pavucontrol` the sink
called `Mkchromecast` to stream unless you are using [ALSA](https://github.com/muammar/mkchromecast/wiki/ALSA).
See the [wiki for more information](https://github.com/muammar/mkchromecast/wiki/Linux). tl;dr?, just
check the gif below.

**Note**: the cast process is independent from the selection of the pulseaudio
sink. This means that **Mkchromecast** will tell the cast device to listen your
computer but no sound will be heard until you select the sink. For ALSA users, this
does not apply.
##### Using the `ffmpeg` backend with **Mkchromecast** installed from sources
Below an example using `mp3`:
```
python mkchromecast.py --encoder-backend ffmpeg
```
With `ffmpeg` you can modify the codec:
```
python mkchromecast.py --encoder-backend ffmpeg -c aac
```
change the bitrate and sample rate:
```
python mkchromecast.py --encoder-backend ffmpeg -c mp3 -b 128 --sample-rate 31000
```
check the section [Soundflower (macOS users
only)](https://github.com/muammar/mkchromecast#soundflower-macos-users-only)
for more about sample rates.
You also can set the host ip manually which is a useful option when having more
than one active network connection or when the automatically ip detection fails:
```
python mkchromecast.py --host 192.168.1.1
```
##### Other examples with **Mkchromecast** installed using the debian package
To cast using `parec` and `wav` audio coding format:
```
mkchromecast -c wav
```
There is also an option to change the `bitrate`, and in this case with `ffmpeg`:
```
mkchromecast --encoder-backend ffmpeg -c ogg -b 128
```
and another one to change the sampling rate:
```
mkchromecast --encoder-backend ffmpeg -c ogg -b 128 --sample-rate 48000
```
**Note**: to use `avconv` just replace from `ffmpeg` to `avconv` in the
commands above.
##### Using **Mkchromecast** from the system tray
To launch it:
```
python mkchromecast.py -t
```
or
```
mkchromecast -t
```
The system tray application can perform all the actions from the aforementioned
commands. To get an idea, please check the [Youtube video
here](https://github.com/muammar/mkchromecast#macos).
#### Playing Youtube URLs in Google Cast devices
You can play Youtube URLs (or [other
sites](https://rg3.github.io/youtube-dl/supportedsites.html) headlessly from
the command line:
```
python mkchromecast.py -y https://www.youtube.com/watch\?v\=NVvAJhZVBT
```
To use this function, you need to install `youtube-dl`. In macOS, this can be
done with homebrew: `brew install youtube-dl`. In Debian based distros:
`apt-get install youtube-dl`.
**Note**: you may need to enclose the URL between quotation marks, and only
URLs over `https` are supported.
#### Playing source URLs in Google Cast devices
You can play any source URLs headlessly from the command line:
```
python mkchromecast.py --source-url SOURCE_URL
```
This option is useful for:
1. Casting using MPD in the case you have already a `http` streaming source.
2. Casting a radio station. A list of stations to try: https://ponyvillefm.com/servers
Example:
```
python mkchromecast.py --source-url http://192.99.131.205:8000/pvfm1.ogg -c ogg --control
```
As it can be seen above, **the codec has to be specified with the `-c` flag**.
**Note**: `.m3u` or `.pls` are not yet supported.
#### Controlling the Google Cast's volume and pause/resume options
You can control the volume of your Google Cast device by launching
**Mkchromecast** with the option `--control`:
```
python mkchromecast.py --encoder-backend ffmpeg -c ogg -b 320 --control
```
This will allow you to press u and d keys for `volume up`
and `volume down` respectively.
The system tray has a window with a volume slider to do `volume up` and `volume down`.
#### High quality audio
**Mkchromecast** lets you cast using `24-bit/96kHz` high audio resolution. This
is the *maximum chromecast audio capability*. The supported codecs are: `wav`
and `flac`. In spite of the fact that `aac` can use `96000Hz` sample rate, the
bitrate corresponds to that of a lossy data compression format. Therefore, the
following combinations can achieve this `24-bit/96kHz` capability:
* `wav` + `96000Hz` sample rate.
* `flac` + `96000Hz` sample rate.
References:
* [#11](https://github.com/muammar/mkchromecast/issues/11).
* [Lossless formats](https://github.com/muammar/mkchromecast/wiki/Audio-Quality#lossless-formats).
#### Video
You can now cast videos to your Google cast using **Mkchromecast**. This feature works both with `node`
and `ffmpeg` backends and from command line. In the future, they may be a graphical interface
for this process. [See this project](https://github.com/muammar/mkchromecast/projects/1).
* Cast a file from your computer to your chromecast:
```
python mkchromecast.py --video -i "/path/to/file.mp4"
```
```
python mkchromecast.py --video -i "/path/to/file.mp4" --encoder-backend node
```
**Note**: the format of the file can be whatever is supported by `ffmpeg` and not exclusively mp4.
* Subtitles
```
python mkchromecast.py --video -i "/tmp/Homeland.S06E01.Fair.Game.1080p.AMZN.WEBRip.HEVC.DD5.1.x265.mkv" --subtitles /tmp/Homeland.S06E01.Fair\ Game.HDTV.x264-BATV.en.HI.srt
```
* Set the resolution
```
python mkchromecast.py --video --resolution 4k -i /path/to/myvideo.something --subtitles /path/to/my.srt
```
* Cast from a source url:
```
python mkchromecast.py --source-url http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4 -c mp4 --volume --video
```
* Youtube Video
```
python mkchromecast.py -y https://www.youtube.com/watch\?v\=VuMBaAZn3II --video
```
Killing the application
-----------------------
To kill **Mkchromecast** when you run it from console, just press
Ctrl-C or q key to quit (when `--control` flag is passed).
When launching from system tray, use the `Quit` button in the system tray.
More help
---------
To get more help:
```
python mkchromecast.py -h
```
or when installing the debian package:
```
mkchromecast -h
```
Known issues
------------
##### General
* **Mkchromecast**'s versions lower than 0.3.7 cannot operate with newer
versions of pychromecast.
* When casting videos using the `node` backend, it is not possible to
use neither the `--subtitle` nor the `--seek` flags.
* When casting to Sonos the only codecs supported are: `mp3`, and `aac`.
I won't give `wma` support. Apparently there is a way to play `wav`, and
`ogg` that I will try to implement later.
##### macOS
* **Mkchromecast** v0.3.6 cannot connect to selected chromecast when there are
more than one available. In that case, you need to use the application from
sources or build the application as shown
[here](https://github.com/muammar/mkchromecast/wiki/macOS-standalone-app).
##### Linux
* When using `parec` and `lame` encoder, the delay between audio played and
listened can be up to 8 seconds. I suggest you to use something different
than mp3.
You can also check the [FAQ](https://github.com/muammar/mkchromecast/wiki/FAQ)
for more information.
TODO
----
* Verify all exceptions when the system tray menu fails.
* **Sonos**: add support to different available flags.
* **Sonos**: add Equalizer in the controls.
mkchromecast-0.3.8.1/changelog.md 0000664 0000000 0000000 00000031246 13217735121 0016622 0 ustar 00root root 0000000 0000000 * mkchromecast (0.3.8.1) **2017/12/24**
- A bug when no devices where found has been fixed in this release.
* mkchromecast (0.3.8) **2017/12/23**
- Improved stability.
- The macOS bundle is now renamed with capital M, and will not be showing
in the dock.
- Chunk size changed from 1024 to 64. Added two more variables that
decreases the delay considerably.
- Improved ffmpeg commands for pulseaudio part of the code.
- node streaming updated to work with `node v9.3.0`.
- Manpage is now shipped in main branches.
- TypeError caused by a print statement for Soco devices has been fixed.
Closes #80.
- Added Opus codec support.
- It is now possible to screencast using mkchromecast.
- Using the `--youtube` flag works with all supported websites by youtube-dl.
- Correct signal handling using the `signal` module. PR #87 by @Foxboron.
- Renamed `--reconnect` to `--hijack`. Closes #25.
- New flag `tries` to to limit the number of tries to connect to
a chromecast. Closes #54.
- Allow custom server port with ffmpeg or avconv. Related to #122.
- Error with "width not divisible by 2 (853x480)". Closes issue #119.
- The `segment_time` flag has been fixed. Closes issue #71.
- New flag `command` for setting a custom ffmpeg command. Closes issue
#109.
* mkchromecast (0.3.7.1) **2017/05/21**
- macOS bundle built in Yosemite to add more compatibility.
- Bumped version to match debian official release.
* mkchromecast (0.3.7) **2017/05/20**
- node streaming updated to work with `node v7.10.0`.
- Added ALSA device configuration in preferences pane.
- Improved systray stability, and usability.
- gstreamer support for capturing audio.
- Fixed problem related to setting `ogg` and `aac` bitrate. Closes #21.
- A `--segment-time` option added to modify the segment time when using
ffmpeg.
- A `--reconnect` option that monitors if mkchromecast has disconnected
from google cast, and tries to reconnect.
Closes [#25](https://github.com/muammar/mkchromecast/issues/25).
- ALSA device can be set from systray.
- Add support for newer `pychromecast` versions.
Closes [#32](https://github.com/muammar/mkchromecast/pull/32).
- Making ping code python 3 compatible. Closes:
[#35](https://github.com/muammar/mkchromecast/pull/35).
- Fixed problem when having various Google cast devices. Closes
[#50](https://github.com/muammar/mkchromecast/issues/50)
- Added support to 192000Hz sampling rate support (Closes:
[#39](https://github.com/muammar/mkchromecast/issues/39)).
- Fixed a minimal problem with size of preferences pane.
- Video support.
- node is a supported backend for streaming video.
- Added Sonos speakers support.
- FLAC codec supports bitrate.
* mkchromecast (0.3.6) **released**: 2016/09/19
- The node streaming has been updated to work with `node v6.6.0`.
- `Ctrl-C` now raises `KeyboardInterrupt` when using `--volume` option from
console.
- Improvements under the hood.
- Now mkchromecast does not need pulseaudio to cast!.
- You can play from stream using the `--source-url` flag.
- `-d` option has been enable to discover available Google cast devices.
- `--host` flag allows users to manually enter the local ip. Closes
[#17](https://github.com/muammar/mkchromecast/issues/17).
- `-n` flag allows users to pass the name of their cast devices.
* mkchromecast (0.3.5) **released**: 2016/08/26
- Added close button for preferences pane. Closes
[#13](https://github.com/muammar/mkchromecast/issues/13)
- Improvements for cases where there are virtual network interfaces
present.
- Dropped `-re` flag from ffmpeg and avconv commands.
- Renamed `ffmpeg.py` to `audio.py`.
* mkchromecast (0.3.4) **released**: 2016/08/19
- New white icons.
- Added 96000Hz sampling rate support for `ffmpeg` and `avconv` backends.
Closes [#11](https://github.com/muammar/mkchromecast/issues/11).
- Fixed 48000Hz sample rate case.
- The node streaming has been updated to work with `node v6.4.0`.
* mkchromecast (0.3.3) **released**: 2016/08/16
- Improved MultiRoom support. Closes
[#8](https://github.com/muammar/mkchromecast/issues/8).
* mkchromecast (0.3.2) **released**: 2016/06/15
- Improvements for cases where chromecasts have non-ascii characters in
their names. Closes
[#7](https://github.com/muammar/mkchromecast/issues/7).
* mkchromecast (0.3.1) **released**: 2016/08/12
- Improved Preferences window.
- The node streaming has been updated to work with `node v6.3.1`.
- Improvements in pulseaudio.py for preventing subprocess.Popen from
displaying output.
- Improvements in `Check For Updates` method.
- Added new option `--chunk-size` to control chunk's size of flask server
when streaming using `ffmpeg` or `avconv`.
* mkchromecast (0.3.0) **released**: 2016/07/12
- Youtube URLs can be played piping the audio using `youtube-dl`.
- New method for discovering local IP in macOS. This will improve the
stability of the system tray application. Closes
[#5](https://github.com/muammar/mkchromecast/issues/5).
- Now it is possible to select a different color for the system tray icon.
This is useful when using dark themes.
- The node streaming has been updated to work with `node v6.3.0`.
- Improved stability when using system tray icon.
- New method in preferences window to reset to default configurations.
Closes [#6](https://github.com/muammar/mkchromecast/issues/6).
* mkchromecast (0.2.9.1) **released**: 2016/06/29
- Fixing `stop` segfault.
* mkchromecast (0.2.9) **released**: 2016/06/29
- Improved stability when using system tray icon.
- New `search at launch` option. When enabled, the system tray search for
available Google cast devices at launch time.
- The node streaming server has been updated to work with `node v6.2.2`.
* mkchromecast (0.2.8) **released**: 2016/06/22
- Preferences and volume windows always on top.
- The node streaming has been updated to work with v6.2.1. This improves
stability for macOS users when streaming with node.
- It is now possible to check for updates using the system tray icon.
- Scale factor added for retina resolutions.
* mkchromecast (0.2.7) **released**: 2016/06/16
- Volume now set to max/40 instead of max/10. I have remarked that changing
volume directly in the chromecast is more stable and faster than doing it
from the streaming part, e.g. pavucontrol, or soundflower.
- General improvements in system tray's behavior.
- An error when setting volume to maximum has been fixed.
- Now the muted time when launching a cast session is reduced. This is
possible given that Soundflower changes input/output devices
automatically. Linux users have to select a sink in pavucontrol.
- Change from `Mac OS X` to `macOS`.
* mkchromecast (0.2.6) **released**: 2016/06/08
- Volume now set to max/20 instead of max/10.
- This release lets Linux users cast using `parec` with external libraries
instead of `ffmpeg` or `avconv`.
- The program does not import any PyQt5 module when launched without the
system tray.
- A deb package is now provided in this release.
- The system tray will retry stopping the google cast before closing
abruptly.
- The Mac OS X application now supports models below the year 2010. See
[#4](https://github.com/muammar/mkchromecast/issues/4).
* mkchromecast (0.2.5) **released**: 2016/05/25
- This release fixes a problem with the system tray menu failing to read
configuration files when changing from lossless to lossy audio coding
formats.
* mkchromecast (0.2.4) **released**: 2016/05/21
- This release fixes the system tray menu for Linux.
- Now avconv is supported.
- Pass the `--update` option to update the repository.
- It is now possible to control the Google cast device volume from the
systray.
- You can reboot the Google cast devices from the systray.
- There is a Preferences window to control `backends`, `bitrates`, `sample
rates`, `audio coding formats` and `notifications`.
* mkchromecast (0.2.3.1) **released**: 2016/05/08
- This release fixes the Signal 9 passed by error in the Stand-alone
application.
* mkchromecast (0.2.3) **released**: 2016/05/08
- The code has been partially refactored to ease maintenance.
- Printed messages have been improved.
- Stand-alone application for Mac OS X is released. It only works for the
`node` backend.
* mkchromecast (0.2.2) **released**: 2016/05/03
- Fixed error with Python2 when importing threading module.
* mkchromecast (0.2.1) **released**: 2016/05/02
- Method for monitoring `ffmpeg` backend. This update is useful for those
who use the system tray menu.
* mkchromecast (0.2.0.2) **released**: 2016/05/01
- Fixed wav for Linux.
* mkchromecast (0.2.0.1) **released**: 2016/05/01
- Catching some minimal errors.
* mkchromecast (0.2.0) **released**: 2016/05/01
- Linux support.
- Linux only plays with ffmpeg.
- Now by default log level for `ffmpeg` backend is set to minimum.
* mkchromecast (0.1.9.1) **released**: 2016/04/27
- Fixed node bug introduced in f635c5d66649767a031ac560d7c32ba6bffe33fe.
* mkchromecast (0.1.9) **released**: 2016/04/25
- Play headless youtube URL.
- Now you can control volume up and down from mkchromecast. So, no need
of using the Android app for this anymore.
* mkchromecast (0.1.8.1) **released**: 2016/04/21
- Set maximum bitrates and sample rates values for `node`.
* mkchromecast (0.1.8) **released**: 2016/04/21
- Set maximum bitrates and sample rates values for both backends.
- New icon when no google cast devices are found.
- `streaming.py` was renamed to `node.py`.
- Tested stability: 3hrs streaming at 320k with the `ffmpeg` backend.
* mkchromecast (0.1.7) **released**: 2016/04/18
- The bitrate and sample rates can be modified in both node and ffmpeg.
These options are useful when you router is not very powerful.
- node_modules have been updated.
- An error preventing launching without options has been fixed.
- If PyQt5 is not present in the system, mkchromecast does not try to load
it.
* mkchromecast (0.1.6) **released**: 2016/04/16
- ffmpeg is now a supported backend. You can check how to use this backend
by consulting `python mkchromecast.py -h`.
- The following codecs are supported: 'mp3', 'ogg', 'aac', 'wav', 'flac'.
- Improved screen messages.
- Date format in changelog has been changed.
* mkchromecast (0.1.5) **released**: Wed Apr 13 18:08:44 2016 +0200
This version has the following improvements:
- If the application fails, the process that ensures streaming with node will
kill all streaming servers created by mkchromecast.
- Now there is a systray menu that you can launch as follows:
`python mkchromecast.py -t`.
- To use it, you need to install PyQt5. In homebrew you can do it as
follows: `brew install pyqt5 --with-python`. You can use the package
manager of your preference.
- In a future release, a standalone application will be provided.
* mkchromecast (0.1.4) **released**: Mon Mar 28 19:00:28 2016 +0200
- Now you can pass arguments to mkchromecast. For more information:
`python mkchromecast -h`.
- In this version you can choose devices from a list using:
`python mkchromecast -s`.
- Some improvements to the messages printed on screen.
* mkchromecast (0.1.3) **released**: Sun Mar 27 16:17:11 2016 +0200
- Updated requirements.txt.
- Now some help can be shown.
- The code is now licensed under MIT. I think this license is simpler.
* mkchromecast (0.1.2) **released**: Sat Mar 26 18:49:18 2016 +0100
This new revision has the following improvements:
- mkchromecast has been ported to work with Python3. This is also possible
because pychromecast works as well. The nodejs binary has been recompiled,
and node_modules have been updated. The program seems to be more stable.
* mkchromecast (0.1.1) **released**: Fri Mar 25 23:59:12 2016 +0100
- In this new version multithreading is dropped in favor of
multiprocessing. This is to reconnect the streaming server easily. Killing
processes is easier than killing threading it seems.
I strongly encourage you to upgrade to this version.
* mkchromecast (0.1.0) **released**: Fri Mar 25 13:21:12 2016 +0100
- In this beta release, the program casts to the first google cast found in
the list. If the node streaming server fails, the program reconnects.
mkchromecast-0.3.8.1/images/ 0000775 0000000 0000000 00000000000 13217735121 0015610 5 ustar 00root root 0000000 0000000 mkchromecast-0.3.8.1/images/Awesome_BI.png 0000664 0000000 0000000 00005334310 13217735121 0020301 0 ustar 00root root 0000000 0000000 PNG
IHDR
@ :Ό bKGD pHYs tIME 77 IDATxw|wө7mY&˶{7v`!Kqȏ|/$I7-MVgYTL杼nnvgv|yPTc1|W:Γ3TVVp bwϐ%@ @Uv4W/>aB,l69(d8e:?@ ^x'F̌\Vie*@ @ wcBWefS%BwJJuB
'x%sbcmp 9\]~0<1y^t%@ VpmĉiV+=:YxFR6>UȂH+@ @ xHLL|zkrERL&8 BhxWbWKX9D$U(Azc9ev8&@ :믿N`ݍ9k0]۵3kKw"4L)&-F @ p[0fuu4M/_LFFFNHI
U]illE"Jl6m3K6^|xgs$H;-q|!S2k+LfG߭Z L ?" JXcLaoНv'ګLA C @ @ nGgggAAA.#)qB65b)d]ascXjҊr #G c0Ƙ"^,A;%F5.ur[SMssbZm?ᥪl=OsD .S(_ƃ1}%U5P
@ @ fǎO?8:ĉ---UUU͍3f@Z~dQbvSA*8*<)Y9⥔a56;mf6 #K5 R67KH?@C4[ƋsSɗo}-ՔO @ 0<#83'O