« 2014年10月 | トップページ | 2015年9月 »

2015年7月

2015年7月20日 (月)

Chromecast(クロームキャスト)とTvRemoteViewerで未来型テレビを作る

前記事でご紹介したTVRemoteViewer_VBにChromecast対応機能を追加しましたので、ご紹介いたします。

Whatiscctrv

これを使えば何でもないモニターや、最新型にしろ古くて機能不足だけど画質は今でも気に入ってるテレビにしろ、とにかく映像を映せるものなら何でも

Chrocastvr

こんな感じでTvRemoteViewerのストリーミングを映して楽しめるようになり、また手元のタブやスマホはリモコンとして活用できます。

TVRemoteViewer_VBの全機能とは何ぞや、というと手前味噌ですが、現状で以下の主要な機能があります。

・番組表から起動して自宅で視聴可能な全てのテレビ放送を視聴できる。
・自宅のLAN上にある全てのPCやNASの映像ファイル(除isoイメージ)を視聴できる。視聴中に端末間のシーン引き継ぎも簡単にできる。
・多ストリーム並列配信。(並列数上限はサーバ/ネットワーク能力に依るが仕組み上は無制限)
・プレイリスト機能
・スカパープレミアム放送対応
・VPNを介して出張中/海外でもシームレスに利用可能(期限なし)
・ニコニコ実況表示機能
・2ch実況表示機能
・ファイル/プレイリストのストリーミングも実況付きにできる。
・0.5倍速再生~2倍速再生
・チャプター機能/自動スキップ機能
・目覚まし/お休みタイマ
・二ヶ国語対応

これらの機能全てを利用するのに面倒な配線はいらず、3~4Mbpsの無線LANが繋がるだけでOKというのもメリットです。
手元の全てのスマホやタブ、PCは、もちろん手元での視聴用にも使えますが、加えて多機能リモコンとしても使えるようになります。
この場合(ChromecastにChromeの拡張機器という特性があるため)最初のアプリ起動だけChromeブラウザか専用アプリが必要ですが、起動してしまえばいかなるプラットホームでもブラウザを使ったリモコン機能が使えます。

TVRemoteViewer_VBはもともとはリモート視聴が主眼のシステムだったのですが、本質的には映像をHLSという共通のフォーマットにして様々な情報を付加した上でサービスする仕組みなので、高画質モードで使えば家のテレビやHDDプレーヤーの役目を置き換えることもできます。そういうわけでバージョンを重ねるうちにオールインワンのTV/動画鑑賞システムへと変化してきました。これを活用すれば、気楽に放送&録画再生を楽しめるテレビをあちこちに置けるようになります。
正直最近の市販のテレビはそうでなくても機能面が洗練されていない上に、メーカーは利益の出る大画面TVばかりを売り付けようとして中小型は意図的にその不便な機能すら削ってきているので、家の各部屋や空きスペースに何台も手頃なサイズのテレビを置いたとしても、大して便利な使い方はできません。また折角有料放送に加入してもB-CAS縛りがあるため、加入したカードを挿したテレビでしか視聴ができません。テレビ業界は未だに「リビングに豪華なテレビを1台置いてゆっくりとお楽しみください」という発想なわけです。
それに対してもっと時代に合わせて、このような新しい仕組みを使ってキッチンでも仕事部屋でも、地上波だけでなくBS/CS放送も録画再生も流しっぱなしにできるような「テレビ」を1台といわず2台3台と安価に増やしていく、というのもなかなか楽しい使い道ではないかと。 高いテレビに2in1で映すぐらいなら横にモニタを1,2台置いて裏番組チェックすれば良いわけですし、途中のシーンを別のテレビ/PCやスマホ/タブとの間で行ったり来たり自由に移動できるのも相変わらず便利です。

この辺は基本はTVRemoteViewer_VBの拡張機能なので前記事に追加して書こうとも思ったのですが、Chromecastを使わない人にはあまり関係がないのと、今までの記事に追加・変更を続けているうちに記事日付の間隔も開いてしまいましたので、この機会に別記事としてまとめることにしました。
といってもご利用にはTVRemoteViewer_VBが使える状態になっているのが前提なので、新規にご利用したい方はまずは前記事のTVRemoteViewer_VB の導入をおこなってください。
最新版のTVRemoteViewer_VBが使える状態になっていれば、Chromecast用に必要な追加導入はありません。決まった手順で最初の認識を済ませれば、以後は簡単に使えるようになります。

さて今更な話なので読み飛ばしていただいて構いませんが、そもそもChromecastとは何ぞやというと、こんな感じのデバイスになります。ここの記事では初代のChromecastを使っていますが、現在では円盤型の筺体にHDMIケーブルの生えた2世代目になっており、パフォーマンスも向上しています。

「テレビやモニターのHDMI端子」に接続して、「ローカルの無線LAN」を介して自宅のPC/スマホ/タブレットやネットワークに繋ぐようになっています。(というかその2種類のインターフェースしか持たず、USB端子は給電専用。)
具体的な解説は本家のページにあります。

ただこの辺を見ても、「つべやニコ動をスマホで見ながらボタンを押せば大画面でも見れるの?うーんうちはテレビに直接PCを繋いでるからあんまり有難味はないかな。ゴロ寝しながらスマホで動画見てるのを大画面に引き継げるのはちょっと便利かな。4千円なら遊びのつもりでちょっと買ってもいいかな。」ぐらいにしか思わない方もおられるのではないでしょうか?というか私はそう思っていました。

この形態からして私は最初このデバイスを見たとき、従来のMiracastやスマホをモニターに表示する周辺機器・に毛が生えたようなもの、と誤解しており、「TVRemoteViewer_VBをChromecastで使えるようにしてほしい。」という掲示板の要望があっても「そんな大した話だろうか?」ぐらいにしか考えが至らなかったのですが、さすがにGoogle先生がそんなつまらないモノで騒ぐわけがないとも思い直し、参考記事を読んでみたところ、

http://www.atmarkit.co.jp/ait/articles/1409/03/news033.html

TVRemoteViewer_VBから見れば実に面白い「プラットホーム」であることに気が付きました。
要は独立したOSとChromeベースで動く「Javascript + HTML5」プラットホームであり、ChromeOSの元々の考え方を(ウインドウシステムやアイコンすら取り除いて)よりシンプルにしたものだと判りました。

Javascriptで情報を取ってみるとARMマシンに(Androidではない)LinuxベースのChromeを乗せているのが判ります。

Ccsystembase
これはUserAgentが返す「自己申告値」ですので、Chromecastの実体がこれに沿っているとは限りません。(最初GoogleもChromeOSの簡易版だと説明したらしいのですが、Hackした結果別のものだったというレポートがあるようです。)
ただ重要なのはこれがアプリ上どう振る舞うか、という点なので、アプリの基盤がAndeoidベースではなくCromeのブラウザエンジンであるという点で、ChromeOSの延長上にあると言って間違いないと思います。
(恐らくその下のレイヤは、この手のデバイスに求められる自動運用をどれだけ既存のもので実装できるか、の観点でGoogleTVのモジュール等を持ってきたのではないかと。)

一方TVRemoteViewer_VBはもともと「Javascript + HTML5の動くブラウザであればプラットホームを選ばない」ことを目標に開発したアプリケーションなので、方向性としてぴったり合っています。開発しながらそれがアプリケーションプラットホームとして大きな魅力を持ち機能豊富なことに気が付きながらも何でこんなモノが既に出来ているのに気付かなかったのか、自分の不勉強を恥じるばかりです。

尚、あらかじめのお断りですが、このアプリケーションはChromecastにとってはかなり重い処理が多く、2世代目でだいぶ改善されたとはいえ、処理が重くなる場合がまだまだあります。私自身が気が付いた注意点は以下の通りです。

1)Chromecastにとってはテレビの単なる再生であればむしろ得意分野で、1920x1080(フルHD)の解像度であっても滑らかに動きます。と言うより
日頃パソコンや安めのテレビで観ている方は、発色の綺麗さや、引っかかりもなくヌルヌル動く映像に驚くと思います。デバイスの立ち位置として動画エンジンがこの値段にしてはしっかり出来ているように思えます。
つまり値段からすれば意外かもしれませんが、実況表示に拘らないのであればChromecastは今のところ、手頃な高画質の再生環境としてWindowsPCと同等のデバイスになります。(以前はWindows以上!と言っていたのですが、最近はWindows環境でもhls.jsが使えるようになってHD解像度の表示も楽にこなすようになりWin10 Edgeは更にヌルヌル再生できますので、画質はそれと同等、ということになります。)

ちなみにChromecastで表示される文字コメントやイメージのようなHTMLパーツは、解像度1280x720の大きさで表示されるのですが、リンク先の情報によれば実際のvideo要素は1920x1080の映像ならしっかりその解像度で表示してくれるそうです。(内部処理でvideo要素をスーパーインポーズしている?)
これが本当なら、現在のChromecastのビデオ出力は1920x1080迄ですが、将来もっと高解像度をサポートしたり(AndroidTVの形で)高解像度テレビに内蔵される際には、その能力をしっかりこれで使えそうですね。またそういった環境でも文字が米粒になったりしない仕組みのようです。

