Chrome リモートデスクトップ

ブラウザだけで利用できるリモートデスクトップ機能。使う側のマシンにセットアップするだけですぐに使えるようになる。

Chrome 拡張と、専用のアプリをいくつかインストールするだけ。とてもインストールは簡単。ほぼほぼマウスクリックするだけで終わり。

あとはマシンの名前とピンコードを登録さえすればピンコードがわかっていればアクセスできる。

この Chrome リモートデスクトップが今までのリモートデスクトップと大きく違うのはブラウザで実現していることだろう。

そしてこの Chrome リモートデスクトップはがっつり WebRTC を利用した仕組みだ。WebRTC P2P で実現している。

  • VP8 でリモート先のマシンの全画面を WebRTC MediaChannel を利用して P2P 経由で送っている
  • リモート側のマウスやキーボード情報を WebRTC DataChannel を利用して P2P 経由で送っている
  • TURN-UDP や TURN-TCP 完備
  • TURN IPv6 対応済み
  • ContentType は Screen

使ってみると驚くが、本当によくできている。自分が管理している端末以外もコントロールできるのが凄い。

Image for post
Image for post

リモートサポートを使えば、Chrome がインストールしてあればあとは簡単にリモート経由でマシンを操作してもらうことも可能になる。

以下は chrome://webrtc-internals で取得した値。

https://remotedesktop.google.com/access/session/f082812a-5fbe-ccd5-8ba5-e4f73cfad905, { iceServers: [stun:192.0.2.1:19302, stun:[2001:0DB8::7f]:19302, turn:192.0.2.1:19305?transport=udp, turn:[2001:0DB8::7f]:19305?transport=udp, turn:192.0.2.1:19305?transport=tcp, turn:[2001:0DB8::7f]:19305?transport=tcp], iceTransportPolicy: all, bundlePolicy: balanced, rtcpMuxPolicy: require, iceCandidatePoolSize: 0, sdpSemantics: "plan-b" }, {enableDtlsSrtp: {exact: true}, enableRtpDataChannels: {exact: false}}

解像度は本来 4K だったのを少し下げて利用している。

googCodecName VP8
googContentType screen
googFrameHeightReceived 1440
googFrameWidthReceived 2560

使い心地は抜群で、ほぼほぼ遅延は感じない。さすが P2P で WebRTC という感じ。解像度が大きいがフレームレートが 0 か 1 というレベルなので気にならない。

それにしても Google は Project Stream といい、Chrome レモートデスクトップといい、 WebRTC をうまく活用している。

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store