(57)【要約】【課題】複数の端末装置が表示する画像を容易に同期させる。【解決手段】配信サーバ１０は、複数の端末装置３に画像を送信する。また、配信サーバ１０は、各端末装置３〜５が計時する時刻と配信サーバ１０が計時する時刻とのズレを記憶する。また、配信サーバ１０は、端末装置３がデータを受信した時刻を示す情報を取得する。また、配信サーバ１０は、端末装置３からデータを送信した時刻と取得した情報が示す時刻との差分、および、端末装置３と配信サーバ１０との時刻のズレを用いて、端末装置３へデータを送信する経路の遅延量を算出する。そして、配信サーバ１０は、算出した遅延量同士を比較して遅延量のズレを識別し、識別した遅延量のズレに応じて、端末装置３と送受信するデータ量を制御する。【選択図】図４
2015015656.tif 000002
【特許請求の範囲】
【請求項１】
複数の端末装置に画像データを送信する情報処理装置において、
各端末装置が計時する時刻と前記情報処理装置が計時する時刻とのズレを記憶する記憶部と、
各端末装置へ前記画像データを送信するデータ送信部と、
各端末装置が前記画像データを受信した時刻を示す情報を取得する取得部と、
前記端末装置ごとに、前記データ送信部が前記データを送信した時刻と前記取得部が取得した情報が示す時刻との差分、および、前記記憶部が記憶する時刻のズレを用いて、前記端末装置へ画像データを送信する経路の遅延量を算出する算出部と、
前記算出部が各端末装置について算出した遅延量同士を比較して遅延量のズレを識別し、識別した遅延量のズレに応じて、各端末装置と送受信するデータ量を制御する制御部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記遅延量を測定するための測定用パケットを各端末装置へ送信する測定用パケット送信部と、
各端末装置から前記測定用パケットを受信した時刻を示す情報が格納された応答を受信する受信部と
前記測定用パケット送信部が前記測定用パケットを送信してから前記受信部が前記応答を取得するまでの時間を前記端末装置ごとに測定する測定部と、
前記取得部が取得した応答に格納された情報が示す時刻と前記測定用パケット送信部が前記測定用パケットを送信した時刻との差分から、前記測定部が測定した時間の半分を減算した値を前記端末装置ごとに算出し、当該算出した値を前記端末装置が計時する時刻と前記情報処理装置が計時する時刻とのズレとして前記記憶部に格納する格納部と
を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記データ送信部は、全ての端末装置に対して画像データを送信する場合は、各画像データに所定の識別子を付して各端末装置に送信し、
前記取得部は、前記識別子が付加された画像データを受信した端末装置から、前記所定の識別子が付加されたデータを受信した時刻を示す情報が付加された割込み通知を取得することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御部は、ある端末装置について識別した遅延量のズレが第１の閾値以上である場合は、当該端末装置に対し、前記情報処理装置へ割込み通知を送信する頻度を低下させるよう指示することを特徴とする請求項１〜３のいずれか１つに記載の情報処理装置。
【請求項５】
前記制御部は、ある端末装置について識別した遅延量のズレが第２の閾値以上である場合は、当該端末装置に対して送信する画像データの画質を、他の端末装置に対して送信する画像データの画質よりも低く設定することを特徴とする請求項１〜４のいずれか１つに記載の情報処理装置。
【請求項６】
前記制御部は、ある端末装置について識別した遅延量のズレが第３の閾値以上である場合は、当該端末装置に対して画像データを送信する頻度を、他の端末装置に対して画像データを送信する頻度よりも低く設定することを特徴とする請求項１〜５のいずれか１つに記載の情報処理装置。
【請求項７】
複数の端末装置へデータを送信する情報処理装置が、
各端末装置へ前記データを送信し、
各端末装置が前記データを受信した時刻を示す情報を取得し、
前記端末装置ごとに、前記端末装置が計時する時刻と前記情報処理装置が計時する時刻とのズレを記憶する記憶装置から時刻のズレを読出し、前記データを送信した時刻と前記取得部が取得した情報が示す時刻との差分、および、前記記憶装置から読出した時刻のズレを用いて、前記端末装置へデータを送信する経路の遅延量を算出し、
前記算出部が各端末装置について算出した遅延量同士を比較して遅延量のズレを識別し、
前記識別した遅延量のズレに応じて、各端末装置と送受信するデータ量を端末装置ごとに制御する
処理を実行することを特徴とする配信方法。
【請求項８】
コンピュータに、
複数の端末装置へデータを送信し、
各端末装置が前記データを受信した時刻を示す情報を取得し、
前記端末装置ごとに、前記端末装置が計時する時刻と前記コンピュータが計時する時刻とのズレを記憶する記憶装置から時刻のズレを読出し、前記データを送信した時刻と取得した情報が示す時刻との差分、および、前記記憶装置から読出した時刻のズレを用いて、前記端末装置へデータを送信する経路の遅延量を算出し、
前記算出部が各端末装置について算出した遅延量同士を比較して遅延量のズレを識別し、
前記識別した遅延量のズレに応じて、各端末装置と送受信するデータ量を端末装置ごとに制御する
処理を実行させることを特徴とする配信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、配信方法および配信プログラムに関する。
【背景技術】
【０００２】
従来、複数の端末装置が表示する画像を同期させる技術が知られている。かかる技術の一例として、サーバ装置が画像データを生成し、ネットワークを介して、画像データを複数の端末装置へ送信するリモート接続型コラボレーション環境の技術が知られている。
【０００３】
例えば、サーバ装置は、各端末装置に表示させる画像データを生成し、ＴＣＰ（Transmission  Control  Protocol）／ＩＰ（Internet  Protocol）に従って、生成した画像データを各端末装置へ送信する。そして、各端末装置は、画像データを受信すると、応答をサーバ装置へ送信し、受信した画像データを表示する。また、サーバ装置は、端末装置から応答を受信し、かつ、前回画像データを送信してから所定の時間が経過した場合は、応答の送信元となる端末装置に対して、次の画像データを送信する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１７７５９１号公報
【特許文献２】特開２０１０―０８７６２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した技術では、サーバ装置と各端末装置を接続するネットワークの環境によっては、各端末装置の表示画像を同期させることができないという問題がある。
【０００６】
例えば、サーバ装置は、各端末装置との通信経路における遅延がそれぞれ異なる場合は、同時に画像データを送信しても、各端末装置が画像データを受信するタイミングが異なるので、各端末装置が画像データを表示するタイミングを同期させることができない。
【０００７】
また、サーバ装置は、前回送信された画像データに対する応答を受信してから新たな画像データを送信する。このため、サーバ装置は、画像データを送信してから応答が帰ってくるまでの時間であるＲＴＴ（Round  Trip  Time）が画像データの送信間隔よりも長い端端末装置に対し、他の端末装置が画像データを表示した後で画像データを送信する場合がある。かかる場合は、端末装置が他の端末装置とは異なる画像データを表示してしまう。
【０００８】
また、各端末装置が表示する画像を同期させるため、サーバ装置がデータを送信した時刻と、各クライアントが画像データを受信した時刻とを用いて、ネットワークの遅延を算出し、算出した遅延に応じて、画像データの送信方式を変更する技術が知られている。しかしながら、かかる技術では、各端末装置の時刻を同期させるための処理が困難である。また、ネットワークの環境は、動的に変化するので、ｐｉｎｇ等のコマンドを用いてサーバ装置と端末装置とのネットワークにおける遅延等を随時測定すると、通信パケットの量が増加し、ネットワークの負荷を増大させてしまう。
【０００９】
１つの側面では、複数の端末装置が表示する画像を容易に同期させることを目的とする。
【課題を解決するための手段】
【００１０】
一態様の情報処理装置は、各端末装置が計時する時刻と情報処理装置が計時する時刻とのズレを記憶する。また、情報処理装置は、各端末装置へ画像データを送信する。また、情報処理装置は、各端末装置が画像データを受信した時刻を示す情報を取得する。また、情報処理装置は、端末装置ごとに、画像データを送信した時刻と画像データを受信した時刻との差分、および、記憶された時刻のズレを用いて、端末装置へ画像データを送信する経路の遅延量を算出する。そして、情報処理装置は、各端末装置について算出した遅延量同士を比較して遅延量のズレを識別し、識別した遅延量のズレに応じて、各端末装置と送受信するデータ量を制御する。
【発明の効果】
【００１１】
１つの側面では、複数の端末装置が表示する画像を容易に同期させることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る通信システムの一例を説明する図である。
【図２】図２は、実施例１に係る通信システムが実行する処理の流れを説明する図である。
【図３】図３は、表示フレームのズレが発生する状態の一例を説明する図である。
【図４】図４は、実施例１に係る配信サーバが実行するデータ量制御処理の一例を説明する図である。
【図５】図５は、実施例１に係る配信サーバが有する機能構成の一例を説明する図である。
【図６】図６は、実施例１に係るクライアント管理テーブルの一例を説明する図である。
【図７】図７は、実施例１に係る送信時刻テーブルの一例を説明する図である。
【図８】図８は、実施例１に係る配信サーバが実行する通信制御の一例を説明する図である。
【図９】図９は、実施例１に係る配信サーバが送信するパケットのデータ構造の一例を説明する図である。
【図１０】図１０は、実施例１に係る配信サーバが受信するパケットのデータ構造の一例を説明する図である。
【図１１】図１１は、実施例１に係る配信サーバが実行する時刻ズレ収集処理の流れを説明するフローチャートである。
【図１２】図１２は、実施例１に係る配信サーバが実行する画像送信処理の流れを説明するフローチャートである。
【図１３】図１３は、配信プログラムを実行するコンピュータの一例を説明する図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して本願に係る情報処理装置、配信方法および配信プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例１】
【００１４】
以下の実施例１では、図１を用いて、本願に係る情報処理装置の一例である配信サーバ、および配信サーバを有する通信システムの一例を説明する。図１は、実施例１に係る通信システムの一例を説明する図である。図１に示す例では、通信システム１は、ネットワーク２を介して、複数の端末装置３〜５と配信サーバ１０とが接続される。ここで、端末装置４、５は、端末装置３と同様の機能を発揮するものとして、以下の説明を省略する。また、通信システム１は、端末装置３〜５以外にも、端末装置３と同様の機能を発揮する端末装置を有するものとする。
【００１５】
ネットワーク２は、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）、インターネット等のネットワークである。また、端末装置３は、配信サーバ１０から各端末装置３〜５へストリーミング配信される動画を表示する端末装置であり、例えば、ＰＣ（Personal  Computer）、ノートパソコン、タブレット端末、携帯端末等、任意の画像や動画を表示可能な装置である。
【００１６】
ここで、端末装置３は、キーボードやマウス等の入力装置が接続されており、所定の時間間隔で、入力装置に対する操作内容を示す割込み通知を送信する。以下の説明では、キーボードやマウス等の操作内容を示す割込み通知をマウス位置割込み通知と記載する。
【００１７】
配信サーバ１０は、各端末装置３〜５に対し、動画をストリーミング配信するサーバであり、例えば、ラックマウント式のサーバ等の情報処理装置である。なお、配信サーバ１０は、物理的に１つの情報処理装置である必要はなく、例えば、クラウドシステムにより実現することもできる。
【００１８】
詳細には、配信サーバ１０は、端末装置３〜５のいずれかに対して操作権を付与し、操作権が付された端末装置からのマウス位置割込み通知が示す入力内容に応じ、画像の操作を受け付ける。そして、配信サーバ１０は、次に各端末装置３〜５に表示させる画像を生成し、生成した画像を各端末装置３〜５へ送信する。
【００１９】
以下、図２を用いて、配信サーバ１０がストリーミング配信する動画の画像データを各端末装置３〜５へ送信する処理の流れについて説明する。図２は、実施例１に係る通信システムが実行する処理の流れを説明する図である。なお、図２には、各端末装置３〜５に配信する画像の一例として、ＣＡＤ（Computer  Aided  Design）のモデルを表示させる場合について記載した。
【００２０】
例えば、配信サーバ１０は、各端末装置３〜５のうち、端末装置３に画像の操作権を付与する。かかる場合、配信サーバ１０は、図２中（Ａ）に示すように、端末装置３から受信したマウス位置割込み通知が示す操作内容に応じて、ＣＡＤのモデルの操作を行う。例えば、配信サーバ１０は、モデルの拡大、縮小、回転、移動、編集等を行う。また、配信サーバ１０は、図２中（Ｂ）に示すように、操作後のモデルの表示画像を生成し、図１０中（Ｃ）〜（Ｅ）に示すように、生成した表示画像を各端末装置３〜５へ送信する。この結果、端末装置３〜５は、端末装置３の操作に応じた画像を表示する。
【００２１】
また、配信サーバ１０は、図２中（Ｆ）に示すように、操作権を付した端末装置３からマウス位置割込み通知を随時受信する。そして、配信サーバ１０は、端末装置３からマウス位置割込み通知が示す操作内容が、所定の時間変化しなかった場合は、端末装置３から操作権を剥奪する。その後、配信サーバ１０は、マウス位置割込み通知が示す操作内容が最初に変化した端末装置に対し、操作権を付与する。
【００２２】
例えば、配信サーバ１０は、端末装置３から操作権を剥奪した後、図２中（Ｇ）に示すように、端末装置４から受信したマウス位置割込み通知が示す操作内容が変化した場合は、端末装置４に操作権を付与する。また、配信サーバ１０は、端末装置３から操作権を剥奪した後、図２中（Ｈ）に示すように、端末装置５から受信したマウス位置割込み通知が示す操作内容が変化した場合は、端末装置５に操作権を付与する。かかる処理により、端末装置３〜５は、例えば、同一画像を表示しながらそれぞれが操作を行うことができる。
【００２３】
ここで、各端末装置３〜５は、ぞれぞれ異なる通信経路を介して配信サーバ１０と接続される。このため、各端末装置３〜５と配信サーバ１０とを接続する通信経路は、それぞれ異なる帯域、遅延、パケットロス等のネットワーク環境を有する。例えば、配信サーバ１０、端末装置３、４が東京近郊に設置され、端末装置５が札幌に設置された場合、端末装置５と配信サーバ１０とを接続する通信経路の遅延は、各端末装置３、４と配信サーバ１０とを接続する通信経路の遅延よりも大きくなる。
【００２４】
このため、配信サーバ１０は、各端末装置３〜５に対し、単純に画像データを所定の時間間隔で送信した場合は、端末装置５が表示する画像と端末装置３、４が表示する画像とを同期させることができなくなる場合がある。すなわち、配信サーバ１０が単純に画像データを所定の時間間隔で送信すると、各端末装置３〜５が画像データを受信するタイミングが異なるため、各端末装置３〜５が表示するフレームにズレが発生する場合がある。
【００２５】
以下、図３を用いて、表示フレームのズレが発生する状態の一例について説明する。図３は、表示フレームのズレが発生する状態の一例を説明する図である。なお、図３には、配信サーバ１０は、１つのパケットに画像データを格納し、ＴＣＰ／ＩＰを用いて、各端末装置３〜５に画像データが格納されたパケットを送信する例について記載した。
【００２６】
また、図３に示す例では、配信サーバ１０と端末装置３との通信経路におけるＲＴＴを５ミリ秒（ｍｓ）とし、配信サーバ１０と端末装置４との通信経路におけるＲＴＴを１０ミリ秒とした。また、図３に示す例では、配信サーバ１０と端末装置５との通信経路におけるＲＴＴを５０ミリ秒とし、配信サーバ１０は、３３ミリ秒ごとに１つの画像を生成するものとする。換言すると、配信サーバ１０は、フレームレートが３０ｆｐｓ（Frame  Par  Second）となる画像を生成するものとする。
【００２７】
例えば、配信サーバ１０は、図３中（１）に示す画像を生成し、生成した画像を各端末装置３〜５へ送信する。かかる場合、各端末装置３〜５は、画像を受信すると応答を配信サーバ１０へ送信するとともに、受信した画像を表示する。この結果、配信サーバ１０は、図３中（１）に示す画像を送信してから５ミリ秒経過後に端末装置３から応答を受信し、画像を送信してから１０ミリ秒経過後に端末装置４から応答を受信する。
【００２８】
ここで、配信サーバ１０は、図３中（１）に示す画像を送信してから３３ミリ秒経過後に図３中（２）に示す画像を生成する。そして、配信サーバ１０は、図３中（１）に示す画像に対する応答を受信済みの端末装置３、４に対し、図３中（２）に示す画像を送信する。また、配信サーバ１０は、図３中（２）に示す画像を送信してから５ミリ秒経過後に端末装置３から応答を受信し、画像を送信してから１０ミリ秒経過後には、端末装置４から応答を受信する。
【００２９】
このため、配信サーバ１０は、図３中（２）に示す画像を送信してから３３ミリ秒経過後には、図３中（３）に示す画像を生成し、生成した画像を端末装置３、４へ送信する。このように、配信サーバ１０は、通信経路のＲＴＴがフレームレート以下である端末装置３、４に対しては、フレームレートと同頻度で画像を送信できるので、端末装置３、４が表示する画像を同期させることができる。
【００３０】
一方、配信サーバ１０は、図３中（１）に示す画像を送信してから５０ミリ秒経過後に端末装置５から応答を受信する。この結果、配信サーバ１０は、図３中（１）に示す画像を送信してから５０ミリ秒経過後に端末装置５へ図３中（２）に示す画像を送信する。すなわち、配信サーバ１０は、フレームレートよりも遅いタイミングで画像データを端末装置５へ送信する。このため、図３中（Ｉ）に示すように、端末装置５は、端末装置３、４が図３中（３）に示す画像を表示するタイミングで、図３中（２）に示す画像を表示してしまう。
【００３１】
また、配信サーバ１０は、図３中（３）に示す画像を端末装置３、４に送信してから３３ミリ秒後には、図３中（４）に示す画像を生成し、生成した画像を端末装置３、４へ送信する。この結果、端末装置３、４は、図３中（Ｊ）に示すように、図３中（４）に示す画像を表示する。しかしながら、配信サーバ１０は、図３中（３）に示す画像に対する応答を端末装置５からまだ受信していない。このため、図３中（Ｋ）に示すように、端末装置３は、図３中（３）に示す画像を表示し続ける。
【００３２】
このように、配信サーバ１０は、各端末装置３〜５に対して単純に画像データを送信した場合は、ＲＴＴが端末装置３、４と大きく異なる端末装置５が表示する画像を端末装置３、４が表示する画像と同期させることができない。また、配信サーバ１０が図３に示す処理を継続した場合、端末装置５が表示する画像と端末装置３、４が表示する画像とのズレが増大し、最終的に端末装置５が表示する画像の中抜けが発生してしまう。このように、各端末装置３〜５が表示する画像を同期させることができない場合は、例えば、端末装置５の利用者が、端末装置３、４の利用者とは異なる画像に対して操作を行ってしまい、作業に混乱をきたす場合がある。
【００３３】
そこで、配信サーバ１０は、各端末装置３〜５との通信経路における遅延量のズレに応じて、各端末装置３〜５に送信する画像データのデータ量を制御する。例えば、配信サーバ１０は、通信経路におけるＲＴＴが大きくズレている端末装置に対しては、画像の解像度を下げる、画像の圧縮率を上げる、画像のフレームレートを下げる等の対策を実行して、送受信するデータ量を削減し、他の通信経路におけるＲＴＴとのズレを解消する。
【００３４】
以下、配信サーバ１０がデータ量を制御する処理の一例について説明する。図４は、実施例１に係る配信サーバが実行するデータ量制御処理の一例を説明する図である。なお、図４に示す例では、図３と同様に、配信サーバ１０と端末装置３との通信経路におけるＲＴＴを５ミリ秒とする。また、図４に示す例では、配信サーバ１０と端末装置４との通信経路におけるＲＴＴを１０ミリ秒とし、配信サーバ１０と端末装置５との通信経路におけるＲＴＴを５０ミリ秒とする。また、図４に示す例では、配信サーバ１０は、フレームレートが３０ｆｐｓ（Frame  Par  Second）となる画像を生成するものとする。
【００３５】
例えば、配信サーバ１０は、各端末装置３〜５との間の通信経路における遅延量を測定し、端末装置５の遅延量が他の端末装置３、４の遅延量と大きくずれていると判定する。この結果、配信サーバ１０は、端末装置５へ送信する画像のフレームレートを端末装置３、４へ送信する画像のフレームレートよりも少ない値、例えは半分の値に設定する。
【００３６】
例えば、配信サーバ１０は、図４中（１）に示す画像を生成し、各端末装置３〜５へ送信する。また、配信サーバ１０は、図４中（１）に示す画像を送信してから３３ミリ秒経過後に図４中（２）に示す画像を生成し、図４中（Ｌ）に示すように、端末装置３、４のみに送信する。
【００３７】
また、配信サーバ１０は、図４中（２）に示す画像を送信してから３３ミリ秒経過後に図４中（３）に示す画像を生成し、図４中（Ｍ）に示すように、生成した画像を端末装置３〜５へ送信する。その後、配信サーバ１０は、図４中（３）に示す画像を送信してから３３ミリ秒経過後に図４中（４）に示す画像を生成し、図４中（Ｎ）に示すように、生成した画像を端末装置３、４へ送信する。
【００３８】
このように、配信サーバ１０は、端末装置５に対し、２回に１回の割合で、画像データを送信する。このため、配信サーバ１０は、端末装置５のフレームレートが低下させるものの、各端末装置３〜５が表示する画像を、端末装置５と配信サーバ１０との通信経路におけるＲＴＴの半分以内で同期させることができる。
【００３９】
なお、配信サーバ１０は、例えば、各端末装置３〜５のＲＴＴがそれぞれ５０ｍｓ程度となる場合は、各端末装置３〜５に送信する画像のフレームレートを制御せずとも、各端末装置３〜５が表示する画像を同期させることができる。このため、配信サーバ１０は、各端末装置３〜５のＲＴＴが同程度である場合は、画像の制御を行うことなく、各端末装置３〜５に画像を送信する。
【００４０】
ここで、配信サーバ１０と各端末装置３〜５との通信経路におけるネットワーク環境は、動的に変化するので、随時ネットワーク環境の測定を行うのが望ましい。しかしながら、例えば、配信サーバ１０は、ｐｉｎｇを各端末装置３〜５へ送信し、応答を受信するまでのＲＴＴを測定することで、ネットワーク環境の測定を行った場合は、ネットワークの負荷を増大させてしまう。
【００４１】
また、各端末装置３〜５が画像データを受信した時刻を収集し、配信サーバ１０が画像データを送信した時刻と収集した時刻との差を通信経路の遅延とする手法が考えられる。しかしながら、かかる処理を行う場合は、あらかじめ配信サーバ１０と各端末装置３〜５とが計時する時刻を同期させるため、処理が困難である。
【００４２】
そこで、配信サーバ１０は、以下の処理を実行する。まず、配信サーバ１０は、各端末装置３〜５に対してｐｉｎｇを送信するとともに、ｐｉｎｇの送信時刻を記憶する。一方、各端末装置３〜５は、測定する時刻をｐｉｎｇに対する応答に格納し、応答を配信サーバ１０へ送信する。そして、配信サーバ１０は、各端末装置３〜５からｐｉｎｇを受信した時刻と記憶したｐｉｎｇの送信時刻とを比較し、各端末装置３〜５との通信経路におけるＲＴＴを測定する。また、配信サーバ１０は、各端末装置３〜５から受信した応答から各端末装置３〜５がｐｉｎｇを受信した時刻を抽出する。
【００４３】
そして、配信サーバ１０は、算出したＲＴＴと、各端末装置がｐｉｎｇを受信した時刻と、記憶したｐｉｎｇの送信時刻とを用いて、配信サーバ１０と各端末装置３〜５が計時する時刻とのズレを算出する。具体的には、配信サーバ１０は、各端末装置３〜５ごとに、端末装置がｐｉｎｇを受信した時刻から記憶したｐｉｎｇの送信時刻を減算し、減算結果からＲＴＴの半分をさらに減算した値を時刻ズレとして記憶する。
【００４４】
また、配信サーバ１０は、前回全ての端末装置３〜５に対して同時に画像データを送信してから所定の時間が経過し、かつ、再度全ての端末装置３〜５に対して同時に画像データを送信する場合は、以下の処理を実行する。まず、配信サーバ１０は、画像データが格納されたパケットに、受信時刻の通知を指示するマークを付与する。例えば、配信サーバ１０は、画像データが格納されたパケットに所定の領域を設け、かかる領域に受信時刻の通知を指示するフラグ等のマークを格納する。そして、配信サーバ１０は、マークを付した画像データを全端末装置３〜５に対して送信するとともに、マークを付した画像データを送信した時刻を記憶する。
【００４５】
一方、各端末装置３〜５は、マークが付された画像データを受信すると、マークが付された画像データの受信時刻を示すタイムスタンプを生成する。そして、各端末装置３〜５は、マウス位置割込み通知に生成したタイムスタンプを付して配信サーバ１０へ送信する。
【００４６】
また、配信サーバ１０は、各端末装置３〜５からタイムスタンプが付されたマウス位置割込み通知を受信すると、受信したマウス位置割込み通知からタイムスタンプを抽出する。そして、配信サーバ１０は、端末装置３〜５ごとに、タイムスタンプが示す受信時刻と、マークを付した画像データを送信した時刻と、記憶した時刻ズレとを用いて、通信経路における遅延を算出する。その後、配信サーバ１０は、算出した遅延量から、遅延量のズレを算出し、算出した遅延量のズレに応じて各端末装置３〜５との通信量を制御する。ここで、遅延量のズレとは、ある端末装置の遅延量と、他の端末装置の遅延量とのズレであり、例えば、ある端末装置の遅延量と値が最も小さい遅延量とのズレである。
【００４７】
このため、配信サーバ１０は、各端末装置３〜５が表示する画像を容易に同期させることができる。すなわち、配信サーバ１０は、各端末装置３〜５との通信経路における遅延量のズレに応じて、各端末装置３〜５との通信量を制御するので、各端末装置３〜５との通信経路における遅延量を同程度に収束させる。この結果、配信サーバ１０は、各端末装置３〜５が表示する画像を容易に同期させることができる。
【００４８】
なお、配信サーバ１０と各端末装置３〜５との通信経路におけるＲＴＴは、動的に変化する。このため、配信サーバ１０が画像データを送信する時刻と各端末装置３〜５が画像データを受信する時刻との差は、そのつど変化すると考えられる。しかしながら、配信サーバ１０が計時する時刻と各端末装置３〜５が計時する時刻との時刻ズレは、ほぼ一定であると考えられる。
【００４９】
そこで、配信サーバ１０は、全端末装置３〜５との時刻ズレを測定し、全端末装置３〜５へ送信する画像データの送信時刻と受信時刻との差から時刻ズレを減算することで、新たなパケットを送信することなく、通信経路の遅延量を算出することができる。
【００５０】
また、配信サーバ１０は、マークを付した画像データの送信時刻を記憶し、各端末装置３〜５から、マークを付した画像データの受信時刻を示すタイムスタンプが付されたマウス位置割込み通知を受信する。このため、配信サーバ１０は、ネットワーク遅延を測定するためのパケット等を不要にするので、ネットワークの負荷を軽減することができる。
【００５１】
なお、配信サーバ１０は、端末装置３〜５との通信経路における遅延量のズレに応じて、通信量を制御する任意の処理を行うことができる。例えば、配信サーバ１０は、基準となる遅延量をあらかじめ記憶し、または、測定した各遅延量の平均値や最も値が小さい遅延量を基準となる遅延量とし、基準となる遅延量と判定対象となる遅延量との差を遅延量のズレとして算出する。そして、配信サーバ１０は、算出した遅延量のズレが第１の閾値よりも大きい場合は、マウス位置割込み通知の送信頻度を下げるよう、端末装置に指示する。
【００５２】
また、配信サーバ１０は、第１の閾値よりも大きい値である第２の閾値より、遅延量のズレが大きい場合は、端末装置に対して送信する画像を圧縮する。また、配信サーバ１０は、第２の閾値よりも大きい値である第３の閾値より、遅延量のズレが大きい場合は、端末装置に送信する画像のフレームレートを低下させる。なお、配信サーバ１０は、遅延量のズレの値に応じて、画像の解像度を変更してもよい。また、配信サーバ１０は、画質を落とすと同時にフレームレートを低下させる等、複数の処理を組み合わせて実行してもよい。
【００５３】
次に、図５を用いて、上述した配信サーバ１０が有する機能構成の一例について説明する。図５は、実施例１に係る配信サーバが有する機能構成の一例を説明する図である。例えば、図５に示す例では、配信サーバ１０は、記憶部１１、通信部１２、配信処理実行部１３を有する。ここで、記憶部１１は、クライアント管理テーブル１４、送信時刻テーブル１５を記憶する。また、配信処理実行部１３は、収集部１６、取得部１７、算出部１８、画質制御部１９、画像生成部２０、操作制御部２１を有する。
【００５４】
まず、記憶部１１が記憶するクライアント管理テーブル１４、および送信時刻テーブル１５に格納される情報の一例について説明する。クライアント管理テーブル１４は、端末装置３〜５ごとに、配信サーバ１０との時刻ズレの値を記憶する。
【００５５】
例えば、図６は、実施例１に係るクライアント管理テーブルの一例を説明する図である。例えば、クライアント管理テーブル１４は、図６に示すように、クライアントＩＰアドレスとネットワーク遅延量と、時刻ズレ値とを対応付けて記憶する。ここで、クライアントＩＰアドレスとは、各端末装置３〜５のＩＰアドレスであり、ネットワーク遅延量とは、配信サーバ１０が最初にｐｉｎｇを送信した際に測定されたＲＴＴである。また、時刻ズレ値とは、配信サーバ１０が測定する時刻と各端末装置３〜５が測定する時刻とのズレを示す値である。
【００５６】
例えば、図６に示す例では、クライアント管理テーブル１４は、端末装置３のクライアントＩＰアドレス「１９２．１６８．１００．１００」とネットワーク遅延量「５」ミリ秒と時刻ズレ値「−１０．２５１」を対応付けて記憶する。すなわち、クライアント管理テーブル１４は、端末装置３と配信サーバ１０との通信経路におけるネットワーク遅延量が「５」ミリ秒であり、端末装置３が計時する時刻が配信サーバ１０が計時する時刻よりも「１０．２５１秒」遅い旨を示す。
【００５７】
また、図６に示す例では、クライアント管理テーブル１４は、端末装置４のクライアントＩＰアドレス「１９２．１６８．１００．２００」とネットワーク遅延量「１０」ミリ秒と時刻ズレ値「＋１分１６．１６５」を対応付けて記憶する。つまりクライアント管理テーブル１４は、端末装置４と配信サーバ１０との通信経路におけるネットワーク遅延量が「１０」ミリ秒であり、端末装置４が計時する時刻が配信サーバ１０が計時する時刻よりも「１分１６．１６５秒」早い旨を示す。
【００５８】
また、図６に示す例では、クライアント管理テーブル１４は、端末装置５のクライアントＩＰアドレス「１９２．１６７．１００．１００」とネットワーク遅延量「５０」ミリ秒と時刻ズレ値「＋０．２５０」を対応付けて記憶する。また、図６に示す例では、クライアント管理テーブル１４は、図示を省略した端末装置のクライアントＩＰアドレス「１９２．１６６．１００．１００」とネットワーク遅延量「６０」ミリ秒と時刻ズレ値「−１．３１１」を対応付けて記憶する。
【００５９】
図５に戻って、送信時刻テーブル１５は、各端末装置３〜５に画像データを送信した時刻を記憶する。例えば、図７は、実施例１に係る送信時刻テーブルの一例を説明する図である。図７に示す例では、送信時刻テーブル１５は、送信時刻「１１：１５：２１．２２５」を記憶する。すなわち、送信時刻テーブル１５は、１１時１５分２１．２２５秒に、各端末装置３〜５へ画像データを送信した旨を記憶する。
【００６０】
図５に戻って、通信部１２は、配信サーバ１０と各端末装置３〜５との通信を制御する。例えば、通信部１２は、収集部１６からｐｉｎｇコマンドを受信すると、ネットワーク２を介して、各端末装置３〜５へｐｉｎｇを送信し、ｐｉｎｇの送信時刻を収集部１６に通知する。また、通信部１２は、ネットワーク２を介して、各端末装置３〜５からｐｉｎｇに対する応答を受信すると、受信した応答を収集部１６に出力するとともに、応答の受信時刻を収集部１６に通知する。
【００６１】
また、通信部１２は、ネットワーク２を介して、各端末装置３〜５からマウス位置割込み通知を受信すると、受信したマウス位置割込み通知を取得部１７に出力する。また、通信部１２は、画質制御部１９から、マウス位置割込み通知の発行頻度を下げるよう指示する変更通知と、送信先となる端末装置の通知とを受信すると、受信した変更通知を通知された端末装置へ送信する。また、通信部１２は、画像生成部２０から画像データと、画像データの送信先となる端末装置の通知とを受信すると、受信した画像データを所定の大きさのデータに分割する。そして、通信部１２は、分割した各データを格納したパケットを通知された端末装置へ順次送信する。
【００６２】
収集部１６は、配信サーバ１０と各端末装置３〜５との時刻ズレの値を収集する。具体的には、収集部１６は、各端末装置３〜５に送信するｐｉｎｇを生成し生成したｐｉｎｇを通信部１２に出力する。また、収集部１６は、ｐｉｎｇの送信時刻を通信部１２から受信し、受信した時刻を記憶する。
【００６３】
また、収集部１６は、通信部１２から応答と受信時刻とを受信すると、受信した応答の送信元となる端末装置を識別する。また、収集部１６は、受信時刻と記憶した送信時刻との差から識別した端末装置との通信経路におけるＲＴＴを算出する。
【００６４】
また、収集部１６は、識別した端末装置がｐｉｎｇを受信した時刻を示すタイムスタンプを応答から抽出し、記憶した送信時刻と抽出したタイムスタンプが示す時刻との差から算出したＲＴＴの半分を減算した値を算出する。すなわち、収集部１６は、識別した端末装置と配信サーバ１０との時刻ズレ値を算出する。
【００６５】
そして、収集部１６は、識別した端末装置のクライアントＩＰアドレスと、算出したＲＴＴと、算出した時刻ズレ値とを対応付けてクライアント管理テーブル１４に格納する。その後、収集部１６は、画像同期を行う全ての端末装置について、時刻ズレ値を算出し、算出した時刻ズレ値をクライアント管理テーブル１４に格納した場合は、処理を終了する。
【００６６】
例えば、収集部１６は、ｐｉｎｇの送信時刻として「１０時２３分０．０００秒」を記憶する。また、収集部１６は、端末装置４からｐｉｎｇに対する応答を「１０時２３分０．０１０秒」に受信した場合は、端末装置４と配信サーバ１０との通信経路におけるＲＴＴとして「１０ミリ秒」を算出する。また、収集部１６は、ｐｉｎｇに、端末装置４がｐｉｎｇを受信した時刻として「１０時２４分１６．１７０秒」が格納されている場合は、ｐｉｎｇの送信時刻「１０時２３分０．０００秒」との差分「１分１６．１７０秒」を算出する。
【００６７】
そして、収集部１６は、差分「１分１６．１７０秒」から、算出したＲＴＴ「１０ミリ秒」の半分である「５ミリ秒」を減算した値「１分１６．１６５秒」を時刻ズレ値とする。その後、収集部１６は、端末装置４のクライアントＩＰアドレス「１９２．１６８．１００．２００」と、ＲＴＴの値「１０ミリ秒」と、時刻ズレ値「１分１６．１６５秒」とを対応付けてクライアント管理テーブル１４に格納する。
【００６８】
取得部１７は、各端末装置３〜５が画像データを受信した時刻を取得する。具体的には、取得部１７は、通信部１２からマウス位置割込み通知を受信すると、受信したマウス位置割込み通知にタイムスタンプが付されているか否かを判定する。また、取得部１７は、受信したマウス位置割込み通知にタイムスタンプが付されている場合は、受信したマウス位置割込み通知の送信元となる端末装置を識別するとともに、マウス位置割込み通知からタイムスタンプを抽出する。
【００６９】
そして、取得部１７は、マウス位置割込み通知を操作制御部２１に出力するとともに、識別した端末装置の通知とタイムスタンプとを算出部１８に出力する。なお、取得部１７は、マウス位置割込み通知にタイムスタンプが付されていない場合は、マウス位置割込み通知を操作制御部２１に出力する。
【００７０】
算出部１８は、端末装置３〜５ごとに、画像データの送信時刻と、画像データの受信時刻と、クライアント管理テーブル１４に格納された時刻ズレ値とを用いて、通信経路における遅延量を算出する。具体的には、算出部１８は、取得部１７から端末装置の通知とタイムスタンプとを受信する。
【００７１】
かかる場合は、算出部１８は、通知された端末装置のクライアントＩＰアドレスと対応付けられた時刻ズレ値をクライアント管理テーブル１４から取得する。また、算出部１８は、送信時刻テーブル１５から、各端末装置３〜５へ画像データを送信した送信時刻を取得する。そして、算出部１８は、取得部１７から受信したタイムスタンプが示す受信時刻から取得した送信時刻を減算し、さらに、クライアント管理テーブル１４から取得した時刻ズレ値を減算した値を算出する。その後、算出部１８は、端末装置の通知と算出した値とを画質制御部１９に通知する。
【００７２】
例えば、算出部１８は、端末装置４の通知と、受信時刻「１１：１６：３７秒４００」を示すタイムスタンプとを取得部１７から受信する。かかる場合、算出部１８は、送信時刻テーブル１５から、画像データの送信時刻「１１：１５：２１．２２５」を取得し、受信時刻との差「１：１６．１７５」を算出する。また、算出部１８は、算出した差「１：１６．１７５」から、クライアント管理テーブル１４が記憶する端末装置４の時刻ズレ値「１分１６．１６５」を減算した値「１０ミリ秒」を端末装置４の遅延量として画質制御部１９に通知する。
【００７３】
ここで、算出部１８が算出する遅延量は、配信サーバ１０と各端末装置３〜５との通信経路における片道分の遅延量である。このため、算出部１８は、ＲＴＴと同様に、配信サーバ１０と各端末装置３〜５との通信経路における往復分の遅延量を画質制御部１９に通知する場合は、算出した遅延量の２倍の値を通知すればよい。例えば、上述する例では、算出部１８は、「１０ミリ秒」の倍である「２０ミリ秒」を端末装置４の遅延量として画質制御部１９に通知する。
【００７４】
画質制御部１９は、算出部１８が算出した各端末装置３〜５との通信経路における遅延量のズレに応じて、各端末装置３〜５と送受信するデータ量を制御する。例えば、画質制御部１９は、算出部１８から、各端末装置３〜５の通知と遅延量とを受信する。すると、画質制御部１９は、各端末装置３〜５の遅延量同士を比較し、各遅延量のズレが、微小、少、中、大きい範囲のいずれであるかを判定する。そして、画質制御部１９は、判定した範囲に応じた画質制御を行うよう、画像生成部２０に指示する。
【００７５】
例えば、画質制御部１９は、算出部１８が算出した各遅延量から基準となる遅延量を選択する。ここで、基準となる遅延量としては、各遅延量のうち最も値が少ない遅延量、各遅延量の平均値に最も近い遅延量などが考えられる。
【００７６】
また、画質制御部１９は、算出部１８が算出した遅延量から判定対象となる遅延量をひとつ選択し、選択した遅延量から基準となる遅延量を減算した値である遅延量のズレを算出する。そして、画質制御部１９は、算出した遅延量のズレが第１の閾値以上であり、第１の閾値よりも大きい値の第２の閾値より少ない場合は、遅延量のズレが微小な範囲であると判定する。かかる場合は、画質制御部１９は、マウス位置割込み通知の発行頻度を下げるよう指示する変更通知と、選択した遅延量に対応する端末装置の通知とを通信部１２に出力する。また、画質制御部１９は、選択した遅延量に対応する端末装置の通知と画質制御を行わない旨を画像生成部２０に出力する。
【００７７】
また、画質制御部１９は、遅延量のズレが、第２の閾値以上であり、第２の閾値よりも大きい値の第３の閾値より少ない場合は、遅延量のズレが少ない範囲であると判定する。かかる場合は、画質制御部１９は、画像の圧縮率を第１の圧縮率に設定する旨の指示と、選択した遅延量に対応する端末装置の通知とを画像生成部２０に出力する。なお、画質制御部１９は、画像の解像度を画質制御を行わない通常時の解像度よりも低い第１の解像度に下げる旨の指示と選択した遅延量に対応する端末装置の通知とを画像生成部２０に出力してもよい。
【００７８】
また、画質制御部１９は、遅延量のズレが、第３の閾値以上であり、第３の閾値よりも大きい値の第４の閾値より少ない場合は、遅延量のズレが中程度の範囲であると判定する。かかる場合は、画質制御部１９は、画像制御部１９は、画像の圧縮率を第１の圧縮率よりも高い値である第２の圧縮率に設定する旨の指示と、選択した遅延量に対応する端末装置の通知とを画像生成部２０に出力する。なお、画質制御部１９は、画像の解像度を第１の解像度よりも低い第２の解像度に下げる旨の指示と選択した遅延量に対応する端末装置の通知とを画像生成部２０に出力してもよい。このように、画像制御部１９は、遅延量のズレが少ない範囲、若しくは中程度である場合は、遅延量のズレの量に応じて、送信する画質を下げる処理を行う。
【００７９】
また、画質制御部１９は、遅延量のズレが、第４の閾値以上である場合は、遅延量のズレが大きい範囲であると判定する。かかる場合は、画質制御部１９は、送信する画像のフレームレートを下げる旨の指示と選択した遅延量に対応する端末装置の通知とを画像生成部２０に出力する。また、画質制御部１９は、遅延量のズレが第１の閾値よりも少ない場合は、受信した端末装置の通知と画質制御を行わない旨の指示とを画像生成部２０に出力し、処理を終了する。
【００８０】
このように、配信サーバ１０は、遅延量のズレが大きい通信経路を介して送信する画像のデータ量を下げる結果、各端末装置３〜５が表示する画像を同期させることができる。なお、上述した実施例では、遅延量のズレに応じて、マウス位置割込み通知の発行頻度、画像の解像度、画像の圧縮率、画像のフレームレートのいずれかを制御する例について説明したが、実施例はこれに限定されるものではない。例えば、画質制御部１９は、遅延量のズレが中程度の範囲である場合は、フレームレートを下げ、遅延量のズレが大きい範囲である場合は、画像の圧縮率を上げるとともに、フレームレートを下げるよう指示してもよい。
【００８１】
例えば、図８は、実施例１に係る配信サーバが実行する通信制御の一例を説明する図である。例えば、図８に示す例では、画質制御部１９は、遅延量のズレが微小な範囲である場合は、マウス位置割込み通知の送信頻度を落として上り通信量を削減する対策（ｃ）を指示する。また、画質制御部１９は、遅延量のズレが少ない範囲である場合は、送信する画像の圧縮率を上げることで画質を落として下り通信量を減らす対策（ａ）を指示する。
【００８２】
また、画質制御部１９は、遅延量のズレが中程度の範囲である場合は、ｆｐｓ、すなわちフレームレートを下げることで、下り通信量を削減する対策（ｂ）を指示する。また、画質制御部１９は、遅延量のズレが大きい範囲である場合は、対策（ａ）と対策（ｂ）とを同時に実行するよう指示することで、さらに下り通信量を削減する。この結果、配信サーバ１０は、遠方に配置された端末装置や通信経路が安定しない端末装置等、通信経路の遅延量のズレが大きい端末装置を含む複数の端末装置が表示する画像を同期させることができる。
【００８３】
なお、上述した対策（ａ）〜（ｃ）の中では、対策（ｂ）による通信量の削減効果が最も高く、次に対策（ａ）による通信量の削減効果が高い。また、画質制御部１９は、対策（ａ）と対策（ｃ）を同時に実行するよう指示してもよく、対策（ａ）〜（ｃ）を同時に実行するよう指示してもよい。
【００８４】
図５に戻り、画像生成部２０は、画質制御部１９による指示に従って、各端末装置３〜５へ送信する画像を生成する。例えば、画像生成部２０は、操作制御部２１から受信したデータに基づいて、基準となる画像を生成する。そして、画像生成部２０は、基準となる画像から、各端末装置３〜５ごとに設定された解像度、圧縮率、フレームレートの画像を生成し、生成した画像を各端末装置３〜５へ送信するよう通信部１２に出力する。
【００８５】
ここで、画像生成部２０は、画質制御部１９による指示に従って、各端末装置３〜５ごとに、送信する画像の設定を行う。例えば、画像生成部２０は、画質制御部１９から端末装置の通知と画質制御を行わない旨の指示とを受信した場合は、通知された端末装置に対して送信する画像の解像度やフレームレートを通常時の値に設定する。また、画像生成部２０は、画質制御部１９から端末装置の通知と画像の解像度を第１の解像度に下げる旨の指示とを受信した場合は、通知された端末装置に対して送信する画像の解像度を第１の解像度に設定する。
【００８６】
また、画像生成部２０は、画質制御部１９から端末装置の通知と画像の解像度を第２の解像度に下げる旨の指示とを受信した場合は、通知された端末装置に対して送信する画像の解像度を第２の解像度に設定する。また、画像生成部２０は、画質制御部１９から端末装置の通知と画像のフレームレートを下げる旨の指示を受信した場合は、通知された端末装置に対して送信する画像のフレームレートを所定の値まで下げる。
【００８７】
また、画像生成部２０は、画像制御部１９から第１の圧縮率に設定する旨の指示と端末装置の通知とを受信した場合は、通知された端末装置に対して送信する画像を第１の圧縮率で圧縮する。また、画像生成部２０は、画像制御部１９から第２の圧縮率に設定する旨の指示と端末装置の通知とを受信した場合は、通知された端末装置に対して送信する画像を第２の圧縮率で圧縮する。なお、画像生成部２０は、任意の手段を用いて、画像の圧縮を行うことができる。
【００８８】
なお、画像生成部２０は、以下の処理をあわせて実行する。まず、画像生成部２０は、前回全ての端末装置３〜５に対して画像を送信してから所定の時間が経過したか否かを判定する。そして、画像生成部２０は、前回全ての端末装置３〜５に対して画像を送信してから所定の時間が経過したと判定した場合は、全ての端末装置３〜５に対して同時に画像を送信するタイミングであるか否かを判定する。
【００８９】
また、画像生成部２０は、全ての端末装置３〜５に対して同時に画像を送信するタイミングであると判定した場合は、各端末装置３〜５に対して送信する画像に、タイムスタンプを送信するよう指示するマークを付す。そして、画像生成部２０は、マークを付した画像を通信部１２に出力し、各端末装置３〜５へ送信する。また、画像生成部２０は、各端末装置３〜５へ画像を送信した時刻を送信時刻テーブル１５に格納する。
【００９０】
操作制御部２１は、操作権を有する端末装置からのマウス位置割込み通知に従って、各端末装置３〜５に表示する画像の制御を行う。例えば、操作制御部２１は、取得部１７から各端末装置３〜５からのマウス位置割込み通知を受信する。
【００９１】
また、操作制御部２１は、受信したマウス位置割込み通知から操作権を有する端末装置から受信したマウス位置割込み通知を識別し、識別したマウス位置割込み通知が示す入力操作に応じて、新たな基準となる画像を生成するためのデータを生成する。その後、操作制御部２１は、生成したデータを画像生成部２０に出力する。
【００９２】
なお、操作制御部２１は、識別したマウス位置割込み通知が示す入力操作が所定の時間変化しなかった場合は、他の端末装置へ操作権を移す。そして、操作制御部２１は、新たに操作権を獲得した端末装置から受信したマウス位置割込み通知を識別する。
【００９３】
なお、例えば、収集部１６、取得部１７、算出部１８、画質制御部１９、画像生成部２０、操作制御部２１とは、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などを適用する。
【００９４】
また、記憶部１１とは、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）などの半導体メモリ素子などの記憶装置である。
【００９５】
次に、図９、図１０を用いて、配信サーバ１０が送受信するパケットのデータ構造の一例について説明する。まず、図９を用いて、配信サーバ１０が送信するパケットのデータ構造の一例を説明する。図９は、実施例１に係る配信サーバが送信するパケットのデータ構造の一例を説明する図である。なお、図９には、従来方式に係る配信サーバと、実施例１に係る配信サーバ１０とがフレーム１〜フレームｎまでに送信するパケットの一例を記載した。
【００９６】
例えば、従来方式に係る配信サーバは、フレーム１〜フレームｎまで、各端末装置３〜５へ送信する全てのパケットに同一の画像データを格納して送信した。一方、配信サーバ１０は、フレーム１において、全ての端末装置３〜５に画像データを格納したパケットを送信する場合は、図９中（Ｏ）に示すように、画像データを格納したパケットにマークを付して送信する。
【００９７】
この結果、配信サーバ１０は、各端末装置３〜５から、タイムスタンプが付されたマウス位置割込み通知を受信する。そして、配信サーバ１０は、フレーム１でパケットを送信した時刻と、タイムスタンプが示す時刻と、時刻ズレとを用いて、各端末装置３〜５との通信経路における遅延量を算出する。
【００９８】
また、例えば、配信サーバ１０は、図９中（Ｐ）に示すように、遠方に設置された端末装置５へ送信する画像のフレームレートを下げた場合は、フレーム２において、端末装置５へ送信するパケットの生成を行わない。また、配信サーバ１０は、フレーム２において、全ての端末装置へパケットの送信を行わないので、端末装置３、４に対し、マークが付与されていないパケットを送信する。
【００９９】
また、配信サーバ１０は、図９中（Ｑ）に示すように、フレームｎにおいて、全ての端末装置３〜５へ画像データを送信する場合は、各端末装置３〜５へ送信する画像データを格納したパケットにマークを付して送信する。この結果、配信サーバ１０は、各端末装置３〜５から、タイムスタンプが付されたマウス位置割込み通知を受信するので、各端末装置３〜５との通信経路における最新の遅延量を新たに算出できる。
【０１００】
次に、図１０を用いて、配信サーバ１０が受信するパケットのデータ構造の一例を説明する。図１０は、実施例１に係る配信サーバが受信するパケットのデータ構造の一例を説明する図である。なお、図１０には、図９に示した画像データを送信した際に、従来方式に係る配信サーバと、実施例１に係る配信サーバ１０とが受信するパケットの一例を記載した。
【０１０１】
例えば、図１０に示す例では、従来方式に係る配信サーバは、単にマウス位置割込み通知が格納されたパケットを受信する。一方、配信サーバ１０は、マークを付したパケットを送信した場合は、図１０中（Ｒ）、および、図１０中（Ｓ）に示すように、マウス位置割込み通知とタイムスタンプとが付されたパケットを受信する。
【０１０２】
このように、配信サーバ１０は、各端末装置３〜５へ送信するパケットにマークを付与し、その後、各端末装置３〜５からマウス位置割込み通知とともにタイムスタンプを受信する。このため、配信サーバ１０は、各端末装置３〜５へ測定用のパケットを新たに送信せずとも、各端末装置３〜５との通信経路における遅延量を算出できる。
【０１０３】
次に、図１１を用いて、配信サーバ１０が各端末装置３〜５の時刻ズレ値を収集する処理の流れについて説明する。図１１は、実施例１に係る配信サーバが実行する時刻ズレ収集処理の流れを説明するフローチャートである。例えば、配信サーバ１０は、各端末装置３〜５に対しｐｉｎｇを送信する（ステップＳ１０１）。また、配信サーバ１０は、ｐｉｎｇを送信した送信時刻を記憶する（ステップＳ１０２）。
【０１０４】
また、配信サーバ１０は、各端末装置３〜５からタイムスタンプが付された応答を受信し（ステップＳ１０３）、記憶した送信時刻と応答を受信した時刻とからＲＲＴを算出する（ステップＳ１０４）。また、配信サーバ１０は、受信した応答からタイムスタンプを抽出し（ステップＳ１０５）、送信時刻とタイムスタンプが示す受信時刻との差からＲＴＴの半分を減算して時刻ズレを算出する（ステップＳ１０６）。そして、配信サーバ１０は、算出した時刻ズレをクライアント管理テーブル１４に格納し（ステップＳ１０７）、処理を終了する。
【０１０５】
次に、図１２を用いて、配信サーバ１０が各端末装置３〜５に画像を送信する画像送信処理の流れについて説明する。図１２は、実施例１に係る配信サーバが実行する画像送信処理の流れを説明するフローチャートである。なお、図１２には、配信サーバ１０が端末装置３との通信経路における遅延量のズレに応じて実行する処理の流れを記載した。
【０１０６】
まず、配信サーバ１０は、端末装置３に送信する画像を生成し（ステップＳ２０１）、生成した画像にマークを付して端末装置３へ送信する（ステップＳ２０２）。この結果、配信サーバ１０は、端末装置３からタイムスタンプが付されたマウス位置割込み通知を受信する（ステップＳ２０３）。このため、配信サーバ１０は、画像データの送信時刻と、タイムスタンプと時刻のズレとを用いて、端末装置３との通信経路における遅延量を算出し、算出した遅延量と他の通信経路における遅延量とのズレを算出する（ステップＳ２０４）。
【０１０７】
ここで、配信サーバ１０は、遅延量のズレが微小な範囲であるか否かを判定し（ステップＳ２０５）、遅延量のズレが微小な範囲ではないと判定した場合は（ステップＳ２０５否定）、遅延量のズレが少ない範囲であるか否かを判定する（ステップＳ２０６）。また、配信サーバ１０は、遅延量のズレが少ない範囲ではないと判定した場合は（ステップＳ２０６否定）、遅延量のズレが中程度の範囲であるか否かを判定する（ステップＳ２０７）。また、配信サーバ１０は、遅延量のズレが中程度の範囲ではないと判定した場合は（ステップＳ２０７否定）、遅延量のズレが大きい範囲であるか否かを判定する（ステップＳ２０８）。
【０１０８】
そして、配信サーバ１０は、遅延量のズレが大きい範囲ではないと判定した場合（ステップＳ２０８否定）、すなわち、遅延量のズレが微小よりも少ないと判定した場合は、受信タイム確認用マークをパケットに追加する（ステップＳ２０９）。そして、配信サーバ１０は、パケットを端末装置３へ送信し（ステップＳ２１０）、処理を終了する。
【０１０９】
一方、配信サーバ１０は、遅延量のズレが微小な範囲である場合は（ステップＳ２０５肯定）、マウス位置割込み通知の送信頻度を落とすよう端末装置３に指示し（ステップＳ２１１）、ステップＳ２０９の処理を実行する。また、配信サーバ１０は、遅延量のズレが少ない範囲である場合（ステップＳ２０６肯定）、または、遅延量のズレが中程度の範囲である場合は（ステップＳ２０７肯定）、以下の処理を実行する。すなわち、配信サーバ１０は、遅延量のズレに応じて、画像の解像度をそのままに送信するフレーム画像の圧縮を行い（ステップＳ２１２）、ステップＳ２０９の処理を実行する。
【０１１０】
また、配信サーバ１０は、遅延量のズレが大きい範囲である場合は（ステップＳ２０８肯定）、今回は画像を送信してもよいか否かを判定し（ステップＳ２１３）、よいと判定した場合は（ステップＳ２１３肯定）、ステップＳ２０９を実行する。一方、配信サーバ１０は、今回は画像を送信しないと判定した場合は（ステップＳ２１３否定）、画像の送信をスキップするフレームスキップを実行し（ステップＳ２１４）、そのまま処理を終了する。
【０１１１】
［配信サーバ１０の効果］
上述したように、配信サーバ１０は、配信サーバ１０が計時する時刻と、各端末装置３〜５が計時する時刻とのズレである時刻ズレ値を記憶する。また、配信サーバ１０は、各端末装置３〜５に対して画像を送信し、各端末装置３〜５が画像を受信した時刻を取得する。そして、配信サーバ１０は、各端末装置３〜５に対して画像を送信した時刻と、各端末装置３〜５が画像を受信した時刻と、記憶された時刻ズレ値とから、各端末装置３〜５へ画像を送信する通信経路の遅延量を算出する。その後、配信サーバ１０は、算出した各遅延量のズレを識別し、識別した遅延量のズレに応じて、各端末装置３〜５との通信量を制御する。
【０１１２】
このため、配信サーバ１０は、各端末装置３〜５と配信サーバ１０とが計時する時刻を同期する処理や、各端末装置３〜５へ新たなパケットを送信する処理を実行せずとも、各端末装置３〜５が表示する画像を容易に同期させることができる。また、配信サーバ１０は、識別した遅延量のズレを解消するように、各端末装置３〜５との通信量を制御した場合は、各端末装置３〜５が表示する画像を同期させることができる。
【０１１３】
また、配信サーバ１０は、各端末装置３〜５に対してｐｉｎｇを送信し、各端末装置３〜５がｐｉｎｇを受信した時刻を示すタイムスタンプが格納された応答を受信する。また、配信サーバ１０は、ｐｉｎｇを送信してから応答を受信するまでの時間、すなわちＲＴＴを端末装置３〜５ごとに測定する。
【０１１４】
そして、配信サーバ１０は、端末装置３〜５ごとに、受信した応答に格納されたタイムスタンプが示す時刻と、ｐｉｎｇを送信した時刻との差分から、算出したＲＴＴの半分を減算した値を時刻ズレ値として算出する。その後、配信サーバ１０は、算出した時刻ズレ値をクライアント管理テーブル１４に格納する。このため、配信サーバ１０は、複雑な処理を行わずとも、各端末装置３〜５と配信サーバ１０が計時する時刻のズレをそれぞれ測定することができる。
【０１１５】
また、配信サーバ１０は、全ての端末装置３〜５に対して画像を送信する場合は、各画像にマークを付して送信する。そして、配信サーバ１０は、マークを付した画像を受信した各端末装置３〜５から、マークが付されたデータを受信した時刻を示すタイムスタンプが付されたマウス位置割込み通知を受信する。このため、配信サーバ１０は、新たなパケットを各端末装置３〜５に送信せずとも、各端末装置３〜５との通信経路における遅延量のズレを算出できる。
【０１１６】
また、配信サーバ１０は、例えば、端末装置５との通信経路における遅延量と、端末装置３、４との通信経路における遅延量とのズレが第１の閾値以上である場合は、端末装置５に対し、マウス位置割込み通知を送信する頻度を下げるよう指示する。このため、配信サーバ１０は、端末装置５から配信サーバ１０へ送信される上り方向の通信量を削減するので、端末装置５との通信経路における帯域を確保し、遅延量のズレの削減を図ることができる。
【０１１７】
また、配信サーバ１０は、例えば、端末装置５との通信経路における遅延量と、端末装置３、４との通信経路における遅延量とのズレが第２の閾値以上である場合は、以下の処理を実行する。すなわち、配信サーバ１０は、端末装置５に対して送信する画像の画質を他の端末装置３、４へ送信する画像の画質よりも低い値に設定する。例えば、配信サーバ１０は、画像の圧縮率を上げるなどの対策を行うことで、画質の調整を行う。このため、配信サーバ１０は、配信サーバ１０から端末装置５へ送信される下り方向の通信量を削減するので、端末装置５との通信経路における遅延量のズレの削減を図ることができる。
【０１１８】
また、配信サーバ１０は、例えば、端末装置５との通信経路における遅延量と、端末装置３、４との通信経路における遅延量とのズレが第４の閾値以上である場合は、以下の処理を実行する。すなわち、配信サーバ１０は、端末装置５に対して画像を送信する頻度を他の端末装置へ画像を送信する頻度よりも低く設定する。このため、配信サーバ１０は、配信サーバ１０から端末装置５へ送信される下り方向の通信量を大幅に削減するので、端末装置５との通信経路における遅延量のズレの削減を更に図ることができる。
【実施例２】
【０１１９】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【０１２０】
（１）閾値について
上述した配信サーバ１０は、複数の閾値を用いて、各端末装置３〜５との通信経路における遅延量のズレを削減する対策を選択した。しかしながら、実施例はこれに限定されるものではない。例えば、配信サーバ１０は、１つの閾値を用いて、マウス位置割込み通知、画像の解像度、フレームレートのいずれか１つのみを実行するか否かを判定してもよい。また、配信サーバ１０は、上述した対策以外にも、任意の対策を講じることで、通信経路における遅延量のズレを削減してもよい。
【０１２１】
なお、配信サーバ１０は、遅延量同士の比較により遅延量のズレを算出した。しかしながら、実施例はこれに限定されるものではなく、例えば、配信サーバ１０は、端末装置３との通信経路における遅延量がフレームレートを超えた場合は、端末装置３に対して送信する画像のフレームレートを半分に削減してもよい。また、配信サーバ１０は、各遅延量の平均、標準偏差、最小値等を基準となる遅延量としてもよい。
【０１２２】
なお、上述した各種閾値は、あくまで一例であり、通信システム１の構成に応じて、任意の閾値を設定することができる。また、上述した各種閾値は、配信サーバ１０の外部から変更可能な閾値とすることも可能である。また、例えば、配信サーバ１０は、時間帯や画像を送信する端末装置の数に応じて、閾値を可変としてもよい。
【０１２３】
（２）送信時刻テーブルについて
上述した配信サーバ１０は、全ての端末装置３〜５へ画像を送信する際に、各端末装置３〜５との遅延量のズレを算出した。しかしながら、実施例はこれに限定されるものではない。例えば、配信サーバ１０は、所定の時間間隔で、各端末装置３〜５へ送信する画像にマークを付して送信するとともに、画像の送信先となる端末装置のクライアントＩＰアドレスと、送信時刻とを対応付けて送信時刻テーブル１５に格納する。
【０１２４】
また、配信サーバ１０は、各端末装置３〜５から、タイムスタンプが付されたマウス位置割込み通知を受信すると、マウス位置割込み通知の送信元となる端末装置のクライアントＩＰアドレスと対応付けられた送信時刻を送信時刻テーブル１５から取得する。そして、配信サーバ１０は、取得した送信時刻と、マウス位置割込み通知に付されたタイムスタンプと、クライアント管理テーブル１４が記憶する時刻ズレ値とを用いて、遅延量を算出し、算出した遅延量を比較することで、遅延量のズレを算出する。このように、配信サーバ１０は、各端末装置３〜５ごとに、通信経路の遅延量のズレを算出してもよい。かかる場合、配信サーバ１０は、基準となる遅延量をあらかじめ記憶し、各端末装置３〜５の遅延量と基準となる遅延量とを比較することで、遅延量のズレをそれぞれ算出してもよい。
【０１２５】
（３）配信サーバ１０の機能構成について
上述した配信サーバ１０の機能構成は、あくまで一例であり、配信サーバ１０として同様の処理を実行できるのであれば、任意の構成を採用することができる。例えば、配信サーバ１０は、収集部１６の機能を分割してもよい。また、配信サーバ１０は、収集部１６の機能を取得部１７、算出部１８に発揮させてもよい。また、配信サーバ１０は、画質制御部１９、画像生成部２０、操作制御部２１の機能を有する配信制御部を有してもよい。
【０１２６】
（４）データについて
上述した配信サーバ１０は、各端末装置３〜５に画像を送信した。しかしながら、実施例はこれに限定されるものではない。例えば、配信サーバ１０は、画像と同時に音声を配信してもよく、または、画像の代わりに音声のみを配信してもよい。
【０１２７】
（５）プログラム
上記の実施例で説明した配信サーバ１０が発揮する機能は、予め用意された配信プログラムをコンピュータが実行することで実現してもよい。そこで、以下では、図１３を用いて、上記の配信サーバ１０と同様の機能を有する配信プログラムを実行するコンピュータの一例について説明する。
【０１２８】
図１３は、配信プログラムを実行するコンピュータの一例を説明する図である。図１３に例示されたコンピュータ１００は、ＲＯＭ（Read  Only  Memory）１１０、ＨＤＤ（Hard  Disk  Drive）１２０、ＲＡＭ（Random  Access  Memory）１３０、ＣＰＵ（Central  Processing  Unit）１４０がバス１６０で接続される。また、図１３に例示されたコンピュータ１００は、パケットを送受信するためのＩ／Ｏ（Input  Output）１５０を有する。
【０１２９】
ＨＤＤ１２０は、クライアント管理テーブル１４と同様のデータが格納されたクライアント管理テーブル１２１と、送信時刻テーブル１５と同様のデータが格納された送信時刻テーブル１２２を記憶する。また、ＲＡＭ１３０には、配信プログラム１３１があらかじめ保持される。ＣＰＵ１４０が配信プログラム１３１をＲＡＭ１３０から読み出して実行することによって、図１３に示す例では、配信プログラム１３１は、配信プロセス１４１として機能するようになる。なお、配信プロセス１４１は、図５に示した収集部１６、取得部１７、算出部１８、画質制御部１９、画像生成部２０、操作制御部２１と同様の機能を発揮する。
【０１３０】
なお、本実施例で説明した配信プログラムは、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）、ＭＯ（Magneto  Optical  Disc）、ＤＶＤ（Digital  Versatile  Disc）などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【０１３１】
１  通信システム
２  ネットワーク
３〜５  端末装置
１０  配信サーバ
１１  記憶部
１２  通信部
１３  配信処理実行部
１４  クライアント管理テーブル
１５  送信時刻テーブル
１６  収集部
１７  取得部
１８  算出部
１９  画質制御部
２０  画像生成部
２１  操作制御部
【図１】
2015015656.tif 000003
【図２】
2015015656.tif 000004
【図３】
2015015656.tif 000005
【図４】
2015015656.tif 000006
【図５】
2015015656.tif 000007
【図６】
2015015656.tif 000008
【図７】
2015015656.tif 000009
【図８】
2015015656.tif 000010
【図９】
2015015656.tif 000011
【図１０】
2015015656.tif 000012
【図１１】
2015015656.tif 000013
【図１２】
2015015656.tif 000014
【図１３】
2015015656.tif 000015