2)ファイル/プレイリスト再生についても、TvRemoteFiles ver1.30で安定して使えるようになりました。
ver1.29で起きていた「再生途中でハングする問題」は、「ファーム32904以降で特定のDOM要素の頻繁な書き換えで起きる現象」と判りましたので、(ファームのバグなのか元々H/Wの限界ぎりぎりだったのがたまたま発覚したのか微妙ですが)いずれにしろ問題そのものを回避する作りに変えました。現在はごく当たり前にファイル再生/プレイリスト再生をご利用いただけます。

3)単純な動画再生と比べれば実況表示には処理能力、特にメモリー容量が限られているため、多量のコメント同時表示は苦手で、また文字の流れもあまり滑らかにはなりません。コメントを流す時はあまり大量に流さず、コメント表示最大数を低めにしてみてください。(最大数を20~40ぐらいにして負荷を減らしたほうが安定すると思います。)

Chromecastは2世代目になってCPU性能はかなり向上しており、その分コメントの動きも軽くなっています。
Cccapacity 初代

Chromecast2_perform_2 2世代目

数値の意味や他機種との比較はリンク先を参照

ただメモリーが不足気味なのは変わらないので、実況コメントの表示最大数を絞った方が良いのは変わりません。
あまり無理なコメント表示をさせていると数十分でメモリーを圧迫して動作が止まってしまいますので、ご注意ください。(そうなった場合は一旦Chromecastアプリを終了させた上で再度接続することで、メモリーがリセットされ軽い動作に戻ります。)
ちなみにChromecast2と、同価格帯のFireTV Stickは処理能力も同程度ですが、メモリー量とブラウザエンジンの差でFireTV Stickの方が、実況が重くなっても動作が安定している優位点があります。ただセッティングの簡単さやフレームレート倍速の再生をサポートするなどChromecastの優位点もありますので、お好みで選べば良いと思います。(あるいはキャンペーンを活用して両方揃えるのも良いですね。安いですし。)

録画再生に限って言えばハードサブを使う、という選択肢もあります。その場合画質はいくらか低下しますがコメントの流れは滑らかになり、Chromecast側の負荷もかかりません。

4)慣らし運転はTvRemoteFiles ver1.65以降不要になりました。セッティングしてすぐに安定して使えます。

当初、Chromecastの電源OFF/ON時やファームアップ時に、「動画開始後すぐに勝手に再起動がかかる」という現象が起き、これが解消するまで何回か再起動させる「慣らし運転」が必要、というガイドをしていました。しかしこれはTvRemoteFiles ver1.65以降で対策され、問題解消しました。現在はすぐに安定して使えるようになっています。

1.使い方

(1)Chromecastのセットアップ

(2)ChromecastをTvRemoteViewer_VB端末として起動する。
 ① PC/Mac(またはiOS)からChromecastアプリを起動する。
 ② Android専用アプリでChromecastを操作する。

(3)Chromecastで好きな番組や動画を直接再生する。

(4)リモコン機能で操作する。
 ① リモコンの起動
 ② 基本タブ
 ③ ナビ機能
 ④ 解像度、音声、再生位置/再生速度/焼き込み(ファイル再生のみ) 属性変更機能
 ⑤ ページ移動機能
 ⑥ 実況機能
 ⑦ お目覚めタイマ

補足)iOS環境での起動操作について

2.プログラムの構成について

3.Windows PCをアクセスポイント化してリモートで利用する。

4.HDMI端子の無いテレビ/モニターで利用する。

1.使い方

何はともあれ、ChromecastでのTvRemoteViewer_VBの使い方からご説明します。順番は以下の通りですが、既にChromecastをセットアップしてYoutube等で使える状態になっている方は(2)以降を実施していただければ良いです。

(1)Chromecastのセットアップ

これは本家の説明通りにやればOKです。
要は自宅の無線LANの環境にChromecastが繋がるようにして、かつChromecastに識別用IDを付ける作業です。

ちょっとした注意点ですが、初代Chromecastがサポートするのは2.4GHz帯のみです。二代目で802.11ac の5GHz帯もサポートするようになりましたが、家庭内で2.4GHx帯が輻湊していて速度が出ない場合を除いて安定性の面でも、2.4GHz帯のみを利用するのが無難です。
ここの仕様の合わないアクセスポイントには繋がりませんのでご注意ください。

次に、Googleの提供するChromecastセットアップツールの動作には、無線LANの付いたPC/Mac/タブレット/スマホ のいずれかが必要です。もし別のアクセスポイントに繋ぎ直す場合(例えば持ち歩いているノートPCをVPN越しに自宅のLANに繋がるアクセスポイントとして利用する場合)、スマホ等でツールからアクセスポイントの変更をおこなってください。

またIDは後々デバイスが増えた時のことも考えてユニークなものにするのは当然ですが、TvRemoteViewer_VBではこのIDを個々のデバイス管理用ファイル名にも使いますので、ファイル名で禁じられている文字(*や?など)は含まないものにしてください。万一そういった名前を付けている場合も、IDの変更はセットアップツールからいつでも可能です。

(2)ChromecastをTvRemoteViewer_VB端末として起動する。

TvRemoteViewer_VBではChromecastを、よくある対応アプリケーションとは少し違った形で、独立した端末として扱います。
普通、例えばYouTubeでChromecastを使う時は、YouTubeの画面に表示される「Cast ボタン」を押してYouTubeアプリを起動し、再生を移譲して音量や再生位置を操作できるようになりますが

Whatiscc

これらはあくまで今動かしているYouTubeに従属した動作です。
「キャストを停止」するまでは(あるいは他のアプリケーションがChromecastとの接続を上書きするまでは)Chromecast上のYouTubeアプリはアンロードされませんが、特に自律的に動くわけでもなく、他の端末から操作できるわけでもありません。YouTubeが用意した自動再生リストをなんとなく流していくか自分でリストを作るかして順番に流すのがほぼ唯一の自律動作になりますが、最初は物珍しさで流していてもすぐ飽きてしまって、あとは何に活用すれば良いのかわからない、という意見にも繋がってるんじゃないでしょうか?
また当たり前ですがこれらは全てChromeブラウザか、iOS、Androidの「Chromecastに対応した」アプリで操作する必要があります。

それに対してTvRemoteViewer_VBのChromecast機能は、一度起動してしまえば独立して動きます。

Ccview

意図してアンロードしない限り、起動した端末側が終了してもそのまま動き続けますし、他の(同じTvRemoteViewer_VBサーバに繋がった)あらゆるTvRemoteViewer_VB端末と通信できますので、それらを何処からでもリモコンにして操作したり、コメント表示機能、チャプタースキップ機能やプレイリスト機能も自律的に動きます。
また使わない時は何も表示しない黒画面(待機画面)のモードがありますので、節電機能のあるテレビ/モニタなら、この状態で節電状態になります。Chromecastを他に使う予定がなければ日頃はこのモードにしておけば、いちいちアプリを落したり電源OFFにする必要もないです。

ただし最初にTvRemoteViewer_VBアプリを起動する時だけ、Chromecastに対応した端末アプリを利用する必要があります。
これはWindowsやMacの場合はChormecast拡張機能を導入したChromeブラウザを使い、Androidの場合は専用アプリをブラウザから呼び出してChromecast側アプリを起動する操作になります。

この際の注意点ですが、Windows/Macであれば、TvRemoteViewer_VBのサーバが「アドレス192.168.0.10/サーバ名mypc」の場合だと、「http://192.168.0.10:40003」でも「http://mypc:40003」でも何の違いもなくアクセスできますので、後者の形にしている場合もあると思います。またTvRemoteViewer_VBサーバと同じPCなら、localhostとか127.0.0.1でもアクセスできてしまうので、そういう指定になっているかもしれません。(アドレスバーを見れば現在のアドレス指定方法が判ります。)
TvRemoteViewer_VBでは最初にChromecastを呼び出す時にこのアドレスを教えることで、Chromecast側からもアクセスできるようにします。
ところがChromecastの場合、192.168.x.x のようにアドレスを明記していないと繋がりません。(この辺はiOSやAndroidと同じで、ローカルなドメイン名は認めてくれないのが理由です。) また勿論、localhostで繋がるのは同じPC内だけですので、Chromecastからは繋がりません。
したがってChromecastを起動するブラウザでは、ローカルドメイン名でもlocalhostでも127.0.0.1でもなく、IPアドレスを明記した状態でTvRemoteViewer_VB画面を開くようにしてください。
またもともとTvRemoteViewer_VBはリモート視聴システムから始まっているので私自身ここで戸惑う可能性を見落としていましたが、もしChromecastでの利用が主目的の場合でも、TvRemoteViewer_VBサーバには固定IPアドレスを設定し、ここにそのアドレスをセットしてください。

Ccaddress

以下では起動手順をご説明します。

① PC/Mac(またはiOS)からChromecastアプリを起動する

PC/MacのChromeブラウザで操作する場合、トップページにある「デバイス(Cast)」タブから、

Ccconnect0

「Chromecastデバイス操作」ボタンを押すことで、Chromecastの初期操作画面が開きます。

Ccconnect

