android 4.2からサポートされた「ワイヤレスディスプレイ」こと、Miracastは、無線LANを使って、画面をMiracstデバイスに転送する技術だ。具体的には、ソースデバイスと、テレビやモニタに内蔵または接続したディスプレイデバイス間を無線LANで接続し、ソースデバイスの画面表示や再生動画をそのままディスプレイデバイス側に表示する。ソースデバイスは、PCやタブレット、スマートフォンなどで、ディスプレイデバイスには、アダプタ形式のものや、セットトップボックス、あるいはテレビに内蔵されるものもある。
これまで、似たようなものとしてインテルが提唱していたWireless Display(Intel WiDi)があったが、現在では、WiDiは、Miracast技術の一部となり、どちらもMiracastと呼ぶことができ、実際、両方に対応できるアダプタも出荷されている。
無線接続技術だが、イメージ的には、HDMIのようなディスプレイ接続技術を無線化したものといえる。
ただし、Miracastを名乗るには、無線LANとWi-Fiの関係と同じく、Wi-Fiアライアンスでの認証が必要なため、単に「ワイヤレスディスプレイ」といった表記にしているところも少なくない。
Miracastは、android 4.2で採用されたが、アンドロイドでは、メインSoC内のGPUを使い、画像をエンコードして無線LANで転送している。このため、動画処理の割にはシステムの負荷は高くない。しかし、GPU、CPU、無線LANといくつものデバイスにまたがったストリーム処理であり、現状、機器同士の相性のようなものがあって、うまくいく組み合わせとそうでない組み合わせがあるようだ。このため、同一メーカー製品同士の接続はできても、他社製品との組み合わせはうまくできないことがある。
Miracastに取り込まれたIntelのWireless Displayでは、CPU/GPU、無線LANデバイスともにインテル製でかつ、セットメーカーが対応を保証した場合にのみ利用できるものだった。複数のデバイスを経由して動作するため、ドライバのバージョンやセット構成などが影響していたと考えられる。
しかし、Miracastは、Windows 8.1でも正式対応となったため、仕様としての成熟や実装経験の蓄積などが急速に行われると思われる。
Miracastとは?
Miracastは、無線LANによる伝送にWi-Fi Directを使う。Wi-Fi Directは、無線LANデバイスが1対1で行う通信方式で、デバイスの検出やWPA2による認証、暗号化といった技術を含む。1対1の通信であるため、無線LANの帯域をすべて利用できるため、アクセスポイントを通した場合よりも高速な通信が可能になる。ただし、間にアクセスポイントが入らないために、お互いの電波が到達できる範囲内での通信となる。
Wi-Fi Directは、伝送路の確立に利用されるが、アクセスポイントを併用して1対1接続を確立する「Wi-Fi TDLS」(Tunneled Direct Link Setup)もオプションとして利用可能だ。TDLSは、同じネットワークに接続する無線LANデバイス同士が1対1の通信路を確立するための技術だ。
通信路が確立したあとWi-Fi P2P仕様に準拠した通信で、ソースデバイスとディスプレイデバイスは、お互いの性能を確認して、解像度やエンコード設定などをネゴシェーションする。
Miracastは、ディスプレイの解像度、フレームレートの定義として、CEA形式(Consumer ELectronics Association。640×480ドット~1920×1080ドット。24~60fps。17タイプ)、VESA(Video Electroincs Standards Association。800×600~1920×1200ドット、30~60fps、29タイプ)と12種類の携帯電話用定義(640×360~950×540ドット、30~60fps)をサポートする。これに合わない解像度の場合には、一番近い、あるいは、一番変換しやすい解像度が選択される。
映像は、H.264でエンコードされて送信される。音声は、リニアPCM(16bit 48kHz、2チャンネル)が必須だが、オプションで16bit/44.1kHz/2チャンネルのリニアPCMやAAC、ドルビーAC3などが利用可能。
一般的なHDテレビ、モニターなら対応可能な仕様だが、HDMIなどが備えるHDCP(High-bandwidth Digital Content Protection。暗号化により、経路を流れるコンテンツ情報を保護する仕組み)はオプションであり必須ではない。
これは、主に、スマートフォンやタブレット、PCなどが、ダウンロードやストリーミングでネットワークから受け取る映像の再生を行うことを想定しており、DVDやBD、テレビチューナーといった一般消費者向けのメディア機器がソースデバイスになることは想定していないからだ。ただし、伝送路である無線LAN部分は、WPA2で保護されているため、通常の無線LANと同程度の通信内容の保護は行われている。
Miracastを使って見る
前述のように、Miracastは、いまのところ、任意の機器の組み合わせでは、必ずしもうまく動くとは限らない。筆者は、ディスプレイデバイスとしてNetgearのPTV3000を使い、手元にあったいくつかの機器で接続をためしてみた。
PTV3000は、HDMI出力を持つMiracastおよびIntel Wireless Display(Miracast認証以前の方式を含む)対応のアダプタ。手のひらにのるぐらいのサイズで、比較的コンパクトだ。電源は、USBコネクタ経由で供給することになっており、テレビなどにUSBコネクタがあれば、付属のミニUSBケーブルを使って電源供給を受けることができる。また、付属のACアダプタは出力がUSBコネクタ(フルサイズA)になっている。
購入後、利用する前に必ずファームウェアのアップデートを行っておく必要がある。現状、PTV3000のファームウェアは、比較的短期間でアップデートされている。現在公開されているファームウェアは、2.4.19となっているが、2週間前に筆者がダウンロードしてインストールしたバージョンは2.4.3だった。Windows 8.1での正式サポートなどを控え、ディスプレイアダプタ側もいろいろと手直しが行われている感じがする。
なお、ファームウェアのアップデートは、無線LAN経由で行うため、ノートPCなど無線LANを内蔵した機器が必要となる。Webブラウザで設定ページを開いて、Netgearのサイトからダウンロードしたファイルをアップロードするため、できればWindowsマシンのほうがいいだろう。
PTV3000本体の操作系は、正面に電源がオンであることを表すLEDと側面にボタン(設定モードへの移行やWPSで利用)が1つあるだけだ。
モニタやテレビに接続して電源を供給すると、PTV3000が起動し、接続待ち状態になる。その後、ソースデバイス側のMiracast対応機能を起動してPTV3000を見つけて接続を行う。
接続に利用したソースデバイスは、
- Google(ASUS) Nexus 7(2013) android 4.3
- ソニー XPERIA Z android 4.2
であり、PTV3000には、
- ON-LAP 1302 (1366×720ドットモニタ)
- Panasonic TH-L37G2 (テレビ)
を接続してみた。
結論からいうと、接続は環境依存し、エラーの原因などがわかりにくく、場合によっては、利用できない組み合わせがあることだ。たとえば、接続先がテレビだと、うまく接続できる。しかし、PTV3000に解像度が固定の液晶モニタを接続すると接続に失敗することがある。どうも、ネゴシェーションの段階で、表示可能な解像度がなく、ソースデバイス側が接続をあきらめる感じだが、機種によっては接続が可能だった。ソースデバイス側で想定しているディスプレイデバイスの解像度の範囲が実装により違っているようだ。逆にいえば、標準的な解像度を持ち、複数の解像度に対応可能なテレビだと接続がうまくいく。ディスプレイデバイスは発見できるのに接続を開始すると切断されてしまうような場合、解像度が合わない可能性がある。
また、アンドロイド機の場合、メーカーの独自実装もあり、ユーザーインタフェースにばらつきがあった。
XPERIA Zの場合、android 4.1ですでにMiracastに対応しており、設定の名称としては「スクリーンミラーリング」を使っている。これに対して標準的なandroid 4.2では、Miracastを設定項目では、「ワイヤレスディスプレイ」と呼ぶ。
標準的なアンドロイドの場合には、「設定」→「ディスプレイ」→「ワイヤレスディスプレイ」で接続を行うが、Xperia Zでは、「設定」→「画面設定」→「スクリーンミラーリング」で接続を行う。
PTV3000が起動し、接続待ちの状態になっていれば、前記の設定を開き、ワイヤレスディスプレイ、またはスクリーンミラーリングをオンするすると、「Push2TV XXXXXX-PTV3000」という項目がリストに表示される。XXXXXXの部分には数字アルファベットからなる個別番号が入る。これは同じ製品を区別するためのWi-Fi Directでの「名前」である。PTV3000は、シリアル番号をもっており、それを元に個々のデバイスでユニークな番号が付けられる。
リストのPTV3000をタップすると、PTV3000の表示が接続中となり、接続が完了すると、モニタ側にアンドロイド機の画面がそのまま表示される。
また、XPERIA Zの場合、スクリーンミラーリング中は、Wi-Fiを利用できない。しかし、Nexus 4/7は、無線LANでの通信が可能だ。このあたりは、先にソニー独自で実装したものと、アンドロイドのシステム全体を管理するGoogleの公式実装の差であろう。
PlayビデオやYouTubeアプリは、android 4.3ならば、再生画面にワイヤレスディスプレイアイコンが表示され、ここからオンオフが可能になる。
これに対してXPERIAの場合、通知領域に「Throw」アイコンが表示され、これを開いてダイアログで表示先を切り替える。
なお、どちらも、PlayビデオでMiracast側を再生画面とし、ソースデバイス側は再生操作画面のみにすることが可能だった。このような画面表示が可能だと、テレビに表示されるコンテンツに集中しやすい。ただ、他のアプリに切り替えてしまうと、画面表示に戻ってしまうため、テレビでビデオを再生しつつ、他の作業を行うことはできないようだ。
■Nexus 7(2013)の場合
Nexus 7(android 4.3)では、接続が完了すると通知領域にワイヤレスディスプレイアイコンが表示される |
Nexus 7(android 4.3)の「設定」→「ディスプレイ」→「ワイヤレスディスプレイ」。ここでデバイスの検索と接続を行う。一度登録したデバイスはリストの上に表示されてタップのみで接続する |
■XPERIA Zの場合
XPERIA Z(android 4.2)は、「設定」→「画面設定」→「スクリーンミラーリング」からMiracastを使う |
接続が完了すると通知領域に青い「Throw」アイコンが表示され、このようなポップアップダイアログからスクリーンミラーリングを制御する |
■PTV3000接続中
テレビとの接続という利用なら、アンドロイドでは、Miracastは、現状、ある程度安心して利用できるところまで来ているようだ。一部のアンドロイド機が持つアダプタなどを介するHDMIやDisplayPortによる有線接続に対して、Miracastには無線というメリットがある。また、Windows 8.1で正式対応が行われることで、Miracastには、今後普及する可能性もでてきた。実際にテレビに動画を表示させてみたところ、再生品質などは、システム負荷に影響されるようで、ソースデバイスの状態によっては、音が途切れたり、画像のブロックノイズが乗るといったことがあった。プレゼンテーションなどに利用するなら、なるべく他のアプリは終了させるなどして、影響を受けないようにしておくべきだろう。
本稿は、2013年10月21日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。