このエントリーが役に立ったらシェアをお願いします!

PythonでChromecastを制御してみた!

このエントリーが役に立ったらシェアをお願いします!

先日Python入門者の集いで登壇させて頂き、PythonでChromecastを制御した話をさせていただきました。今回はPythonのパッケージ「pychromecast」を使ってChromecastを制御する方法についてご紹介します。

スポンサーリンク

pychromecastとは

Chromecast
pychromecastとはPythonからChromecastを制御するためのパッケージです。Python2または3で利用できます。ネットワーク上のChromecastを検出し、動画・静止画の再生などを制御することができます。通常はGoogle Cast SDKを使用してCastのアプリを開発をしますが、Google Cast SDK Developer Consoleに有料($5.00)で登録しなければなりません。
pychromecastはそういった登録をせずに開発を始めることができます。

Pythonにpychromecastをインストールする方法

Python2.7.9以降、Python3.4以降であればパッケージ管理ツールのpipが同梱されているので、下記コマンドでインストールできます。

pip install pychromecast

Pythonにpipが入っていない場合

get-pip.pyを使ってインストールができるようです。

python get-pip.py

PythonフォルダのScriptsに入ってきます。

pipがあれば簡単にパッケージをインストールできるので、入っていない方はここで入れておきましょう。

PythonでChromecastを制御する

ここからChromecastを制御するための準備に入ります。まずはChromecastを挿した時、画面に表示されるChromecastの名前をチェックします。

chromecastの名前を確認する

chromecastの名前を確認


この名前を元にPythonで制御を行っていきます。実際にChromecastのステータスを確認しながら実行していくので、コンソールから一行ずつ叩いてみてください。githubにあるpychromecastの使い方の通りに実行していけば問題ありません。

>> from __future__ import print_function
>> import time
>> import pychromecast
>> pychromecast.get_chromecasts_as_dict().keys()
[u'Chromecast6637']

>> cast = pychromecast.get_chromecast(friendly_name="Chromecast6637")
>> cast.wait()
>> print(cast.device)
DeviceStatus(friendly_name=u'Chromecast6637', model_name=u'Chromecast', manufacturer='Google Inc.',
 api_version=(1, 0), uuid=UUID('ここにUUIDが表示される'), cast_type='cast')

>> print(cast.status)
CastStatus(is_active_input=False, is_stand_by=True, volume_level=1.0, volume_muted=False,
 app_id=u'ここにAPPIDが表示される', display_name=u'Backdrop', namespaces=[u'urn:x-cast:
com.google.cast.see', u'urn:x-cast:com.google.cast.media'], session_id=u'ここにSESSIONIDが表示される',
 transport_id=u'web-1', status_text=u'')

>> mc = cast.media_controller
>> # ここで動画のURLとMIMEタイプを指定すると再生が開始される
>> mc.play_media('http://example.com/example.mp4', 'video/mp4')
>> # 動画を一時停止
>> mc.pause()
>> # 動画を再開
>> mc.start()
>> # 動画を最初から再生
>> mc.rewind()
>> # 動画を停止
>> mc.stop()

動画の制御は基本的にMediaControllerで行います。MediaControllerを使うことで動画の再生・停止などの制御を行うことができます。ここの例では動画を指定していますが、静止画のURLとMIMEタイプを渡すと画面に表示させることができます。
また、YouTubeControllerもソースにあるのでいろいろ試せそうです。

Chromecastを実際に動かしてみた

実際にPythonから制御した動画です。LTで使用したものです。コンソールからPythonのコードを叩きながら動画を制御しています。

最後に

今回はpychromecastについてご紹介させていただきましたが、いかがでしたでしょうか!
ネットワーク経由でデバイスを制御するのは一見難しそうな印象ですが、それも簡単にできてしまうのはPythonの魅力の一つかと思います。pychromecastは現在進行形で開発も進んでいるので、今後の機能追加にも注目していきたいですね。

スポンサーリンク

このエントリーが役に立ったらシェアをお願いします!

1この記事を書いた人
ShoheiTai
フロントエンド志向のWebエンジニア。
HTML5やWeb高速化、SEO等のフロントエンド開発が大好物。
バックエンドではCakePHP,Wordpress開発を主戦場としています。
Web開発のスパイスファクトリー株式会社創業メンバー。

イケてないコード - Webエンジニアのブログの
最新情報をいいねしてチェックしよう!