ここで①"onInitSuccess" "receiver found" の2つのメッセージを確認してください。
これが表示されれば接続可能な状態になったという意味ですので、以後の操作が可能になります。
(もちろん他のブラウザでも画面は開けますが、Chromecast対応機能がないため、これらのメッセージは表示されません。Chromeブラウザが好きか嫌いかに関係なく、この操作だけはChromeを使う必要があります。尤もPCの場合、もともとChromeブラウザで常用されている方も多いと思いますが。)

iOSの端末で同じ接続操作をするためには本来専用アプリが必要ですが、野良アプリが配布できないこともあり、これはご準備しておりません。尤も公表はされていませんでしたが当初はiOSでもChromeブラウザから通常の操作は可能にでした。しかしiOS側なのかChrome側の変更なのか判りませんが、2016年4月以降、その機能は使えなくなっています。(一応後述) よって現状iOSから使う場合は、先にPC/Mac/AndroidからChromecast接続操作をおこなっておく必要があります。

ちなみにこの操作は対応のChromeや専用アプリであれば操作端末側が無線LANをサポートする必要はありませんが、どうやらルーターのHOPカウントはチェックするようで、リモートからVPN越に操作することはできません。
(といっても厳密なチェックではなく、家から離れて数十分間はVPN越しのiPhoneからでも操作できるとか、ちょっとアバウトです。)
もちろんこれは起動操作だけの話で、(3)以降のTvRemoteViewer_VBのリモコン機能が使える状態になれば、拠点に関係なく操作できます。
さて、Chromeブラウザでの操作例を続けます。

ここで②「Chromecastデバイス呼出し」ボタンを押せばブラウザの「Castボタン」がプルダウンし③、Chromecastデバイスを選択できます。
なおこの際に、プルダウンの一番上の行が図のように、英数字の長い(呪文のような)タイトルになっていることを確認してください。

Ccconnect5selectagain_2

判りにくい識別ですが、これが「TvRemoteViewer_VB接続機能」が呼び出されている意味になります。
これが別の、例えば図のような表記になっている時は、

Ccconnect2

単にこのブラウザのミラーリング機能が呼び出されているだけですので、②「Chromecastデバイス呼出し」ボタンを押し直してください。(普通はこのような間違いは起きませんが、うっかり先にcastボタンを押した場合などにミラーリング機能が呼び出されることがあります。)

これで無事Chromecastに接続されると、図のように「(Chromecastの識別ID)に接続中」 の表示となり「ポータル画面」等のボタンが表示され、

Ccconnect3initialconnect

Chromecastの画面自体は黒くなる筈です。
この段階で「ポータル画面」のボタンを押すことで、数秒後に図のような「ポータル(お気に入り登録したチャンネルの番組表)」が表示され、

Ccview1base

操作端末側でもこのタイミングで、現在Activeなストリームの一覧が表示されるようになります。

Ccconnect4initialconnected

初回にこの「ポータル画面」のボタンを押すことは重要で、押す前はChromecastには「Receiverアプリ」がロードされているだけですが、ここで初めてTvRemoteViewerのアドレスが伝えられて、TvRemoreViewerアプリがロードされます。
一度これを実施すればアドレスはCookieに記憶されますので、2回目以降はそれを使ってアプリも自動ロードされるようになるため同じ操作は必要なくなりますが、もしTvRemoteViewerのサーバーが二台以上ある場合は切り替えの度にこれを実施してください。
TvRemoreViewerアプリがロードされたことでポータルが表示され、現在のストリーム一覧も表示されますので、確認のために予めいくつかストリームを立ち上げておくと良いと思います。

以上で初期接続は完了です。各ストリームのボタンを押せば直接Chromecastでストリームの再生ができますが、あくまで簡易機能ですので、以後の操作はリモコン機能でおこなうのがお勧めです。

なおもし2台以上のChromecastを操作したい場合、この状態では最初のChromecastに繋がったままですので、一旦「他のChromecastと接続するためにコネクションを開放」を押してください。すると最初の表示に戻り、「デバイス呼出し」から他のChromecastを同じように接続操作できます。

他にもChromecastが動いてる筈なのにここにリストされていない時は、「デバイスリストに戻る」を選べば、Chromecastの選択リストに戻り、利用可能なChromecast一覧が出て来るはずです。
ちなみにこれらの操作で、うっかりプルダウンの「キャストを停止」ボタンは押さないようにしてください。(表記が紛らわしいですが、このボタンは「Chromecastのアプリケーションを終了する」という意味になります。)
もちろん意図的にアプリケーションを終了させたければこのボタンを押すのも良いですが、ここでChromecastアプリを終了させるのは、アプリにとっては突然ブラウザのXボタンを押したのと同じことですので、あまり宜しくはありません。(設定項目をcookieに保存できないまま終了してしまって設定を忘れてしまったり、仕掛中のファイル書き込みに失敗することもあります。)
アプリの終了操作はリモコンアプリ側で安全に出来ますので、Chromecastがハングしたような時以外は、ここでの終了操作は避けた方が良いと思います。(逆を言えば、ハングした時はここから強制終了させることができます。)

② Android専用アプリでChromecastを操作する。

TvRemoteFiles ver1.33以降ではAndroid環境でChromecastアプリケーションをロードしたり、接続サーバを制御するための専用アプリ「TRV-Chromecastコネクタ」が追加になり、Android端末のみで一貫した操作ができるようになりました。

Trvcicon

このAndroidアプリの特徴は、本来ブラウザアプリであるTvRemoteViewer_VBから専用アプリであるTRV-Chromecastコネクタを、インテント機能を使ってシームレスに行き来できることです。
どのブラウザでもこの機能が使えます。専用アプリ側から直接リモコン機能を呼び出したり、その逆も呼び出せるので、慣れればPC/iOS環境と比べても更に使い易くなると思います。

準備として、この専用アプリはGoogle Playストアを経由しない所謂「野良アプリ」なので、導入を弾かれないようAndroidの設定-セキュリティで「提供元不明のアプリ」をチェックしてインストールを許可しておいてください。

Trvc4dro2dl4

またAndroid用のChromecastアプリを導入しておいてください。

さて、Android環境では最新版で、トップページの「デバイス(Cast)」タブに図の赤枠のようなAndroid専用のボタンが現れます。

Trvc4dro1

「このChromecast操作アプリ呼出し」ボタンを押せば専用アプリが呼び出されます。

ただし専用アプリ未導入の段階でここを押してもリンクエラーが表示されるだけですので、まずはその下の「操作アプリ導入/更新」ボタンを押してください。

Trvc4dro1inst

すると公開サーバから専用アプリがダウンロードされますので、これを導入してください

その際の操作はブラウザやシステム環境で微妙に異なります。
例えば標準ブラウザやChromeではダウンロードのメッセージが出たあと、図のように左上にダウンロード済みのマークが表示されるだけですので、

Trvc4dro2dl1

ここをドラッグしたまま下まで引っ張って、図のようなファイル一覧表示にしてください。

Trvc4dro2dl2

但しAndroidのバージョンによっては、ダウンロード時に自動的に図のようなファイル一覧表示になる場合もあります。

Trvcdlfiles

いずれにしろダウンロードしたファイルをタップすれば図のようなダイアログが出ますので、インストールを指定してください。

Trvc4dro2dl0
(ダイアログの形式はAndroidバージョンで多少異なります。)

ここで図のようなインストールブロックメッセージが出る場合は

Trvc4dro2dl3

最初にあるように「提供元不明のアプリ」を許可してからインストールしてください。

他のブラウザで、たとえばHabitBrowserではダウンロード時に完了後アクションが指定できますので、

Trvcdlfiles2

ここで「実行する」を指示して「OK」を押せば良いです。

以上の手順で専用アプリのインストールが終わったら、そのまま起動せず、TVRemoteViewerトップ画面デバイス(Cast)タブに戻ってください。(このアプリはブラウザのTVRemoteViewerから呼び出される前提の作りになっていますので、直接起動しても使えないことはありませんが、通常はTVRemoteViewer操作の流れの中で呼び出す形になります。単独で使う場合、バックグラウンドになると自動終了するように作られていますのでご注意ください。)

デバイス(Cast)タブの「Chromecast操作アプリ呼出し」ボタンを押せば

Trvc4dro1invoke

図のような画面でアプリが起動します。

Trvc4dro3

ここでネットワーク内のChromecastが検出されれば右上にCASTボタンが表示されますので、押してください。図のように検出したChromecastの一覧が表示されます。

Trvcselect

この一覧で操作したいChromecastを選択すればレシーバーアプリがロードされ、「コネクション確立」のメッセージ、および各ボタンがActiveに変わります。

Trvcselected

この際、通常はChromecast側がcookieに記憶しているTVRemoteViewer_VBサーバを自動的に呼び出して接続し、数秒後にステータス欄に接続中のサーバ情報が表示されます

Trvcselectedconnected

が、Chromecast導入直後や別のTVRemoteViewer_VBサーバに繋ぎ直したい時は、サーバの情報をChromecastに伝える必要があります。その機能が上の「サーバ指定」欄と、「TRVサーバに接続/更新」ボタンです。

