2019の2日目の記事です。Chromecastを購入していました。Stickに比べて活躍の機会があまりありませんでした。NetBSDラップトップから画面を投影できるのであれば、HDMIケーブルで接続しなくて良いかもしれません。今回は、NetBSD環境の画面を投影してみました。ライブラリーを剪定するウェブを検索してみると、以下の4つの方法が有望そうです。VideoLANのVLCのscreen://を利用する。pyChromecastを利用する。castv2-clientを利用する。node-castv2を利用する。後ろから2つはnode.jsのモジュールです。これはpkgsrcではパッケージングしにくいので、上から2つを試してみました。VLCのscreen://を試す結果から言うと、依存しているlibmicrodnsがNetBSDに対応しておらず、ビルドできませんでした。MCAST_JOIN_GROUPがヘッダーファイルで定義されていない場合のコードが、正しくないようです。RFC3678を良く読まないといけないようなので、今回は断念しました。pyChromecastを試すpyChromecastは、pkgsrc/net/py-pychromecastに用意しました。以下のようにインストールできます。installただし、pyChromecast自体はライブラリーだけなので、サンプルプログラム等が付属する訳ではありません。pyChromecastはzeroconfというPythonのみで書かれたライブラリーのあかげで、無事に使うことができました。pyChromecastのREADME.rstを参考に以下のようなファイルを作って実行してみました。30秒のビデオが再生できました。'video/mp4')mc.block_until_active()mc.play()time.sleep(30)mc.stop()Chromecastへ映像を送る方法は分かりました。次に画面をChromecastに送る方法を考えてみます。自分のChromecastから見える場所にビデオストリームを置いてやれば良いはずです。画面をキャプチャーするのは、ffmpegのx11grabソースが一番手軽なように思います。ffmpegと組み合わせるとなると、一番簡単に使えるのはffserverです。ffserverは、pkgsrc/multimediaffmpeg3を最後に削除されてしまいました。そこで、今回はffmpeg4パッケージではなくffmpeg3を使うことにします。WebMコンテナーのVP8ビデオであれば再生できそうです。解像度は、1980×1080も可能なようですが、1280×720で進めてみます。このようなビデオを配信するffserver3の設定ファイルは以下のようになります。サウンドは今回は配信しません。30NoAudio<:/Stream>実行は以下のようにします。(ここで、10.81.0.117はNetBSDラップトップのIPアドレス)でストリーミング配信されます。これに画面の左上1280×720ピクセル分を流し込むには、以下のように実行します。http://localhost:8090/screen.ffmこのストリーミング配信を再生するようにChromecastに指示するのは以下のようなファイルを用意します。vorbis"')mc.block_until_active()mc.play()time.sleep(120)mc.stop()ファイル名をscreencast.pyとすると、以下のように実行します。screencast.py私の環境では、約5秒から15秒で遅れで配信することができました。ffmpeg3コマンドのオプションを工夫することで、遅延は短くできるかもしれません。ある環境で仕事をせざるを得ない。Protectionのバージョンは14.0.xxxである。10.2というのがあって、まあ、企業で必要とするロギングはできるものなのであろう。Firefoxのアドオンを勝手に追加されるのは気に入らない。e10sとか阻害されても面白くないし。言うことで、試しに排除できるかやってみた。ExcelからVBAでアクセスしたい。個々の端末にODBCデータソースを設定するのはスクリプトで可能かもしれないが、面倒なのでADOとOLEDBの組み合わせでアクセスすることを考えている。