Trvcsvrselect
(逆を言えばここの欄とボタンは、新規に導入したり複数のサーバを切り替えたい時以外は弄る必要はありません。)

「サーバ指定」欄には呼び出し元がサーバアドレスをセットしていますので、その内容のままサーバアドレスをChromecastに伝える場合は「上記TRVサーバに接続/更新」ボタンを押してください。数秒後にステータス欄の「現在のサーバ」に反映されます。

サーバが確定したらリモコンを起動できるようになりますので、「リモコンアプリを起動」ボタンを押してみてください。

Trvcremoconinvoke

利用するブラウザアプリ選択のポップアップが表示される場合は、お好みのものを選択します。

Trvcremoconinvoke_2

この際図の赤丸にある「常時」を選択すれば、次回以降はこの選択画面なしに指定したブラウザでリモコンアプリが起動するようになります。
(指定をやり直したい場合の操作はこの辺をご参考にしてください。)

利用するブラウザは元々これを呼び出したブラウザでも構いませんが、同じブラウザだと元々の画面の上書きでリモコン機能が呼び出されますので、両方の画面を切り替えながら使いたい場合は別のブラウザを選んでも良いと思います。(リモコンはビデオ再生等の特殊機能は使いませんので、標準ブラウザで十分です。)

以上でリモコンが起動したら、以降の操作は(4)リモコン機能 を参照してください。
但しAndroidの場合は、リモコンのページ移動機能の一番下にある「アプリ終了」機能は図のような

Trvc4dro4

「Chromecastデバイス操作」機能に変わり、ここからこの「TRV-Chromecastコネクタ」を相互に呼び出すことができますので、ちょっと便利になっています。

他のボタンも説明しておきます。「他のデバイス接続のためコネクション解放」ボタンですが、

Trvcdisconnect

これは複数台のChromecastを使っている場合、現在のChromecastと接続したままではCastボタンを押しても現在のChromecastの操作しかできませんので、

Trvcdisconnectwhy

一旦現在のコネクションを開放して別のChromecastに繋ぎ直せるようにするためのボタンです。ここでコネクションを開放しても現在のChromecastはそのまま動き続けます。

一方「デバイスアプリ強制終了」ボタンは、

Trvcabort

現在接続中のChromecastからアプリを強制的にアンロードして接続解放するためのボタンです。Androidの場合CASTメニューから「Stop casting」を選んでも強制終了しませんが、このボタンを押すことで強制終了できますので、アプリがハングした場合などはこのボタンを使ってください。

(3)Chromecastで好きな番組や動画を直接再生する。

以上の操作でChromecast側にTvRemoteViewer_VBの端末機能がロードされ、以降は全ての端末からTvRemoteViewer_VBのリモコン機能で操作できるようになります。ただその説明の前に、TvRemoteViewer_VBには全体にChromecastに直接配信する機能が加わっており、操作も直感的ですので、まずそちらからご説明したいと思います。
特にファイル/プレイリストの選択や再生開始はリモコン側に殆ど機能がありませんので、この機能を併用することになります。

具体的には各番組表やトップのポータル画面、またファイル/プレイリストの再生指定の画面で、(2)でChromecastを起動していれば、再生場所として指定ができるようになります。

テレビ番組のキャスト
Trvtv1
Streamdist1

ファイル/プレイリストのキャスト
Trvfile1
Streamdist2

Streamdist3

デフォルトの「ここで」を選べば今まで通り操作中の端末で再生が始まりますが、ChromecastのIDを選択すれば、そちらで再生開始します。

Chromecastを挿したモニター側ではその瞬間に通常のTvRemoteViewer_VBの視聴開始時と同じように、Waitingのボタンが表示された後

Ccview2prepare

今までのTvRemoteViewer_VBと同じ視聴画面になります。

Ccview2

同じTvRemoteViewer_VBに繋がった全てのChromecast端末を宛先に指定できますので、もよりの好きなTV/モニターにストリームを配布する感覚で使えると思います。
(もちろん外出先でVPN接続の端末から家のテレビで再生開始したり、別の部屋のテレビで突然再生させることもできますが、家族の迷惑になるようないたずらはしないこと。)

なおここでChromecastのIDが選択できるのは、Chromecastで該当TvRemoteViewer_VBサーバの端末機能が動いている間で、Chromecastを落としてしまえば速やかに選択肢から消えます。
また他のサーバやアプリに繋がったりChromecastがハングした場合も選択肢から消えますので、もしうまく表示されない時は(2)の手順でChromecastを起動し直してみてください。

(4)リモコン機能で操作する。

① リモコンの起動

Chromecastで動いているのは要は今までのTvRemoteViewer_VB端末機能と全く同じですので、同じ機能が動きますが、Chromecastにはマウスもタッチパネルもありませんので、個々の操作をリモコンでおこなう必要があります。
このリモコンは任意のTvRemoteViewer_VB端末のトップ画面で「デバイス(Cast)」タブから、「操作対象のデバイスID」を選んで、「リモコン起動」のボタンを押すことで、ポップアップで起動します。

Ccremocon1

ブラウザはChromeである必要は全くなく、iOSであればiLuna、AndroidであればDolphinなど、日頃TvRemoteViewerで使っているものでOKです。

Androidの場合は専用アプリからリモコン起動が出来ますが、既にChromecastアプリが起動していて接続操作が不要な場合は、ここからリモコンを直接起動する方が簡単です。

なおPCブラウザの場合、ボタンを押してもリモコンが起動しない場合があります。
これはブラウザがセキュリティの観点でポップアップブロックしているのが原因で、よく見るとポップアップブロックのメッセージが表示されている筈ですので、速やかにポップアップを許可してください。一回許可すれば以後は普通に起動するようになります。

Pupblock1Chromeではこのようなメッセージが表示されるのでクリックして

Pupblock2 この画面で許可

Pupblockmoz
 Firefoxではこのようなメッセージが出るので、「設定」から許可する。

EdgesettingpupEdgeの場合、設定→詳細設定でブロックをオフにする

起動すると以下のような画面が別ウインドウ(スマホ・タブレットの場合は別タブ)で開きます。

Cc

これはいくつでも開けますので、複数のChromecastを使う時はそれぞれ用のものを開いておいて、使わない時は最小化か、単にタブとして残しておくと良いかもしれません。そうすれば操作したい時すぐに該当Chromecastのリモコン画面の呼出しができます。

また通常のYouTubeのようなChromecastアプリだとそれを起動した端末でなければうまく操作できないものが多いのですが、TvRemoteViewerの場合はどの端末からでも今再生中のものを操作でき、またどのリモコンにも常に最新の状態が表示されます。

それぞれのリモコン機能はTvRemoteViewer_VBの操作に準じます。
また人によってはリッチなUI操作も良いがコマンドラインも欲しい、という方もおられるかもしれませんので、一応一番下にコマンドラインインターフェースも作ってあります。

(ご参考までにコマンド一覧表も添付いたします。→commandsSum.xls

本来のところ個々のボタンやスライダーを動かすだけでテレビ側もクイックに反応する、という形にしたいのですが、今のところリモコンとChromecast側の通信手順は、通信というよりメッセージ・キュー渡しですのであまりリアルタイムなやりとりができず、したがって音量調整やシークなど多くの機能では、機能ごとにスライドバーを動かした上で横のボタンを押して「確定」する手順になります。
(但し通信手順はアプリ本体とはレイヤを分けた作りにしてありますので、今後の実装次第ではよりリアルタイムな動きに近づけると思います。WebSocketなどが使えると良いのですが、当初試してみたものの使える範囲の環境依存がまだ強いので見送っています。)

またこれもリアルなリモコンを真似たわけではありませんが、ここから操作しても確実に指示通りの反応をするわけではなく、ときどき空振りすることがあります。 →TvRemoteFiles ver1.34でここの信頼性が大幅にUPし、ほぼ確実に動作するようになりました。

但しアプリがハングしている状態ではリモコンも受け付けなくなる事があります。その際はデバイス操作機能でアプリの強制終了/再起動をおこなってください。

② 基本タブ

リモコンとしての機能はタブで機能別にグループ分けしてあります。

先頭の「基本」タブは上の図のように、音量調節、ミュートON/OFF、全画面/情報画面を切り替え、マージン設定、再生/一時停止、簡単チャンネル呼び出し、ページの再ロード のような基本機能になります。

ちなみに他もそうですが、スライドバーを操作するときは、操作後必ず横にある(数字が変わる)ボタンを押して、指示値を確定させてください。

Ccconfirm

確定させないと値はChromecastに反映されず、10秒程度でバーは元の位置に戻ります。

PC用モニターなら全画面化するだけで良いのですが、普通のテレビにHDMI入力で映す場合、上下左右に10ピクセル前後の非表示領域ができ、単なる全画面表示だと映像/コメント表示が一部隠れます。

Ccview4margin1

これを調整するのがマージン設定で、家のテレビでは11程度にすれば丁度合いました。

全画面のマージンを調整すれば、テレビのサイズにほぼ綺麗に合わせることができます。

Ccview5margin2
これだと(コメントの表示がなければ)普通にテレビを観るのと見分けがつきませんね。

Chromecastの全画面表示は特殊な画面モードではなく、HTMLの動画部分を単純に拡大しますので、全画面表示でも実況コメントを通常通りに流すことができます。ブラウザの枠などもなく、元々全画面表示に適した作りになっています。
ちなみに、この解説記事の画面サンプルでは殆どが全画面ではなくタイル表示になっていますが、これはTvRemoteViewerの画面なのが判り易いようにしているだけで、私の場合普段はこれを専ら全画面で使っています。(タイル表示は時々ニコニコの勢いをチェックしたり、リモコン操作の結果を確認する際に切り替える感じでしょうか。勿論お好み次第ですが、それほど全画面での使い勝手が良くなっています。)

クイックチャンネルは地上波のあるチューナーなら地上波の(キー局に対応する)チャンネル番号、衛星チューナーならBSの対応するチャンネルにリモコン感覚で切り替わるボタンです。
対応表は以下のようになります。(地上波はお住まいの地域のそれぞれの系列局に切り替わることになります。)

Quickchannel

また第一、第二はNHKのスポーツ中継の102チャンネルのようなマルチ編成のチャンネルにクイックに切り替えるときに使います。

尤もこの辺はリモコンの使い勝手を再現するために入れている機能でもあり、特にこだわりがなければ通常は右半分に表示されている番組表からワンタッチでチャンネル切替えができます。

Cc_2

動作はRockバー型番組表とほとんど同じで、一度クリック/タップで選択され、もう一度クリック/タップすれば図のようなポップアップが表示され、ここから選局できます。

通常の番組表と違うのは、この際にデフォルトでは現在使用中のストリーム番号と(その局に使えるのであれば)使用中のBonDriverが選択されることで、これによって選局する度にストリームが増えていく、という現象は避けることができます。
(逆を言えば今使ってるチューナーでは選べないチャンネルも、チューナーを変えることでここで選局することができるのが、通常の視聴画面より改良された点です。)

またトップページに表示される番組表は、トップページ表示中にリモコンの基本タブに現れる以下のコントロールで背景色を調整できます。

Ccremo1_pgbg

Ccremo1_pgbg_red 調整例

③ナビ機能

これは今までのTvRemoteViewer_VBのシークチャプタージャンプ機能です。

Navinew1

図の構成になるのはファイル/プレイリスト再生の場合で、TV視聴ではシークボタンのみが表示されます。

また、Chromecastの場合TV視聴でもある程度のシークは可能なので、例えば今の場面をトイレに行っててちょっと見逃した!という時に1~2分遡って見ることが可能です。
TV視聴時にシークボタンを操作すると、シーク可能な範囲なら図のように、ボタンが明るいグリーンになることで判ります。

Liveseekable

このボタンを押すことでシークが発動します。
※但し2016年4月ぐらいのアップデートからChromecast/Googlecastでは、この機能がやや「劣化」しており、ライブ視聴中のシークが一切出来なくなっています。一時的な事かも知れませんのでここの説明は残しておきますが、とりあえず現在はこのライブ視聴中のシーク機能はChromecast/Googlecastで使えません。
尚、EdgeやiOSの端末をこのリモコン機能で操作する場合は、ライブ視聴中のシーク機能が利用可能です。

またChromecastの場合ファイル再生時にエンコード未完了であっても、バッファの範囲内なら再生位置を動かすことができます。
どこまでストリーム再起動なしに移動できるかは、ボタンの色で概ね判るようになっています。

Fileseekable 明るいグリーンなら再起動なしに移動可能

Filenonseekable ブルーなら再起動をともなう移動

概ね、というのは移動可能な範囲はシステムのバッファの状態によっても刻々変わりますので、リモコンに表示した時点と実際にシークが発動する時点で状態が変わっている場合もあり、そういう場合は意図に反して再起動をともなう移動になる事もあります。この辺はベストエフォート型の処理ですので大目にみてください。
確実に再起動無しに移動したい場合はあまりぎりぎりの範囲ではなく、ある程度余裕を持った移動距離を指定した方が良いと思います。

Ccview6file

またTvRemoteFiles ver1.39 以降では、このナビ機能タブでプレイリストの操作ができるようになり、また進捗/チャプターバーも(可能であれば)表示されるようになりました。

Ccremo2_navi

プレイリスト再生時には「プレイリスト表示ON/OFF」のボタンが表示されます。
これがONになっている時は、横に番組表の代わりに現在のプレイリストが表示され、再生中のファイルはピンクの表示になります。

再生ファイルを切り替えたい時は、切り替えたいファイルを選択してもう1度クリック/タップしてください。
確認ダイアログが表示され、「OK」で切り替えることができます。

・サムネイル機能

最新版(TvRemoteViewer_VB v1.55以降+ TvRemoteFiles 1.49以降)では、このシークおよびチャプタ移動の際にサムネイルを表示できるようになりました。

Thumb2

ファイル/プレイリスト再生でシークおよびチャプタ指定の際に、予め図の位置にサムネイルが表示されます(4秒間)ので、よりクイックに希望する場面を探して移動することができるようになります。

この機能は図の、「サムネイルON/OFF」ボタンで有効/無効化できます。

④解像度、音声、再生位置/再生速度/焼き込み(ファイル再生のみ) 属性変更機能

Cc_3

ここで設定した内容で「再起動」ボタンを押せば今視聴中の画面をその設定に変更して再起動させます。

また、ちょっと違った観点の使い方ですが、もしChromecastで再生開始時に映像がうまく再生できずに動画が止まってしまうような場合、(何かの「引っかかりデータ」で止まってしまう場合があるようです)、ちょっと強引ですがここで「ストリームを再起動」を指定すれば、正常な再生を開始させることが(殆どの場合)出来ます。その辺はちょっと違った活用になります。

⑤ページ移動機能

Cc_4

ストリーム選択のボタンは今まで通り、押すとそのストリームの再生に切り替わります。

またその下にある視聴終了/視聴中断のボタンでは、終了は今のストリームを終了、中断は維持したままで、
ホーム画面に移動します。
ここのホーム画面をポータル画面にするか、あるいは(真っ暗な)待機画面にするかは、その下のボタンで選択できます。

お休みタイマをセットすると指定時間経過後、待機画面に移行します。その際視聴中のストリームの扱いは今までと変わらず、TV視聴なら終了、ファイル視聴なら維持、になります。

その下のボタンはChromecastならではの機能で、「アプリを全て終了してChromecastのデフォルト画面に戻る」、つまりシャットダウンを指示します。
一度アプリ終了させると普通の端末からは再起動できず、最初のロードと同じくChromecastサポート機能のあるChromeブラウザか専用アプリの操作が必要になりますのでご注意ください。
またアプリ終了はCastボタンの「キャストを停止」でも出来ますが、出来るだけこちらから行ってください。(ハングしてここからの操作を受け付けない時だけ、Castボタンからの終了を選択してください。)
このボタンを使えば必要な終了処理の上でシャットダウンしますので、より安全な終了手順になります。

⑥実況機能

Cc5r

実況全般ON/OFFボタンでニコニコ実況表示を開始/停止します。 またファイル再生の場合は実況ログ再生を開始/停止します。
通常の端末では一度開始すると停止の機能は無く、非表示にするだけでしたが、Chromecastは負荷を下げるために停止させる場合があるため、ここの停止では処理自体を停止させるようにしました。

2ch実況開始/停止ボタンでは、2ch実況表示を開始/停止します。
これを開始するには、(表示エンジンを共用している関係上)ニコニコ実況を先に開始している必要があります。

以上の2つのスイッチは、前回終了時の設定が引き継がれます。

実況遅延時間調整
テレビ画面と実況のタイミングを合わせるにはここで調整してください。

実況タイミング調整
同じく、ファイル再生と実況ログ表示の場合はこの名前のバーが表示されますので、これでタイミングを合わせることができます。

2ch実況スレ/文字色選択
この辺の機能も今までのTvRemoteViewerと変わりませんが、色指定や2ch実況の開始/停止がスレ指定とは独立してできるようになった点が改良点になります。

Ccch2_2

実況エリア指定、不透過率指定、文字サイズ指定
実況の表示領域は、画面上端を0%とし下端100%として、ここの指定で制限することができます。
また不透過率100%なら完全に不透過、これを小さくしていけば透過度が高く(字が薄く)なります。
コメント文字サイズは標準サイズ比で0.4倍から2.4倍まで、0.2倍刻みで指定できます。
これらは従来はトップページに戻って指定する必要がありましたが、今回視聴中にいつでも変更できるようにしました。

⑦お目覚めタイマ

TvRemoteFiles v1.60以降では、端末を指定時間に再生開始させる「お目覚めタイマ機能」が使えるようになりました。

Trvtimer0

目覚める側の端末は、リモコン制御可能な状態でセットした時間にTvRemoteViewer_VBの「待機画面(真っ黒い画面)」または「トップ画面」に居なければなりません。(ハードを制御できるわけではありませんので、「スリープ」状態にある端末を起こすことはできません。)
他の端末からリモコンで起動させるわけではありませんが、リモコンコマンドと同じ監視ルーチンを応用しているため、このような使い方になります。

タイマ設定は以下のような画面になります。

Trvtimer1

「+ 新しいタイマ設定」を押すと、図のような登録画面が表示されます。

Trvtimer2

ここからタイマを定義していきます。(99個までの定義が可能です。)

日付や時間の設定欄はHTML5で追加された「dateタイプ」「timeタイプ」の入力機能を使えますので、カレンダーやスピンボタンなどの入力補助が効きます。但しプラットホームによってはサポートが不十分なもの(FirefoxやAndroidの標準ブラウザなど)もあるので、使い易いプラットホームで編集すると良いと思います。

時間指定でxx分間 の欄を例えば30にすれば、30分間流したのち待機画面に移行しますが、ここを0にすれば流しっぱなしになります。

また、起動場所で端末を指定すれば緑色の囲みの中に登録されていきますが、複数端末を指定した場合「起動間隔」の分ごとにリストの上から1個づつ起動します。その際ストリームが存在する限りはそれを共用しますので、無駄にストリームが重複して起動されることはありません。(もし前の端末でストリームが落とされていれば再度起動します。)
ここに「全て」を指定すると、起動可能な端末が全て3分ぐらいの間にランダムに起動します。(完全に同時に起動するとストリームを無駄に立ててしまいますので、多少ばらけるようになっています。)

休日で朝のタイマを止めておきたい時などに「有効」のチェックを外しておけばタイマを一時的に無効化できます。但し指定時刻が過去30分以内のタイマは有効と見なされるため、時刻を過ぎたからといって直ぐに有効に戻すとその時点で発動しますので、ご注意ください。

他は画面に沿って入力すれば判ると思います。入力間違いがあれば「保存」ボタンを押した際に図のようにエラーメッセージが表示されますので、指示に従ってください。

Trvtimer3_2

問題なければ図のように登録されます。

Trvtimer4

以上、この機能はChromecastだけが対象ではなく、リモコン操作対象の端末(トップ画面左上にRが表示されるもの)なら全てタイマ起動できますが、特にChromecastをテレビに挿しっぱなしにしていると日常的に使えると思います。

TvRemoteViewer_VBが動く環境が複数あれば大事な時に一斉に目覚まし装置化できる、という辺りが、この機能の使い所の1つではないかと。

以上で基本的な操作の説明は終わりです。まずは使ってみて、操作感を確かめてください。

Chromecastは最初にも書きましたが、動画やテレビ放送を再生している限りでは負荷は軽く、画質も高いです。しかし端末としての性能は控え目なので、実況を流すときはコメントの数を40程度に絞ったり、画質を720x404以下にするなど、無理な負荷をかけないよう注意が必要です。

また、長時間使っていたり待機させていると、コメントのカクつきが大きくなったり画面が止まりがちになったりなど、動作自体が重くなることがあります。そういう時はとりあえず、リモコンの基本タブにある「ページを再ロード」をやってみてください。

Ccremo3_reset

これを押すと、レシーバーアプリを再起動しますので、ある程度動きは回復します。

ただし根本的にはメモリにゴミが溜まっていくのが動作が重くなる理由なので、そういう時にはトップページ「デバイス(Cast)」タブのデバイス操作かAndroid用専用アプリから「キャストを停止」あるいは「デバイスアプリ強制終了」を選んで一旦Chromecastを切り離した後、再度デバイスを接続してストリームに再接続してください。
内部的にブラウザが再起動されてバッファのゴミも掃除され、元のきびきびした動きに戻ります。

補足)iOS環境での起動操作について

 ※注) 2016年4月以降、この枠内で説明している機能は使えなくなっています。よって現状、iOSから使う場合は先にPC/Mac/AndroidからChromecast接続操作をおこなっておく必要があります。

iOSでは前述の通り、Chromecast起動用の専用アプリがご提供できませんので正式には起動だけPC/Mac等でおこなっていただく必要がありますが、実はiOS用のChromeブラウザも、不完全ながらこのChromecast起動操作が可能です。
具体的にはChromecastアプリを導入したiOSでChromeブラウザから②「Chromecastデバイス操作」画面を呼び出すと、

Ccios1

ちゃんと①"onInitSuccess" "receiver found" のメッセージが表示され、②「Chromecastデバイス呼出し」ボタンを押すことで、

Ccios2

Chromecastデバイス選択メニューがポップアップします。ここでデバイスを選択すれば該当デバイスにReceiverアプリが正しくロードされ、以降はリモコン操作が可能になります。

但しこのiOS版操作画面では「ポータル画面ボタンを押してサーバのアドレスを伝える」以降の動作はなぜか正しく動きません。iOSでできるのは「ChromecastにReceiverアプリをロードするところまで」です。

通常はこれで充分で、ReceiverアプリはCookieに記憶しているアドレスを使ってTvRemoteViewer_VBアプリを自動ロードしますので、以降は普通にリモコン操作できるようになるのですが、初回に「サーバのアドレスを教える」操作はここではできませんので、最低限初回だけPCなどから操作する必要があります。

Ccios3

またiOSのChromecastでは、一度接続したChromecastとのセッションを「他のChromecastと接続するためにコネクションを開放」ボタンで開放して他のChromecastに接続することができません。この場合もうっかり「キャストを停止」を選ぶとアプリが終了してしまいますので、ご注意ください。
もし他のChromecastを操作したい時は、少し面倒ですが一旦Chromeのタブを全て終了させた上で、再度TvRemoteViewer_VBの画面から「Chromecastデバイス操作」画面を開いて、「Chromecastデバイス呼出し」ボタンを押してください。一旦Chromeを終了させることでChromecastのセッションは解放され、ここで別のChromecastデバイスを選ぶことが出来るようになります。

以上がiOSでの起動操作です。動きからして恐らくGoogleとしては、iOSでのアプリ配布が不自由な事を認識の上でChromeブラウザで操作できるようにしたかったのだろうと思いますが、意図的か技術的問題か判りませんが実装が不十分で最低限の動作しかできないようです。(具体的にはSender側で指定したアプリのロードは出来てアプリが動いたことまでは認識しますが、セッションが確立できないためユーザーアプリとしては何も出来ないのが現状の動作になります。)

.

2.プログラムの構成について

今回Chromecast上で、TVRemoteViewer_VBを以下の図のような形で動かすようにしました。
Ccsystem1

「マスター」がChromecastのいわゆる「Custom Receiver」アプリであり、「Chormecastデバイス操作アプリ」が「Sender」アプリになります。
Chromecastアプリ開発関連の情報を見ると大抵はこの2つの話で完結しており、実際出回っている多くの対応アプリもCustom Receiver上に直接アプリを組んでいると思われますが、一方このReceiver機能単体では、アプリの観点から見ればちょっと嫌な制限があります。というのは

① ReceiverアプリとSenderアプリは「httpsでアクセス可能な」公開されたサーバにアップされていて、かつ「Google Cast SDK Developer Console」に登録し、ユニークなIDをもらっていなければならない。Chromecastデバイスはそこに登録されたアプリケーション/サイトから(のみ)Receiverアプリケーションをダウンロードできる。

② ReceiverアプリはHTML/Javascriptベースでありながら、「Single-Page Application」すなわち画面遷移のない単一ページのアプリでなければならない。

③ SenderアプリはPC/MacのChromeか、iOS、AndroidそれぞれのプラットホームでSDKを組み込んだ専用アプリを使わなければならない。それ以外のブラウザでは操作もできない一方、操作中のアプリを終了させればChromecastアプリも終了する作りになっているものが多い。
 →これだと任意のブラウザからの操作が出来ない上に、専用アプリもAndroidであれば勝手に作った「野良アプリ」の配布は可能ですが、iOSアプリは本体の脱獄がない限りApp Store登録が必要になり、個人が趣味でやっているアプリではちょっときついハードルになります。

まず1)の条件を見て「オレそんな公開サーバ持ってないよ」と、早速躓きそうになりました。(普通のhttpアクセスならこのniftyのブログにファイルをアップするだけで良いのですが、httpsでアクセス出来る環境を作るには、どこかレンタルサーバを借りるしかないのが今までの固定観念)
ところが流石はGoogle先生、用意の良いことに無料のGoogleドライブにファイルをアップしておけば、httpsで公開できるようになっていることが判りましたので、これを利用することにしました。
https://support.google.com/drive/answer/2881970
(但しこのGoogleドライブWebホスティング化機能は2016/8を以てサービス終了しましたので、折角なら同じGoogleということで、現在ご紹介している機能はGoogle Cloud Storageでホスティングしています。こちらは無料という訳にもいかず課金されますが、この目的で結構アクセス量があるにも関わらず月あたりの料金は「2円」程度と、ごく安価にhttpsホステッィングが使えていますので、やはり流石はGogle先生という所でしょうか。 2016/10追記)

しかしhttpsはそれで解決したのですがもっと根本的な問題として、TVRemoteViewer_VBは自宅に立てたサーバから配信を受けるのが基本で、様々なコントロールファイルもそのサーバと読み書きする作りになっています。
一方「公開サーバにアップされたJavasctiptアプリ」から見ればそのような自宅サーバへのアクセスは全て「クロスドメインアクセス」になるわけで、かなりの制約を受けることになります。
もちろんその辺もChromecastにはちゃんとした開発者向けガイドラインがあり、
http://www.atmarkit.co.jp/ait/articles/1411/13/news187_5.html
「Chromecast対応」を謳っているアプリで自宅のPCから配信できるものはこの辺の仕組みを使っていると思われます。

ただ、これをおこなうためには配信サーバ側もそれを想定したハンドリングをおこなければならず、また少なくともTvRemoteViewerで今まで多用していた「httpで単純にサーバが公開しているファイルにアクセス」のような機能も大幅な作り替えが必要になります。
それもどうしたものかといろいろ考えた結果、iframeを使ってReceiverアプリの上に一種の「仮想環境」を作れば、そこで今のままのアプリがそのまま動かせることに気が付きました。
ドメインが異なってもiframe上になら別のサーバのアプリをロードして自由に動かすことができますし、マスターとiframe間の通信も両方が自作のアプリであれば、クロスドメインに関係なくpostMessegeを使って簡単に実現できます。(但し実際に動かしてみるとpostMessegeはあまり信頼のおけない処理で、これを多用していたリモコン機能の誤動作や遅延動作が続発したため、現在ではマスターとiframe間の必要最低限のやりとりのみで使う、という作りに変えています。)

また本来は②の通り、Receiverアプリ自体はSenderとセッションを保持しなければならないので画面遷移は禁物ですが、iframe内の話であれば途中でどのページに飛ぼうが自由で、要は今までのアプリがそのまま使えることになります。
ただ1つ気になったのは、「https」のページ上のiframeに「http」のページを開こうとすると通常はセキュリティの警告を受ける点です。
例えばPC用のChromeブラウザであれば「承認されていないソースからのスクリプト」との警告でアドレスバーに盾のマークが出て、クリックして一度承認しない限りはiframe内の処理はされません。
しかしChromecastだと、これをなんと大目に見てくれることがわかりました。

これが判ったことで大まかな枠組みはできました。

Ccsystem2

ReceiverアプリとSenderアプリはサンプルをちょっと改造した程度の簡単なものですが、ここでやってもらわねければならないのはReceiverアプリを立ち上げてTvRemoteViewer_VBが動くiframeを用意し、ロードしてもらう所までで、あとはTvRemoteViewer_VB自身の制御機能と、これ用に作ったControllerアプリがリモコン操作の感覚で使えるようになります。(厳密にはReceiverアプリも作り込んでいくうちに、いろいろな監視機能やアプリがハングした時の再起動機能を付加していますが、本質ではありません。)

もともとiframeの活用は以前検討したことがあって、その時はファイル一覧のようなデータの取得やストリームの監視をページ個別に実行するのは効率が悪いので、親ページ(表示は一切しない)の上にiframe(表示領域は全体)で各アプリを動かす一種のVMシステムを作ろうと考えていました。iframeは言われる程制限のある環境ではなく、本来のブラウザ上で動かすのと同じアプリを殆どのペナルティもなく動かせることがその時に判りました。
しかしその際は結局のところ、「ブラウザの再ロードボタン」を押した瞬間に全てオジャンになることに気付き、ボツになりました。
ところが今回のChromecastは「再ロードボタンの無いブラウザ」環境そのものなので、まさにこのような作りに向いていて、今回の実装も以前iframe活用で考えていたことがいろいろ役に立ちました。

ChromeOSなどもその存在意義が(GoogleにはAndroidもある中で)よく判らなかったのですが、割とこの辺に狙い目があるのではないかと思います。つまりブラウザをよりOS的な位置づけにして、HTML5をもっと本格的なアプリケーション・プラットホームとして使えるようにしようという発想ですね。

ちなみにChromecastは発売されて1年以上経ちますが、対応アプリケーションが「スマホやPC向けの配信サービスをテレビにも映せます」という域をなかなか越えず、そういう使い方をするデバイスと思われがちなのは、恐らくはJavascript/HTML5のアプリケーション自体がそういう経緯でまだまだ未発達で、Googleの出しているUXガイドラインに沿ったメディアプレーヤー機能を少しカスタマイズした程度のアプリが多いのが理由だと思います。(もちろんGoogle自身はMap./EarthやAppsともJavascrpitベースの大規模な実用アプリなので、そこに軸足を置いているのは間違いありませんが、あくまで世間一般の話です。)
今のところHTML5の技術が(Flashの代用品としての位置づけですが)多用されつつあるネットゲーム用のプラットホームとしてはChromecastは遅すぎますし、スマホ系の開発者にとってはJavaは慣れていてもJavascriptはあまり縁がなく、これ用に何か作り込もうという動機もない方が多いのではないでしょうか?(そう思える記事も多く見掛けました。)

もう1点、「Cast」のネーミングがそもそもの間違いの始まりではないかと (^^ゞ
この名前からすればいかにも手許の端末に映ってるものを大画面に映せますというMiracastっぽいモノを連想し、実際Googleもそういう声に押されてミラーリングなどの機能も加えてきているので、いよいよ特長が判りにくくなってるのではないかと思います。
実際にはこれは小さいながらもメディア機能中心に作られている汎用端末である一方、操作端末の画面を直接配信するような「ワイヤレスHDMI」のような特殊な機構は一切持たないので、その手の機器と比べるべきものではない(そういう目的なら最初からそういう機器を買うべき)という話なのですが、一方専用アプリでChromecastの多機能性が活かせる作りのものが有るかと言うと、多くがAppleTV用アプリと似たり寄ったりなので、じゃあ何が特長なんだと言われても説明しにくくなってますね。
専用アプリの操作性をもっとChromecastの多機能性を活かした形に作り込んだ方が違いが判りやすくなるんじゃないかと思います。
同じ動画再生にしても単にテレビのリモコン操作を真似たような制御だけではなく、本来Ajaxや端末間通信などjavascriptの進歩性を活かした制御がいろいろ出来る筈ですからね。

今回はたまたま個人的な関心がベースなのですがTvRemoteViewer_VBの端末機能をJavascript/HTML5「のみ」で作り込んでいましたので、アプリを何も削らない形でChromecastと共通化することができました。Chromecast単体用としてであればこれらの機能を1から作る気にはならなかったと思いますが、もともとプラットホームフリーを目指して作っていたアプリがほとんどそのまま適用できると判った時点で、やる気が起きた感じです。
このデバイスをちょっと違った形で使い倒す一例になるのではないかと思います。

実際TvRemoteViewer_VBで使ってみて、これはテレビの再定義に繋がるのではないか、と単純に思ってしまいます。
なにしろテレビにはチューナーもレコーダーも要らず、スピーカー付きのモニター(HDMI入力を備えたモニターならスピーカーが付いていなくても大抵音声端子が付いています) があればこのような小さなデバイスを付けるだけでどこにでも置けて、そこにあらゆる映像とアプリケーションが手元のスマホ/タブレットを使って配布出来て、それを自由に操作可能な状態になるわけですから。

単なるテレビと比べればレスポンスや確実性の面で劣った点がありますが、チャンネルの頻繁な切替え自体の必要性を減らしているのが元々のTvRemoteViewerの設計思想ですし、確実性もデバイスの単純な性能向上とアプリ熟成で解決していける問題だと思います。機能面やオープン性に目を向ければ、現状でも単なるテレビでは出来る筈のなかった事が実現出来ているのではないでしょうか。
もちろん過去の記事でご紹介したTVTest/Spinelの環境もそれを目指したもので、PCのビデオ出力が余っていればそこから直接モニターに映してテレビ代わりにしたほうが早いんじゃないの?という方もおられるかもしれませんが、動画再生や実況再生はPCにとっても結構な不安定要因なので、こういう外付けデバイスに任せたほうが安心して「ながら観」できる面もあります。

構築にかかる費用も圧倒的に低コストで(金額の意味と使うリソースの両方の意味で)、また帯域を絞る仕組みとプラットホームフリーな特性でテレビ視聴の自由度が高くなります。「リモート視聴」はTvRemoteViewer活用法の一面に過ぎないわけです。
TVTest&NicoJKの環境はタイムラグがないのでリアルタイム性を重視するのなら一択になるのですが、一方特にNicoJKの併用は意外とローエンドPCにとって重く、動画が不自然な動きになりがちです。その点TvRemoteViewerは動作が軽い上に、HTML5というどのプラットホームでも最適化の努力がされている仕組みをそのまま活用するので、Chromecastのような極小の環境でも十分実用になるわけです。

3.Windows PCをアクセスポイント化してリモートで利用する。

出張や旅行のときは、手持ちのPCをVPN接続の無線ルーターとして使えば、出張先のモニターにも自宅と同じ映像が映せることになります。

Softap2

このSoftAP機能のポイントは、PCの1個の無線LANポートを仮想的に2つに分けて、「インターネットへのアップリンク」と「Chromecast(等)から接続するアクセスポイント」の両方で併用することで、PC側は1個の無線LANポートがあれば十分です。(外部接続のために別の有線LANを使う必要ありません。もちろんそういう構成にしても構いませんが。)

遠隔地に長期間滞在する時は手持ちのPCは仕事等に使いますから、現地にあるテレビやモニターをこうやって自宅テレビ化すれば良い訳です。(海外のホテルのテレビも大抵はHDMI端子が付いてますので、塞がれていなければ「おうちTV化」が可能です。)

手持ちのPCのSoftAP化手順は、こちら の"XXくん"を"Chromecast"と読み替えるのがわかり易いと思います。但し「アダプターの設定の変更」で「インターネット接続の共有」は、VPNの仮想アダプターに対して設定します。VPNを接続した時点で「ネットワーク接続」一覧にVPNの仮想アダプターが現れますので、それに対して共有の設定をおこなってください。設定すると図のようになる筈です。

Softap3

また、Chromecastの接続先AP(アクセスポイント)もSoftAPに切り替える必要がありますが、Chromecastの場合この作業はちょっとしたコツが必要です。

1) SoftAP用PCからはChromecast接続先の設定変更ができません。別のスマホ/タブ/PC等から作業する必要があります。
 予め出掛ける前にこの設定変更をやっておくと出先で慌てずにすみますので、お勧めです。
2) 基本ルールとして設定用端末も、このSoftAPにアクセスできなければなりません。よって先に設定用端末を一旦SoftAPに接続して、パスワード等を記憶させておくと良いと思います。
3) 以上が準備できたらChromecastアプリから接続先の変更をおこなってください。作業開始時にChromecastがどこかのAPに接続されていれば、設定用端末もそのAPに繋いだ上で作業開始します。
ChromecastがどのAPにも接続されていない状態なら、端末からそのChoromecast本体をAPとして直接接続できますので(パスワード不要)、その上で設定作業をおこないます。
4) この後Android端末の場合、変更時にAndroid端末自身の接続先も変更され、そこで最終確認がおこなわれた上で作業完了になります。
5) 一方iOS端末の場合ちょっと勝手が違い、Chromecastのネットワークは変更ではなく一旦削除する形になり、その上でChoromecast本体に接続して改めて新しい接続先を定義する、という作業になります。
この辺1回やってみれば勝手がわかると思いますので、持ち出す前に練習しておくと良いと思います。

スマホでもテザリングの契約があればVPN接続の無線ルーター化が可能ですが、スマホのテザリングでは「家-インターネット-アクセスポイント-無線LAN-スマホ-無線LAN-Chromecast」 の形の接続はサポートされない点にはご注意ください。「家-インターネット-LTE/3G回線-スマホ-無線LAN-Chromecast」の形なら大抵サポートしますが、Chromecastのながら見で使うようなデータ量ではあっという間に7GB制限を超えると思いますので、使用量の注意が必要になります。

それにしてもたかが4千円のデバイス1つにその辺の可能性を秘めているとは・・さすがGoogle先生はあなどれない。。テレビメーカーはGoogle製のOSを気軽に自社製品に積んでいるうちに、いつのまにか母屋を取られることになるのかも。テレビの内蔵チューナーや苦労して仕上げた独自アプリ、DLNA、イカしたリモコンや4K解像度とも無用の長物化したり全く差別化できなくなってメーカー品である意味がなくなっていく、という感じで、国産PCやガラケー、性格の近いものではPCモニターが辿ったのと同じ道ですね。

4.HDMI端子の無いテレビ/モニターで利用するには

HDMI端子が付いていれば例えスピーカー無しのPCモニターであっても、大抵はHDMI経由で送られてくる音を出すためのステレオミニジャックが付いていますので、そこにPCスピーカー等を付けるだけで「Chromecastテレビ」が出来上がります。

しかし2010年頃より前のテレビ/モニターとなるとHDMI端子が付いていない場合があり、それらをChromecastで使うには映像端子の変換だけではなく音を取り出す必要があります。「音声出力端子の付いた」HDMI-DVIコンバーターやHDMI-VGA、HDMI-コンポジットといった、それぞれに合せたコンバーターを入手する必要があるわけです。
ここで注意すべきなのは、Chromecastは「HDCP」をサポートしていない機器に接続しても何も出力しません。したがって必ず「HDCPをサポートしているコンバーター」を選ぶ必要があります。
そういったコンバーターは「HDMI to DVI 音声 HDCP」や「HDMI to コンポジット 音声 HDCP」 といったキーワードでAmazon/楽天等を検索すれば、いくつか出てきますので、商品説明を読んで目的に合っていることを確認の上で手頃なものを買えば良いです。
値段はこの目的ならせいぜい2,3千円台のもので十分で、HDCPサポートが書いてあるものを選ぶ点だけ気を付けてください。

例えば私の場合、以前使っていたRDT261WHというモニター
Photo

を和室用のテレビとして再利用しようと考えたのですが、これにはDVI(とVGA)端子しか付いていないので、HDCPサポート情報がコメント欄に記載されていたHDMI to DVIビデオ変換アダプターを購入して図のようにChromecastと接続したところ、問題なく動きました。

Chromecast2_dviconvert

ただこう書くと簡単にうまく行ったように見えますが、実は最初は単純にHDMIの音声だけを取り出せば良い話だと思い、安売りしていた「HDMI→HDMI+オーディオ分離」製品とHDMI-DVI変換プラグで繋いでみたところウンともスンとも言わず、そこで初めてHDCPが絡んでいる事に気が付いた次第です。(単純な変換プラグであればアダプター側はHDCPも何も関係なく、モニターのHDCP対応がそのままパススルーされるのですが、音声分離回路が入った時点でアダプター自体にもHDCPサポートが必要になるようです。)
HDMI-DVI変換と音声分離を安全に行う安価な製品は(上記で検索すれば判るように)あまり種類が無いので、同じ製品が手に入るならお勧めです。が手に入らない場合は、私が最初に試した「HDMI→HDMI+オーディオ分離」タイプでHDCPサポートするものは結構高いので、以下でご紹介するVGA変換タイプでも良いのではないかと思います。

そういった追加出費が必要でしたが、元々画質は気に入っていたものの常用モニターとしてはオーバースペック気味で、発熱も大きくつけっぱなしにすると部屋が暑くなることもあってお蔵入りしていたモニターを有効活用できましたので、リーズナブルな出費だったと思います。

コンポジットやVGAのようなアナログ入力への変換も、基本は対応するコンバーターで同じように接続する形になります。
ちなみに「デジタル映像のアナログ出力はSD解像度のみ、更に2014年以降の機器ではアナログ変換自体を禁止」なんて話があったのはあくまでBDレコ/プレーヤー(にAACSという技術をライセンスする)団体の自主ルールであって、そういう団体と何の関わりもないGoogleやAmazon等の機器を通せばそういった制約は今後ともありません。そういう意味でも大事に使っている古めのテレビ等を今後も活用するには有効な手段になるのではないかと。
ただし、リンク先の記事を見ると、テレビ/モニター側との解像度・周波数の調停がうまく行かない場合もあるようです。
Chromecastは基本はHD出力固定で、多少の調整はしますがあまり融通は利かすユーザー設定もできません。よってHD入力をサポートしないディスプレイだとうまく表示できない可能性があります。
アナログ接続にすればディスプレイ側もあまり難しい事は言わず何とか表示しようとはしますが、サポートしない解像度だと画面が欠けたり表示できない状態にもなります。
この辺、アナログ機器への接続はうまく行けば儲けもの、くらいの気持ちで試してみる位が良いと思います。
ちなみにオフレコの話ですが、AndroidTVをサポートする最新デバイス(シャオミのMi Boxなど)には手動でSVGA/XGA等の出力解像度を設定できるものもありますので、最初から古いテレビ/プロジェクターをCast機器として活かすのが目的なら、変換アダプタと併せてその辺も検討してみると良いと思います。

上記リンクの記事で紹介しているコンバーターはこれ が同じ製品で、一般にはメス-メスのHDMIアダプタを使ってChromecastに接続します。私は今のところアナログ接続は必要なかったのですが、安い上非常にコンパクトな製品なのので試しに入手して試してみたところ、上記RDT261WHモニターでは一発で綺麗に映りました。接続は以下のようになり
Chromecast2_vgaconvert_2

上記DVIコンバータと比べても非常に小さく外部電源も不要です。
一方手元のAcerのモニターではVGAモードで繋いだだけでは何も表示されず、一旦モニターをHDMモードに切り替えて再度VGAモードに戻す、という操作をすればきちんと映ることが判りました。
このようにモニター毎に振る舞いがやや異なることがあるものの、基本は他のアナログコンバータと比べても安定して使える製品だと思います。VGAではなくコンポジットやD端子に変換する場合も、直接HDMIからの変換で実績のある製品は少ないのですが、このVGAタイプのコンバータから再度VGA-コンポジット等の変換をかければ上手くいく可能性は高いです。

大事に使ってきたTVやプロジェクターなど多少コストを掛けても再利用価値のあるものであれば、ネットの情報やレビューを参考にしながらこのようなアダプタを試してみるのも良いと思います。もちろん安く上げたいだけであれば安いPCモニターを新規に買った方が早いかもしれませんが、上に書いたようにまだまだ使える「テレビ」を上手く活用できればば儲けもの、というつもりでやれば、ちょっとした試行錯誤も楽しいと思います。

« 2014年10月 | トップページ | 2015年9月 »

フォト
無料ブログはココログ
2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

ウェブページ