図2は、実施形態にかかる通信システムで行われる通信の例を説明する図である。実施形態にかかる通信システムには、通信装置30と複数の端末20(20a〜20d)が含まれる。通信システムでは、複数の端末20の中から選択された1台の端末20が指導役の作業員による作業の映像を、通信装置30に送信する。図2は、端末20aが指導役の作業員による作業の映像を送信する装置に選択されている場合を示している(矢印T1)。以下、端末20aから送信される作業の映像を「第1の映像データ」と記載する。
通信装置30は、予め、通信システム中の各端末を認識しており、通信装置30から各端末20にデータを送信するときに使用可能な送信レートを測定する。通信装置30は、測定結果に基づいて、通信装置30からのデータの送信に使用可能な送信レートが相対的に低い端末20を特定し、特定した端末に対して所定期間中に配信可能なフレーム数を計算する。以下、送信レートが相対的に低い端末20のことを「対象端末」と記載することがある。送信レートの算出に際して、通信装置30は、第1の映像データを通信装置30に送信する端末20aとの間についても、通信装置30からのデータの送信に使用可能な送信レートを計測する。従って、対象端末は、通信装置30にデータを送信する端末も含めた通信システム中の全ての端末20の中から特定される。
次に、通信装置30は、端末20aから受信した第1の映像データに含まれているフレームの一部を抽出することにより、対象端末に対して遅延を発生させずに配信可能なフレーム数を含む第2の映像データを生成する。その後、通信装置30は、通信システム中の全ての端末20に対して、第2の映像データを配信する。第2の映像データが端末20a〜20dの各々に送信される様子を矢印R1〜R4に示す。このため、端末20aから送信される第1の映像データとして撮影される作業を行う作業員も、他の端末20b〜20dに配信されている第2の映像データを確認しながら作業を行うことができる。また、端末20a〜20dには、第2の映像データとして、第1の映像データ中のフレームと同じ解像度のフレームが送信されるので、端末20a〜20dを用いて作業を行う全ての作業員が、高解像度の映像を取得できる。
なお、図2では、4台の端末20が含まれている通信システムを例として説明したが、通信システムに含まれている端末20の数は任意である。
図2に示すように、実施形態にかかる通信システムでは、第1の映像データの送信元である端末20aに対しても、第2の映像データが送信されるため、指導役の作業員とその他の作業員の間での処理を同期させやすい。また、第2の映像データに含まれている各フレームの解像度は、第1の映像データ中のフレームの解像度と同じであるため、実施形態にかかる通信システムでは、配信された映像の解像度が低いことによって作業ミスが発生することを防止できる。
<装置構成>
図3は、端末20および通信装置30の構成の例を説明する図である。図3では、端末20aと端末20bの詳細を示しているが、端末20c、20dも端末20aと同様である。端末20は、パケット送受信部21、制御部22、パケットカウント部23、カメラ24、ディスプレイ25を備える。パケット送受信部21は、通信装置30との間でパケットを送受信する。制御部22は、受信したパケットの処理や送信パケットの生成を行う。パケットカウント部23は、通信装置30から受信したパケットの数をカウントし、得られた結果を、適宜、制御部22に出力する。カメラ24は、作業員によって行われている作業の撮影など、映像データの生成に使用される。ディスプレイ25は、通信装置30から送信された第2の映像データを表示する。ここで、図3に示す通信システムでは、通信システム中の任意の端末20が映像データの送信元になり得る場合を示している。このため、各端末20がカメラ24とディスプレイ25を保持している。なお、一部の端末20は作業映像の配信元にならないシステムでは、作業映像の配信元にならない端末20がカメラ24を備えていなくても良い。
通信装置30は、送受信部31、制御部40、記憶部50を備える。送受信部31は、送信部32と受信部33を有する。制御部40は、算出部41、カウンタ42、生成部43を有する。記憶部50は、接続先テーブル51、送信時刻テーブル52、送信フレーム数テーブル53を保持し、バッファ54としても動作する。
送信部32は端末20にパケットを送信し、受信部33は端末20からパケットを受信する。従って、指導役の作業員による作業の映像データ(第1の映像データ)は、受信部33から受信される。一方、第1の映像データから生成された第2の映像データは送信部32から送信される。
算出部41は、各端末20との間の通信レートを算出する。通信レートの算出方法の具体例については後述する。カウンタ42は、通信レートの算出の際にパケット数を計数する。さらに、生成部43は、対象端末に送信可能な通信レートに合わせて、第1の映像データから第2の映像データを生成する。
接続先テーブル51には、通信システム中の各端末20のアドレスや、端末20が第1の映像データを送信するかを表わす情報などが含まれている。送信時刻テーブル52には、通信レートの計算に使用するパケットの送信時刻が記録される。送信フレーム数テーブル53には、各端末20との間で送受信可能なフレーム数を、通信レートから計算した結果が記録される。バッファ54は、第1の映像データの格納に使用される。接続先テーブル51、送信時刻テーブル52、送信フレーム数テーブル53については、後で具体例を挙げて説明する。
図4は、端末20および通信装置30のハードウェア構成の例を説明する図である。端末20は、ネットワークインタフェース101、プロセッサ102、メモリ103、カメラ24、ディスプレイ25、バスを備える。端末20と通信装置30のいずれにおいても、プロセッサ102は、Central Processing Unit(CPU)を含む任意の処理回路である。
端末20において、ネットワークインタフェース101はパケット送受信部21として動作し、プロセッサ102は制御部22とパケットカウント部23として動作する。メモリ103は、制御部22やパケットカウント部23の処理で生成されたデータを記憶するとともに、制御部22やパケットカウント部23の処理に使用されるデータを記憶する。ネットワークインタフェース101、プロセッサ102、メモリ103、カメラ24、ディスプレイ25は、互いにデータを入出力できるようにバスで接続されている。
通信装置30は、ネットワークインタフェース101、プロセッサ102、メモリ103、記憶装置106、バスを備える。通信装置30において、ネットワークインタフェース101は送受信部31として動作する。プロセッサ102は制御部40として動作する。メモリ103と記憶装置106は、記憶部50として動作する。なお、プロセッサ102は、記憶装置106に格納されているプログラムを読み込んで、制御部40としての動作を行う。ネットワークインタフェース101、プロセッサ102、メモリ103、記憶装置106は、互いにデータを入出力できるようにバスで接続されている。通信装置30は、コンピュータによって実現されても良い。
<第1の実施形態>
以下、実施形態を、映像データの配信前の通信レートの決定と、配信する映像データの生成に分けて、処理の詳細を説明する。なお、以下の説明では、図2に示すとおり、通信装置30に端末20a〜20dが接続されている場合を例とする。また、以下の説明においても、端末20aが通信装置30に第1の映像データを送信し、通信装置30は、第1の映像データから生成した第2の映像データを端末20a〜20dに送信する場合を例とする。以下、処理を行っている端末20を明確にするために、符号の末尾に端末20に割り当てられた識別子と同じアルファベットを付すことがある。例えば、カメラ24aは、端末20aに含まれているカメラ24を指す。
(A)映像データの配信前の通信レートの決定
まず、端末20aは、作業映像などの高解像度の映像データの配信を開始することを通知する制御メッセージ(配信開始通知)を、通信装置30に通知する。配信開始通知を受信すると、通信装置30中の算出部41は、各端末20に対して単位時間当たりに送信することができる高解像度のフレームの数を求めるために、接続先テーブル51を用いて、通信レートの算出を開始する。また、カウンタ42は、カウント値を初期化する。
図5は、接続先テーブル51の例を説明する図である。接続先テーブル51は、端末20ごとに、端末識別子、IP(Internet Protocol)アドレス、端末種別を記録している。図5の例では、端末識別子として、各端末20の符号を用いている。IPアドレスは各端末20に割り当てられたIPアドレスである。端末種別は、その端末20が映像データを送信するかを示す情報である。端末種別=0に対応付けられた端末20は、映像データ(第1の映像データ)を通信装置30に送信すると共に、通信装置30から第2の映像データを受信する。端末種別=1に対応付けられた端末は、通信装置30から第2の映像データを受信するが、通信装置30に対して映像データを送信しない。算出部41は、接続先テーブル51から、第2の映像データを受信する各端末20のアドレスを特定する。
図6は、下り方向の通信レートの算出方法の例を説明する図である。以下の説明では、パケットの送信方向を分かりやすくするために、通信装置30から端末20に向かう方向を「下り方向」、端末20から通信装置30に向かう方向を「上り方向」と記載することがある。算出部41は、接続先テーブル51(図5)を用いて、通信システム中の各端末20に割り当てられたアドレスを特定すると、各端末との間の下り方向の通信レートを特定するためのテストパケットを生成する。以下、各端末との間の下り方向の通信レートを特定するためのテストパケットを「下りテストパケット」と記載する。
図6のF1は、下りテストパケットのフォーマットの例である。下りテストパケットは、IPヘッダ、TCP(Transmission Control Protocol)ヘッダ、データを含む。なお、図中では、IPヘッダとTCPヘッダをまとめてTCP/IPヘッダと記載している。データには、パケットが下りテストパケットであることを示す情報(TP1)、総パケット数(AP)、パケット番号(PN)、擬似映像データが含まれる。擬似映像データは、映像データの送信元の端末20が通信装置30に送信するデータ中に含まれているフレームと同等の容量の画像データである。例えば、擬似映像データとして、映像データの送信元の端末20が通信装置30に送信するデータ中のフレームと同じ解像度で同じ大きさの画像が使用され得る。なお、1パケットに含まれる擬似映像データは、1つのフレームの一部のデータであっても良く、また、1つ以上のフレームの情報を含んでいても良い。通信装置30は、予め、擬似映像データを保持していても良く、また、配信開始通知とともに端末20aから擬似映像データとして使用するデータを取得しても良い。総パケット数(AP)は、1回の下り方向の通信レートの算出のために通信装置30が端末20に向けて送信する下りテストパケットの総数である。パケット番号(PN)は、下りテストパケットの送信順序を示す値である。
図6のシーケンス図SEQ1は、下り方向の通信レートの算出に際して、通信装置30と端末20aの間で行われる通信と、通信装置30と端末20bの間で行われる通信との例を示す。図6の例では、総パケット数は5個であるが、総パケット数は実装に応じて任意に設定される。
算出部41は、端末20a宛の下りテストパケットを、送信部32を介して、端末20aに送信する(ステップS1)。算出部41は、端末20a宛ての下りテストパケットの送信時刻T1を取得し、端末20aの識別子に対応付けて送信時刻テーブル52に記録する。また、カウンタ42は、カウンタ値をインクリメントして、端末20aに送信したパケット数を記憶する。図6に示す送信時刻テーブル52には、各端末20の識別子と下りテストパケットの送信時刻が対応付けて記録されている。
一方、端末20aは、下りテストパケットを、パケット送受信部21aを用いて受信する。パケット送受信部21aは、下りテストパケットを、受信時刻と共に、制御部22aに出力する。制御部22aは、下りテストパケットのペイロードを用いて、下りテストパケットの受信を認識する。パケットカウント部23aは、下りテストパケットを1つ受信したことを記憶する。制御部22aは、下りテストパケット中のデータから総パケット数が5つであることを特定する。制御部22aは、パケットカウント部23aのカウント値が1であるのに対して、総パケット数が5であるので、全ての下りテストパケットを受信していないと判定して、パケット送受信部21aから取得した受信時刻を廃棄する。
算出部41は、端末20aに送信した下りテストパケットの総数が、下りテストパケット中に記載されている総パケット数になるまで、連続的に、下りテストパケットを端末20aに送信する(ステップS2)。なお、カウンタ42は、端末20aに送信した下りテストパケットの数をカウントしており、算出部41は、適宜、カウンタ42からカウント値を取得する。
一方、端末20は、2〜4番目に受信した下りテストパケットを、ステップS1の説明で述べた処理と同様に処理する。5番目の下りテストパケットを受信すると、パケット送受信部21aは、受信時刻(T2)と共に下りテストパケットを制御部22aに出力する。パケットカウント部23aは、カウント値を1つインクリメントするので、この時点での下りテストパケットの受信数は5つになる。制御部22aは、パケットカウント部23aのカウント値と総パケット数が一致したことから、全ての下りテストパケットを受信したと判定する。制御部22aは、パケット送受信部21aから通知された時刻情報(T2)を、総パケット数として通知された数分の下りテストパケットを受信した時刻として記憶する。制御部22は、記憶した時刻情報を用いて、下り応答パケットを生成する。
図6のF2は、下り応答パケットのフォーマットの例である。下り応答パケットは、IPヘッダ、TCPヘッダ、データを含む。データには、パケットが下り応答パケットであることを示す情報(RP1)と受信時刻情報が含まれる。受信時刻情報は、下り応答パケットの送信元の端末20が、総パケット数として通知された数だけの下りテストパケットを受信した時刻を表わす。制御部22aは、生成した下り応答パケットを、パケット送受信部21aを介して通信装置30に送信する(ステップS3)。ステップS3の処理により、通信装置30から端末20aへ総パケット数分の下りテストパケットが到達した時刻がT2であることが、通信装置30に通知される。
通信装置30の受信部33は、下り応答パケットを受信すると、算出部41に出力する。算出部41は、下り応答パケット中の受信時刻を取得する。ステップS3で受信する下り応答パケットの送信元は端末20aであり、受信時刻はT2である。算出部41は、下り応答パケットの送信元に対応付けて送信時刻テーブル52に記憶されている送信時刻と、下り応答パケットで通知された受信時刻の差分から、総パケット数分の下りテストパケットが宛先に到達するまでにかかった時間を求める。以下、総パケット数分の下りテストパケットが宛先に到達するまでにかかった時間を表わす際に、「ΔTd_」という文字列に、パケットの宛先の符号の最後のアルファベットを付して表わす。また、下り方向の通信レートは、「Rd_」という文字列に、パケットの宛先の符号の最後のアルファベットを付して表わす。さらに、下り方向の送信可能なフレーム数は、「FNd_」という文字列に、パケットの宛先の符号の最後のアルファベットを付して表わすものとする。
総パケット数分の下りテストパケットが通信装置30から端末20aに到達するまでにかかった時間(ΔTd_a)は、図6の例では、通信装置30から端末20aに5つの下りテストパケットが到達するまでにかかる時間である。従って、式(1)のように表わせる。
ΔTd_a=T2−T1 ・・・(1)
そこで、算出部41は、(2)式から、通信装置30と端末20aの間の下り方向の通信レート(Rd_a)を計算する。
Rd_a=AP×BNtp/ΔTd_a ・・・(2)
ここで、APは通信装置30から端末20aに連続的に送信された下りテストパケットの総パケット数であり、BNtpは1つの下りテストパケットに含まれているビット数である。さらに、算出部41は、通信装置30から端末20aに単位時間当たりに送信可能なフレーム数(FNd_a)を、(3)式から計算する。
FNd_a=Rd_a/BNf ・・・(3)
ここで、BNfは1フレームに含まれているビット数である。算出部41は、通信装置30から端末20aに向けて単位時間当たりに送信可能なフレーム数を求めると、端末20aの識別子に対応付けて送信フレーム数テーブル53(図8)に記憶する。また、カウンタ42は、次に行う通信レートの計算に備えて、カウンタ値を初期化する。
通信装置30は1つの端末20aに単位時間当たりに送信可能なフレーム数を求めると、他の端末20との間での通信レートや単位時間当たりに送信可能なフレーム数を求める。例えば、図6の例では、通信装置30中の算出部41は、端末20aに単位時間当たりに送信可能なフレーム数を計算し終わると、端末20bとの間の通信レートの計算を行うために、端末20bに下りテストパケットを送信する(ステップS4)。端末20bに送信される下りテストパケットも、F1に示す情報要素を含む。また、通信装置30から端末20bに下りテストパケットが送信された時刻(T3)もステップS1で説明した手順と同様に、送信時刻テーブル52に記録される。さらに、下りテストパケットを受信したときに端末20bで行われる処理は、下りテストパケットを受信したときに端末20aで行われる処理と同様である。このため、端末20bは、下りテストパケットで通知された数と同数の下りテストパケットを受信すると、最後の下りテストパケットの受信時刻(T4)を通知するための下り応答パケットを通信装置30に送信する(ステップS5)。ステップS5で下り応答パケットを受信した通信装置30は、端末20bとの間の通信レートや単位時間当たりに送信可能なフレーム数を、端末20aとの間の通信レート等と同様の処理によって算出する。また、算出部41は、得られた結果を、適宜、端末20bの識別子に対応付けて、送信フレーム数テーブル53に記録する。
図6のシーケンス図SEQ1では、紙面の関係で、端末20a、20bとの間でのパケットの送受信のみを示したが、通信装置30は、通信システム中の他の端末20に対しても、同様の処理により、単位時間当たりに送信可能なフレーム数を求める。
図7は、上り方向の通信レートの算出方法の例を説明する図である。通信装置30は、通信装置30に映像データ(第1の映像データ)を送信する端末20との間での上り方向の通信レート、単位時間で送信可能なフレーム数も求める。以下、端末20aが第1の映像データを送信する場合を例として説明する。
図7のF11は、上りテストパケットのフォーマットの例である。上りテストパケットは、上り方向の通信レートを求めるために使用可能な応答パケットの送信を、第1の映像データの送信元となる端末20に求めるためのパケットである。上りテストパケットは、IPヘッダ、TCPヘッダ、データを含む。データには、パケットが上りテストパケットであることを示す情報(TP2)と総パケット数(AP)が含まれる。上りテストパケットは、上りテストパケットの宛先からデータを受信する場合の通信レートを求めるために使用されるので、擬似映像データを含まない。
図7のシーケンスSEQ2は、上り方向の通信レートの算出に際して、通信装置30と端末20aの間で行われる通信の例を示す。図7の例でも、総パケット数は5個であるが、総パケット数は実装に応じて任意に設定される。算出部41は、端末20a宛の上りテストパケットを、送信部32を介して、端末20aに送信する(ステップS6)。また、このとき、カウンタ42は、カウンタ値を初期化する。
一方、端末20aの制御部22aは、上りテストパケットを、パケット送受信部21aを介して取得する。制御部22aは、上りテストパケットのペイロードにパケットの種類がTP2であることが記録されているので、上りテストパケットの受信を認識する。制御部22aは、上りテストパケット中のデータから総パケット数が5つであることを特定すると、総パケット数分だけの上り応答パケットを、パケット送受信部21aを介して、連続的に通信装置30に送信する(ステップS7)。このとき、制御部22aは、1番目に送信する上り応答パケットの送信時刻(T5)を、上り応答パケットに含める。
図7のF12は、上り応答パケットのフォーマットの例である。上り応答パケットは、IPヘッダ、TCPヘッダ、データを含む。データには、パケットが上り応答パケットであることを示す情報(RP2)、パケット番号(PN)、送信時刻情報、擬似映像データが含まれる。送信時刻情報は、上り応答パケットの送信元の端末20が、1番目の上り応答パケットを送信した時刻を表わす。パケット番号(PN)は、上り応答パケットの送信順序を示す値である。擬似映像データは、下りテストパケットに含まれている擬似映像データと同様である。
通信装置30の受信部33は、上り応答パケットを受信すると、受信時刻と共に、算出部41に出力する。また、カウンタ42は、上り応答パケットを受信するたびにカウンタ値をインクリメントすることにより、上り応答パケットの受信数を求める。算出部41は、総パケット数と同数の上り応答パケットを受信すると、最後に受信した上り応答パケットの受信時刻(T6)を特定する。算出部41は、上り応答パケット中の送信時刻(T5)と受信時刻T6を用いて、端末20aと通信装置30の間で上り方向に単位時間中で送信可能なフレーム数を計算する(ステップS8)。
以下、ステップS8で行われる処理の詳細を述べる。以下、総パケット数分の上りテストパケットが通信装置30に到達するまでにかかった時間を表わす際に、「ΔTu_」という文字列に、パケットの送信元の符号の最後のアルファベットを付す。また、上り方向の通信レートは、「Ru_」という文字列に、パケットの送信元の符号の最後のアルファベットを付して表わす。さらに、上り方向の送信可能なフレーム数は、「FNu_」という文字列に、パケットの送信元の符号の最後のアルファベットを付して表わす。
まず、算出部41は、(4)式を用いて、端末20aから通信装置30へ総パケット数分の上り応答パケットが到達するまでにかかった時間(ΔTu_a)を求める。
ΔTu_a=T6−T5 ・・・(4)
次に、算出部41は、(5)式から、通信装置30と端末20aの間の上り方向の通信レート(Ru_a)を計算する。
Ru_a=AP×BNrp/ΔTu_a ・・・(5)
ここで、APは通信装置30から端末20aに連続的に送信された上りテストパケットの総パケット数であり、BNrpは1つの上り応答パケットに含まれているビット数である。さらに、算出部41は、通信装置30から端末20aに単位時間当たりに配信可能なフレーム数(FNu_a)を、(6)式から計算する。
FNu_a=Ru_a/BNf ・・・(6)
ここで、BNfは1フレームに含まれているビット数である。算出部41は、端末20aから通信装置30に向けて単位時間当たりに送信可能なフレーム数を求めると、端末20aの識別子に対応付けて送信フレーム数テーブル53(図8)に記憶する。
図8は、通信レートの算出結果の例を説明する図である。図8のネットワークN1は、通信システム中の通信経路と、各経路で1秒間当たりに送受信可能なフレーム数(fps、frames per second)の計算結果の例を示す。以下、各経路で1秒間当たりに送受信可能なフレーム数を「フレームレート」と記載することがある。
図8の例では、端末20aから通信装置30に向かう上り方向では30fpsのフレームレートが得られている。一方、通信装置30からの下り方向のフレームレートは、端末20aでは42fps、端末20bでは9fps、端末20cでは11fps、端末20dでは20fpsである。図9に、各経路での通信レートがネットワークN1に示すとおりである場合に得られる送信フレーム数テーブル53の例も示す。
送信フレーム数テーブル53は、ネットワーク中の各端末に対する下り方向のフレームレートと、第1の映像データの送信元となる端末20aからの上り方向のフレームレートが記録されている。さらに、送信フレーム数テーブル53には、実配信フレームレートも記録される。算出部41は、ネットワーク中の各端末に対する下り方向のフレームレートと、第1の映像データの送信元となる端末20aからの上り方向のフレームレートの中の最小値を、実配信フレームレートに決定する。このため、図9の例では、実配信フレームレートは9fpsになる。
図9は、通信装置30で行われる処理の例を説明するフローチャートである。なお、図9は、一例であり、実装に応じて変更されうる。例えば、通信装置30は、下りテストパケットの送信の前に上りテストパケットを送信しても良い。この場合、ステップS12〜S14の処理の前にステップS15からS18の処理が行われる。
通信装置30中の算出部41は、テストパケットを生成する(ステップS11)。続いて、通信装置30は、ループ端L1とL2で挟まれた繰り返しループ(以下、フレームレート算出ループという)の処理を実行する。算出部41は、処理対象として選択した端末20に対応付けて、送信時刻を送信時刻テーブル52に記憶して、処理対象の端末20に下りテストパケットを送信する(ステップS12)。算出部41は、受信部33を介して、処理対象の端末20から下り応答パケットを受信する(ステップS13)。算出部41は、処理対象の端末20との間での下り方向のフレームレート(fps)を算出する(ステップS14)。次に、算出部41は、接続先テーブル51を用いて、処理対象の端末20が第1の映像データの送信元であるかを判定する(ステップS15)。
処理対象の端末20が第1の映像データの送信元である場合、算出部41は、処理対象として選択した端末20に上りテストパケットを送信する(ステップS15でYes、ステップS16)。算出部41は、受信部33を介して、処理対象の端末20から上り応答パケットを受信する(ステップS17)。算出部41は、処理対象の端末20との間での上り方向のフレームレート(fps)を算出する(ステップS18)。その後、算出部41は、算出したフレームレートを、送信フレーム数テーブル53に格納する(ステップS19)。
一方、処理対象の端末20が第1の映像データの送信元ではない場合、算出部41は、ステップS14で算出したフレームレートを、送信フレーム数テーブル53に格納する(ステップS15でNo、ステップS19)。
送信フレーム数テーブル53の更新が完了すると、フレームレート算出ループの今回の繰り返しが終了する。そこで、通信装置30は、まだ処理対象になっていない端末20があれば、次の端末20に注目して、フレームレート算出ループ内の処理を繰り返す。他方、全ての端末20に対するフレームレートの算出が終わっていれば、通信装置30は、各端末までの下り回線のフレームレートの最小値をFminに代入する(ステップS20)。
算出部41は、第1の映像データの送信元との間の上り方向のフレームレートがFmin以下であるかを判定する(ステップS21)。第1の映像データの送信元との間の上り方向のフレームレートがFmin以下である場合、算出部41は、Fminの値を、第1の映像データの送信元との間の上り方向のフレームレートに変更する(ステップS21でYes、ステップS22)。その後、算出部41は、Fminの値を、実配信フレームレートに設定する(ステップS23)。
一方、第1の映像データの送信元との間の上り方向のフレームレートがFminを超えている場合、算出部41は、Fminの値を変更せずに、実配信フレームレートに設定する(ステップS22でNo、ステップS23)。
図10は、端末20で行われる処理の例を説明するフローチャートである。図10において、定数vは、総パケット数を表わしている。テストパケットを受信した制御部22は、受信したテストパケットが下りテストパケットと上りテストパケットのいずれであるかを判定する(ステップS31)。下りテストパケットを受信した場合、パケットカウント部23は、下りテストパケットの受信数のカウント値を1つインクリメントする(ステップS31で「下り」、ステップS32)。制御部22は、下りテストパケットの受信数が定数v未満の場合、ステップS31に戻る(ステップS33でNo)。一方、下りテストパケットの受信数が定数vと等しい場合、制御部22は、v番目に受信した下りテストパケットの受信時刻を下り応答パケットに記録する(ステップS33でYes、ステップS34)。制御部22は、パケット送受信部21を介して、下り応答パケットを通信装置30に返送する(ステップS35)。パケットカウント部23は、下り応答パケットが送信されると、下りテストパケットの受信数をリセットして処理を終了する(ステップS36)。
上りテストパケットを受信した場合、制御部22は、1番目に送信する上り応答パケットの送信時刻を含む上り応答パケットを生成する(ステップS31で「上り」、ステップS37)。制御部22は、パケット送受信部21を介して、v個の上り応答パケットを通信装置30に返送して、処理を終了する(ステップS38)。
(B)配信データの生成
実配信フレームレートを求めた後、算出部41は、映像配信開始指示を生成する。映像配信開始指示は、配信開始通知の送信元に対して映像データの配信の開始を許可するために使用可能な任意の形式の制御メッセージである。ここでは、端末20aが配信開始通知を送信した場合を例としているので、映像配信開始指示は端末20aに送信される。端末20aは、映像配信開始指示を受信すると、カメラ24aを用いて撮像した映像(撮像映像)を、パケット送受信部21aを介して、通信装置30に送信する。このとき、通信システムは図8のネットワークN1に示したとおりであるので、端末20aは、撮像映像を30fpsで通信装置30に送信する。
図11は、配信データの生成方法の例を説明する図である。通信装置30の受信部33は、第1の映像データを受信すると、バッファ54に格納する。バッファ54に格納されている映像データのフレームの一部を図11の上の段に示す。図11の例では、撮像映像が第1の映像データに該当する。
生成部43は、端末20aから受信した撮像映像のフレームレートについて、算出部41で求められた実配信フレームレートを基準にしたときの比率を求める。図8に示すように、実配信フレームレートが9fpsであるのに対し、撮像映像のフレームレートは30fpsであるので、撮像映像のフレームレートは、実配信フレームレートの3.33倍(≒30/9)である。そこで、生成部43は、撮像映像中のフレーム数と抽出されるフレーム数の比が、実配信フレームレートを基準にしたときの撮像映像のフレームレートの比率と同じになるようにフレームを抽出する。例えば、生成部43は、撮像映像の先頭のフレームを抽出した後、3枚のフレームを廃棄し、5番目のフレームを送信対象として抽出する。また、その後も、生成部43は、抽出したフレームに続く3枚のフレームを廃棄して、廃棄済みのフレームの次のフレームを抽出する処理を繰り返すことにより、29番目のフレームまで処理する。この処理により、1番目、5番目、9番目、13番目、17番目、21番目、25番目、29番目の8枚のフレームが抽出される。図11の中央の欄には、フレームが抽出される様子を示しており、抽出対象に選択されずに間引かれたフレームに点描を入れて示している。また、図11の一番下の欄の数字は、抽出されたフレームが新たに生成された映像データの中で何番目のフレームにあたるかを示している。生成部43は、撮影映像中の30枚のフレームから9枚のフレームを抽出するために、図11に示すように、30番目のフレームも配信用のフレームとして抽出する。このため、抽出処理を行った後に得られた映像データ(第2の映像データ)には、図11の抽出映像に示すフレームが含まれる。なお、図11は、1秒間に送信されるフレームを示している。従って、抽出後の映像データは、9fpsで各端末20に送信される。
生成部43は、生成した映像データ(第2の映像データ)を、送信部32に出力する。送信部32は、生成部43から入力された第2の映像データを、端末20a〜20dの各々に、9fpsで送信する。第2の映像データの配信に使用されている通信レートは、いずれの端末への下り回線でも使用可能な値であるため、端末20a〜20dはいずれも、同じタイミングで同じフレームのデータを受信することができる。
各端末20は、パケット送受信部21で受信したフレームのパケットを制御部22に出力する。制御部22は、通信装置30から配信された映像を適宜処理して、各端末20のディスプレイ25に表示する。
このように、いずれの端末にも同じタイミングでフレームが届くように映像データからフレームが抽出されるため、各端末20のディスプレイ25を参照しながら作業を行う作業員は、同じタイミングで高解像度の画像を参照しながら作業を行うことができる。その結果、通信経路の輻輳などに起因した表示タイミングのずれによる作業ミスが防止される。また、映像の配信元となっている端末20aにも、第2の映像データが送信されるので、指導役の作業員も、他の作業員が見ている映像を確認することができる。このため、映像の配信元の端末20aを用いている作業員の処理と、他の端末20b〜20dに配信された映像を用いている他の作業員の処理との間のタイミングのずれを防止することができる。さらに、作業を監督することができる有識者の人数が少ない場合でも、複数拠点での処理が行われる際に、各拠点に同一の指示を同時に出すことができるため、工事作業が効率化される。
<第2の実施形態>
第2の実施形態では、通信システム中の通信状況の変化に対応するために、映像の配信中にも定期的に通信レートを測定する場合について説明する。第2の実施形態でも、映像の配信の開始の際は、第1の実施形態と同様の処理が行われる。以下の説明では、第1の映像データの配信に使用されているパケット番号をMと記載し、第2の映像データの配信に使用されているパケット番号をNと記載する。なお、パケット番号は、映像データの送信順序を表わす値である。映像データの送信がUDP(User Datagram Protocol)のようにシーケンス番号を用いないプロトコルの場合、パケット番号はデータに含めて送信されるものとする。一方、TCPなどのシーケンス番号を用いるプロトコルで映像データが送信される場合、シーケンス番号がパケット番号として使用されても良い。
図12は、データ配信中に下り方向の通信レートを求める方法の例を説明する図である。データ配信中に下り方向の通信レートを測定する場合、通信装置30の算出部41は、通信レートの計測を行うタイミングを指定するために、下り計測パケットを生成する。以下の説明では、通信装置30は、パケット番号を定数Xで割ったときに得られる剰余が1のパケットから、パケット番号を定数Xで割ったときに得られる剰余が定数vのパケットまでのv個のパケットの送受信にかかる時間から通信レートを求めるものとする。ここで、数値Xは、通信レートの計測処理を行う周期を表わす値であり、回線の状況の変化が比較的小さい間に送信できると見込まれるパケット数である。また、数値Xは数値vよりも大きな値であるものとする。
図12のシーケンスSEQ11は、通信装置30が通信システム中の端末20aとの間で行う通信の例を示す。算出部41は、下り計測パケットを生成すると、パケット送受信部21を介して端末20に送信する(ステップS51)。
図12のF21は、下り計測パケットのフォーマットの例である。下り計測パケットは、IPヘッダ、TCPヘッダ、データを含む。データには、パケットが下り計測パケットであることを示す情報(CP1)、端末20が下り計測応答パケットを生成するタイミングを表わす情報が含まれる。図12の場合、端末20が下り計測応答パケットを生成するタイミングを表わす情報は、数値Xと数値vである。図12の例では、数値X=100、数値v=10の場合を例として説明する。
端末20aの制御部22aは、パケット送受信部21aを介して、下り計測パケットを取得すると、数値Xと数値vを取得する。制御部22aは、数値Xと数値vを用いて、パケット番号が(7)式で表わされるパケットの受信時間を特定することが要求されたと認識する。
N(modX)=v ・・・(7)
下り計測パケットの送信が終わると、通信装置30は、第2の映像データを含むパケットの送信を開始する。通信装置30は、N=1のパケットを端末20aに送信したとする(ステップS52)。通信装置30は、1つ目のパケット(N=1)はN(modX)=1をみたすので、N=1のパケットの送信時刻(T11)を送信時刻テーブル52に記憶する。
映像データの配信中は、送信時刻テーブル52には、端末の識別子に対応付けて、受信時刻が通知されるパケットのパケット番号と、N(modX)=1のパケットの送信時刻が記録される。例えば、ステップS1の処理により、端末20aに対応付けて、時刻T11の値が記録される。また、算出部41は、受信時刻が通知されるパケットの番号を、送信時刻を記録したパケットの番号に(v−1)を加えた値に設定する。端末20aの場合、v=10であるので、受信時刻が通知されるパケットのパケット番号は10である。
送信時刻テーブル52に対する処理と並行して、生成部43は、第2の映像データの送信処理が行われ、N=2〜N=10のデータパケットを端末20に送信する(ステップS53)。
一方、端末20aの制御部22aは、データパケットを、パケット送受信部21aを介して、受信時刻と共に取得する。制御部22aは、データパケットのペイロードを処理することにより、適宜、映像をディスプレイ25aに出力すると共に、パケット番号も取得する。制御部22aは、パケット番号を数値Xで割ったときの剰余がvであるかを判定する。パケット番号を数値Xで割ったときの剰余がvでない場合、制御部22aは受信時刻を破棄する。一方、パケット番号を数値Xで割ったときの剰余がvである場合、受信時刻を用いて下り計測応答パケットを生成する。図12の例では、パケット番号=vのパケットを端末20aが受信した場合に、制御部22aは受信時刻(T12)を含めた下り計測応答パケットを生成する。
図12のF22は、下り計測応答パケットのフォーマットの例である。下り計測応答パケットは、IPヘッダ、TCPヘッダ、データを含む。データには、パケットが下り計測応答パケットであることを示す情報(CR1)、受信時刻、パケット番号が含まれる。ステップS53までの処理が行われた段階で生成される下り計測応答パケットには、受信時刻=T12が記録される。また、v=10であるため、パケット番号は10である。制御部22aは、生成した下り計測応答パケットを、通信装置30に送信する(ステップS54)。
通信装置30の算出部41は、受信部33を介して、下り計測応答パケットを取得する。ステップS54で受信する下り計測応答パケットの送信元は端末20aであり、受信時刻はT12である。算出部41は、下り計測応答パケットに含まれているパケット番号が、下り計測応答パケットの送信元に対応付けて送信時刻テーブル52に記憶している値と一致すると、受信した下り計測応答パケットを通信レートの算出に使用することを決定する。一方、下り計測応答パケットに含まれているパケット番号が、送信時刻テーブル52中の値と一致しない場合、算出部41は下り計測応答パケットを廃棄する。
算出部41は、通信レートの計算に際し、下り計測応答パケットの送信元に対応付けられている送信時刻と、下り計測応答パケットで通知された受信時刻の差分から、v個分のデータパケットが宛先に到達するまでにかかった時間を(8)式から求める。
ΔTdv_a=T12−T11 ・・・(8)
ここで、ΔTdv_aは、v個のデータパケットが通信装置30から端末20aに到達するまでにかかった時間である。また、算出部41は、通信装置30と端末20aの間の下り方向の通信レート(Rdc_a)を(9)式から計算する。
Rdc_a=v×BNdp/ΔTdv_a ・・・(9)
ここで、BNdpは1つのデータパケットに含まれているビット数である。さらに、算出部41は、通信装置30と端末20aの間の下り方向のフレームレート(FNd_a)を、1フレームに含まれているビット数(BNf)を用いて、(10)式から計算する。
FNd_a=Rdc_a/BNf ・・・(10)
算出部41は、通信装置30と端末20aの間の下り方向のフレームレートを求めると、送信フレーム数テーブル53を更新する。
算出部41において通信レートの更新処理が行われている間も、並行して、通信装置30から端末20aへのデータパケットの送信が行われる。また、各パケット中のパケット番号は、パケットの送信順序に応じてインクリメントされる。このため、通信装置30が端末20aに対して、N=X+1のパケットを送信する(ステップS55)。また、このときに、算出部41は、再度、通信レートの計算を行うために、N=X+1のパケットの送信時刻(T13)を送信時刻テーブル52に記録する。生成部43からのデータパケットの送信は継続されているので、N=X+vのデータパケットも端末20aに送信される(ステップS56)。
端末20aがデータフレームを受信したときに行う処理は、ステップS52〜S54を参照しながら説明した処理と同様である。このため、端末20aは、N=X+vのデータパケットを受信すると、受信時刻T14、および、パケット番号N=X+vを含む下り計測応答パケットを通信装置30に送信する(ステップS57)。通信装置30は、端末20aから下り計測応答パケットを受信すると、ステップS54を参照しながら説明した処理と同様の処理を行うことにより、端末20aとの間の通信レートを更新する。
その後も、パケット番号NをXで割ったときの剰余が1となるパケットごとに、通信装置30は、送信時刻を記録し、端末20aは、パケット番号NをXで割ったときの剰余がxとなるパケットの受信時刻を通信装置30に通知する(ステップS58)。このため、定期的に、通信装置30と端末20aの間の通信レートやフレームレートが更新される。また、図12では、通信装置30と端末20aの間の通信を例として説明したが、通信装置30は、通信システム中の各端末20との間で同様の処理を行うことにより、定期的に通信レートやフレームレートを更新する。
図13は、データ配信中に上り方向の通信レートを求める方法の例を説明する図である。データ配信中に上り方向の通信レートを測定する場合、通信装置30の算出部41は、通信レートの計測を行うタイミングを指定するために、上り計測パケットを生成する。以下の説明では、通信装置30は、パケット番号を定数Yで割ったときに得られる剰余が1のパケットから、パケット番号を定数Yで割ったときに得られる剰余が定数wのパケットまでのw個のパケットの送受信にかかる時間から通信レートを求めるものとする。
図13のシーケンスSEQ12は、通信装置30が端末20aから第1の映像データを受信する場合に、通信レートを求めるために行う通信の例を示す。算出部41は、上り計測パケットを生成すると、パケット送受信部21を介して端末20aに送信する(ステップS61)。
図12のF31は、上り計測パケットのフォーマットの例である。上り計測パケットは、IPヘッダ、TCPヘッダ、データを含む。データには、パケットが上り計測パケットであることを示す情報(CP2)、端末20が上り計測応答パケットを生成するタイミングを求めるために使用される情報が含まれる。図12の場合、端末20が上り計測応答パケットを生成するタイミングを求めるために使用される情報は、数値Yである。
端末20の制御部22は、パケット送受信部21を介して、上り計測パケットを取得すると、数値Yを取得する。制御部22は、パケット番号MをYで割ったときの剰余が1となるパケットの送信時間を通信装置30に通知することが要求されたと認識する。そこで、制御部22は、M=1のデータパケットを送信する際に、送信時刻T21を記憶する(ステップS62)。制御部22は、その後も、通信装置30に向けて、第1の映像データを含むデータパケットを通信装置30に送信する(ステップS63)。
通信装置30は、端末20aで受信した第1の映像データのデータパケットをバッファ54に格納する。このとき、算出部41は、各データパケット中のパケット番号をモニタする。なお、算出部41は、各データパケットの受信時刻もモニタしており、パケット番号をYで割ったときの剰余がwとなるデータパケットの受信時刻を特定する。
ステップS63に示す処理と並行して、端末20aは、上り計測応答パケットを通信装置30に送信することにより、パケット番号MをYで割ったときの剰余が1となるパケットの送信時間を通信装置30に通知する(ステップS64)。
図13のF32は、上り計測応答パケットのフォーマットの例である。上り計測応答パケットは、IPヘッダ、TCPヘッダ、データを含む。データには、パケットが上り計測応答パケットであることを示す情報(CR2)、送信時刻、パケット番号が含まれる。ステップS62までの処理が行われた段階で生成される上り計測応答パケットには、送信時刻=T21が記録される。また、時刻T21に送信したパケットのパケット番号M=1も上り計測応答に記録される。制御部22aは、生成した上り計測応答パケットを、パケット送受信部21aを介して、通信装置30に送信する。
通信装置30の算出部41は、送信部32を介して、上り計測応答パケットを取得し、パケット番号M=1のパケットが時刻T21に送信されたことを特定する。算出部41は、通信レートの計算に際し、上り計測応答パケットの送信元に対応付けられている送信時刻と、下り計測応答パケットで通知された受信時刻の差分を用いて、w個分のデータパケットが宛先に到達するまでにかかった時間(ΔTuw_a)を(11)式から求める。
ΔTuw_a=T22−T21 ・・・(11)
次に、算出部41は、(12)式から、通信装置30と端末20aの間の上り方向の通信レート(Ruc_a)を計算する。
Ruc_a=w×BNdp/ΔTuw_a ・・・(12)
ここで、BNdpは1つのデータパケットに含まれているビット数である。さらに、算出部41は、通信装置30と端末20aの間の上り方向のフレームレート(FNu_a)を、(13)式から計算する。
FNu_a=Ruc_a/BNf ・・・(13)
算出部41は、端末20aと通信装置30の間での上り方向のフレームレートを求めると、送信フレーム数テーブル53を更新する。
その後も、パケット番号MをYで割ったときの剰余が1となるパケットごとに、端末20aは、送信時刻を通信装置30に通知する。また、通信装置30は、パケット番号MをYで割ったときの剰余がwとなるパケットの受信時刻と、端末20aから通知された送信時刻を用いて、通信レートを計算する。このため、定期的に、通信装置30と端末20aの間の上り方向の通信レートも更新される。
なお、図13のシーケンスSEQ12では、ステップS63の次にステップS64によって上り計測応答パケットが送信されているが、上り計測応答パケットの送信のタイミングは実装に応じて変更され得る。上り計測応答パケットは、M(modY)=1をみたすパケットの送信後の任意のタイミングで送信され得る。
図12と図13を参照しながら説明した処理により、通信中のデータパケットを用いて、通信レートの変動がモニタされる。また、定期的に、送信フレーム数テーブル53中のフレームレートが更新される。このため、生成部43は、更新後のフレームレートのうちの最小値を、第2の映像のフレームレートとして用いて、第2の映像データを生成する。第1の映像データから第2の映像データを生成する方法は、第1の実施形態で説明した処理と同様である。
図14は、データ配信中の通信装置30で行われる処理の例を説明するフローチャートである。なお、図14は処理の一例であり、通信装置30での処理は実装に応じて変更され得る。例えば、ステップS71の処理はステップS72、S73の後に行われても良い。
まず、ループ端L11とL12で挟まれた繰り返しループ(フレームレート算出ループ)の処理が行われる。算出部41は、フレームレートの測定対象の端末20に、下り計測パケットを送信する(ステップS71)。処理対象が第1の映像データの送信元である場合、算出部41は、処理対象の装置に、上り計測パケットを送信する(ステップS72でYes、ステップS73)。一方、処理対象が第1の映像データの送信元ではない場合、ステップS73の処理は行われない(ステップS72でNo)。算出部41は、生成部43で生成された第2の映像データを含むパケットのうち、パケット番号NがN(modX)=1を満たすパケットの送信時刻を送信時刻テーブル52に記録する(ステップS74)。処理対象の端末20から下り計測応答パケットを受信すると、算出部41は、下り回線で単位時間当たりに配信可能なフレーム数を算出する(ステップS75、S76)。
処理対象が第1の映像データの送信元である場合、算出部41は、処理対象の装置から上り計測応答パケットを受信する(ステップS77でYes、ステップS76)。すると、算出部41は、第1の映像データを含むパケットのうちで、パケット番号MがM(modY)=wをみたすパケットの受信時刻を取得し、上り回線で単位時間当たりに配信可能なフレーム数を算出する(ステップS79、S80)。その後、算出部41は、算出した配信可能フレーム数を送信フレーム数テーブル53に格納する(ステップS81)。通信装置30は、まだ処理対象になっていない端末20があれば、次の端末20に注目して、フレームレート算出ループ内の処理を繰り返す。他方、全ての端末20に対するフレームレートの算出が終わっていれば、ステップS82に進む。ステップS82〜S85で行われる処理は、図9を参照しながら説明したステップS20〜S23で行われる処理と同様である。ステップS85の処理が終わると、ステップS74以降の処理が繰り返される。
一方、ステップS77において、処理対象が第1の映像データの送信元でないと判定された場合、算出部41は、算出した配信可能フレーム数を送信フレーム数テーブル53に格納し、ステップS82以降の処理を行う(ステップS77でNo、ステップS81)。
図15は、端末20で行われる処理の例を説明するフローチャートである。図15を参照しながら、第2の映像データが配信されている端末20で行われる処理の例を説明する。端末20は、パケット送受信部21を介して、通信装置30から下り計測パケットを受信する(ステップS91)。制御部22は、下り計測パケットから、数値Xと数値vを取得する。端末20は、パケット送受信部21を介して、通信装置30から第2の映像データを含むデータパケットを受信する(ステップS92)。制御部22は、受信したパケットのパケット番号NがN(modX)=vを満たすまで、ステップS92の処理を継続する(ステップS93でNo)。制御部22は、受信したパケットのパケット番号NがN(modX)=vを満たす場合、パケット番号=Nのパケットの受信時刻を下り計測応答パケットに記録する(ステップS93でYes、ステップS94)。制御部22は、パケット送受信部21を介して、下り計測応答パケットを通信装置30に送信する(ステップS95)。
図16は、端末20で行われる処理の例を説明するフローチャートである。図16を参照しながら、第1の映像データを通信装置30に送信している端末20において、通信装置30での上り方向の通信レートの計測のために行われる処理の例を説明する。端末20は、パケット送受信部21を介して、通信装置30から上り計測パケットを受信する(ステップS101)。制御部22は、上り計測パケットから、数値Yを取得する。端末20は、パケット送受信部21を介して、通信装置30に第1の映像データを含むデータパケットを送信する(ステップS102)。制御部22は、送信したパケットのパケット番号MがM(modY)=1を満たすまで、ステップS102の処理を継続する(ステップS103でNo)。制御部22は、送信したパケットのパケット番号MがM(modY)=1を満たす場合、パケット番号=Mのパケットの送信時刻を上り計測応答パケットに記録する(ステップS103でYes、ステップS104)。制御部22は、パケット送受信部21を介して、上り計測応答パケットを通信装置30に送信する(ステップS105)。
以上説明したように、第2の実施形態では、通信経路の状況の変化に伴ってフレームレートが適宜更新され、更新されたフレームレートを用いて、通信が行われる。このため、第2の実施形態によると、通信経路の状況が変化しても、いずれの端末にも同じタイミングでフレームが届くように映像データからフレームが抽出される。このため、各端末20のディスプレイ25を参照しながら作業を行う作業員は、同じタイミングで高解像度の画像を参照しながら作業を行うことができるので、画像が不鮮明なことに起因する作業ミスが防止できる。また、通信経路の輻輳などに起因した表示タイミングのずれによる作業ミスも防止される。さらに、映像の配信元となっている端末20aにも、第2の映像データが送信されるので、指導役の作業員も、他の作業員が見ている映像を確認することができるので、通信システム全体で同期を取りやすくなる。
<第3の実施形態>
通信システムには複数の端末20が含まれているので、第1の映像データを送信する端末(送信端末)が切り替わる可能性もある。以下、映像の配信中に送信端末が切り替わる場合の処理の例を説明する。以下、端末20aが通信装置30に第1の映像データを送信しているときに、送信端末を端末20bに切り替える場合を例として説明する。なお、第3の実施形態でも、図2に示すように、通信装置30は、端末20a〜20dに第2の映像データを送信する。
図17は、第3の実施形態で行われる処理の例を説明するシーケンス図である。なお、図17は、処理の一例であり、例えば、ステップS119とステップS120の処理の順序は任意に変更され得る。ステップS111において、端末20aは第1の映像データ(撮像映像)を通信装置30に送信している。紙面の関係上、図示していないが、通信装置30は、端末20aから受信した映像データから一部のフレームを抽出して生成した第2の映像データを端末20a〜20dに配信している。
ステップS112において、端末20bが切り替え要求を通信装置30に送信したとする。切り替え要求は、通信装置30が配信する映像の生成に使用する映像の送信元を、切り替え要求の送信元に変更することを要求する情報を含む任意の制御パケットである。すなわち、切り替え要求の送信元は、自装置が新たな送信端末として動作することを通信装置30に通知している。
通信装置30は、切り替え要求を受信すると、切り替え要求の送信元である端末20bに対して、上りテストパケットを送信する(ステップS113)。上りテストパケットのフォーマットは第1の実施形態(図7)で説明したとおりである。ここで、ステップS113の処理が行われる時点では、端末20aが通信装置30に撮像映像を送信している。すなわち、端末20bから通信装置30に向かう方向では、端末20a〜20dへの配信用の映像データが送信されていないので、通信レートの算出に上りテストパケットが使用される。
端末20bは、上りテストパケットを受信すると、通信装置30に向けて、上り応答パケットを、特定されたパケット数だけ送信する(ステップS114)。通信装置30は、上り応答パケットと、上り応答パケットの受信時刻を用いて、端末20bとの間の上り方向のフレームレートを算出する(ステップS115)。なお、ステップS113〜S115の処理は、図7と図8を参照しながら説明した処理と同様である。
その後、通信装置30は、端末20bとの間の上り方向のフレームレートと、通信装置30から端末20a〜20dの各々への下り方向のフレームレートを用いて、単位時間当たりの実配信フレーム数(実配信フレームレート)を決定する(ステップS116)。ステップS116で行われる処理は、図8や図9のステップS20〜S23を参照しながら説明したとおりである。このため、実配信フレームレートは、端末20bとの間の上り方向のフレームレート、および、通信装置30から端末20a〜20dの各々への下り方向のフレームレートの中の最小値に決定される。通信装置30の算出部41は、実配信フレームレートを更新すると、送信部32を介して、端末20bに、映像配信開始指示を送信する(ステップS117)。映像配信開始指示を受信した端末20bは、カメラ24bを用いて撮像した映像(撮像映像)の送信を開始する(ステップS118)。以下、分かりやすくするために、端末20bから通信装置30に送信される撮像映像を「第3の映像データ」と記載する。
端末20bから第3の映像データを受信すると、通信装置30は、端末20aに対して、配信停止要求を送信する(ステップS119)。ステップS119で送信される配信停止要求は、第1の映像データの配信の停止を要求するために使用できる任意の制御データである。端末20aの制御部22aは、パケット送受信部21aを介して、配信停止要求を取得すると、カメラ24aを用いて撮像した映像の送信を停止する。さらに、制御部22aは、カメラ24aでの撮像処理も停止しても良い。
一方、通信装置30は、端末20bから受信した第3の映像データから生成した映像データを、通信システム中の各端末20に送信する(ステップS120)。
このように、第3の実施形態によると、送信処理を行う端末20を任意に変更することができる。また、送信処理を行う端末20を切り替えても、全ての端末20に、同じタイミングで高解像度の映像データを送信することができる。このため、映像が不鮮明であるために作業ミスが発生することを防止できる。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
例えば、いずれの実施形態においても、作業の終了などにより、映像の配信が停止される場合、以下に説明する終了処理が行われても良い。終了処理では、送信端末として動作している端末20から通信装置30に対して、配信停止依頼が送信される。配信停止依頼を受信した通信装置30は、通信システム中の端末20に対して、映像受信停止指示を送信する。映像受信停止指示を受信した各端末20は、ディスプレイ25への映像の表示を停止するとともに、通信装置30に対して、映像受信停止応答を送信する。通信装置30は、映像受信停止応答を、通信システム中の全ての端末20から受信すると、送信端末として動作している端末20に対して、配信停止指示を送信する。送信端末は、配信停止指示を受信すると、撮像データの送信を停止すると共に、カメラ24を用いた撮像処理も停止する。また、送信端末は、配信停止応答を通信装置30に送信する。通信装置30は、配信停止応答を受信すると、正常に配信が終了したと判定して、処理を終了する。
第3の実施形態においても、配信停止指示を受信した端末20aは、配信停止応答を通信装置30に送信しても良い。
以上の説明で述べたパケットのフォーマットやテーブルに含まれる情報要素は一例であり、実装に応じて変更され得る。なお、通信レートの算出に使用されるパケットがTCPで送受信される場合を例として説明したが、通信レートの算出に使用されるパケットの送受信に使用されるプロトコルは実装に応じて変更され得る。また、第1の映像データと第2の映像データのいずれも、通信に使用されるプロトコルは任意である。
以上の説明では、配信される映像が工事のための作業映像である場合を例としたが、配信される映像は、工事の映像に限られず、任意の映像が適用され得る。
上述の第1〜第3の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の端末と通信可能な通信装置であって、
前記複数の端末から選択された送信端末から第1の映像データを受信する受信部と、
前記複数の端末のうちで所定期間に配信可能なフレーム数が相対的に小さい端末である対象端末を特定するとともに、前記第1の映像データから、前記対象端末に配信可能な数のフレームを抽出した第2の映像データを生成する制御を行う制御部と、
前記第2の映像データを前記複数の端末の各々に送信する送信部
を備えることを特徴とする通信装置。
(付記2)
前記制御部は、
前記所定期間に前記第1の映像データとして送信されるフレームの数である第1のフレームレートと、前記所定期間に前記対象端末に配信可能なフレームの数である第2のフレームレートを求め、
前記第2のフレームレートが前記第1のフレームレートより小さい場合、前記第1の映像データ中のフレーム数と前記第2の映像データ中のフレーム数の比が、前記第1のフレームレートと前記第2のフレームレートの比と同じ値になるように、前記第1の映像データから前記第2の映像データとして配信するフレームを抽出する
ことを特徴とする付記1に記載の通信装置。
(付記3)
前記制御部は、
前記第2の映像データの配信前に、前記第1の映像データ中のフレームと同じ解像度の画像データを含むテストパケットを用いて、前記複数の端末の各々との間で得られる通信レートを測定し、
前記複数の端末の各々との間で得られる通信レートを用いて前記第2のフレームレートを決定し、
前記第2の映像データの配信の開始後に、前記第2の映像データを含む送信パケットの送信時刻と前記送信パケットの処理順序を表わす番号を対応付けて記憶し、
前記受信部は、前記第2の映像データの配信の開始後に、前記複数の端末の各々から、当該端末が前記第2の映像データを含む受信パケットを受信した時刻と前記受信パケットの処理順序を示す番号の組み合わせを含むパケットを受信し、
前記制御部は、前記送信時刻、前記送信パケットの処理順序、および、前記組み合わせを用いて、前記第2のフレームレートを更新する
ことを特徴とする付記2に記載の通信装置。
(付記4)
前記受信部は、前記第1の映像データの受信前に、前記送信端末から前記第1の映像データ中のフレームと同じ解像度の画像データと時刻情報とを含む複数のパケットを受信し、
前記時刻情報は前記複数のパケットの中で相対的に早く送信されたパケットの送信時刻であり、
前記制御部は、前記複数のパケットの受信時刻と、前記時刻情報を用いて、前記第1のフレームレートを算出し、
前記受信部は、前記第1の映像データの受信開始後に、前記第1の映像データを含む第1のパケットを前記送信端末が送信した時刻と前記第1のパケットの処理順序の組み合わせを通知する通知パケットを受信し、
前記制御部は、前記第1のパケットの後に送信された第2のパケットの受信時刻、前記第2のパケットの処理順序、および、前記通知パケット中の情報を用いて、前記第1のフレームレートを更新する
ことを特徴とする付記2または3に記載の通信装置。
(付記5)
複数の端末と
前記複数の端末と通信可能な通信装置
を含む通信システムであって、
前記通信装置は、
前記複数の端末から選択された送信端末から第1の映像データを受信し、
前記複数の端末のうちで所定期間に配信可能なフレーム数が相対的に小さい端末である対象端末を特定し、
前記第1の映像データから、前記対象端末に配信可能な数のフレームを抽出した第2の映像データを前記複数の端末の各々に送信する
ことを特徴とする通信システム。
(付記6)
前記通信装置は、
前記所定期間に前記第1の映像データとして送信されるフレームの数である第1のフレームレートと、前記所定期間に前記対象端末に配信可能なフレームの数である第2のフレームレートを求め、
前記第2のフレームレートが前記第1のフレームレートより小さい場合、前記第1の映像データ中のフレーム数と前記第2の映像データ中のフレーム数の比が、前記第1のフレームレートと前記第2のフレームレートの比と同じ値になるように、前記第1の映像データから前記第2の映像データとして配信するフレームを抽出する
ことを特徴とする付記5に記載の通信システム。
(付記7)
前記通信装置は、
前記第2の映像データの配信前に、前記第1の映像データ中のフレームと同じ解像度の画像データを含むテストパケットを用いて、前記複数の端末の各々との間で得られる通信レートを測定し、
前記複数の端末の各々との間で得られる通信レートを用いて前記第2のフレームレートを決定し、
前記第2の映像データの配信の開始後に、前記第2の映像データを含む送信パケットの送信時刻と前記送信パケットの処理順序を表わす番号を対応付けて記憶し、
前記第2の映像データの配信の開始後に、前記複数の端末の各々から、当該端末が前記第2の映像データを含む受信パケットを受信した時刻と前記受信パケットの処理順序を示す番号の組み合わせを含むパケットを受信し、
前記送信時刻、前記送信パケットの処理順序、および、前記組み合わせを用いて、前記第2のフレームレートを更新する
ことを特徴とする付記6に記載の通信システム。
(付記8)
前記通信装置は、
前記第1の映像データの受信前に、前記送信端末から前記第1の映像データ中のフレームと同じ解像度の画像データと時刻情報とを含む複数のパケットを受信し、
前記時刻情報は前記複数のパケットの中で相対的に早く送信されたパケットの送信時刻であり、
前記複数のパケットの受信時刻と、前記時刻情報を用いて、前記第1のフレームレートを算出し、
前記第1の映像データの受信開始後に、前記第1の映像データを含む第1のパケットを前記送信端末が送信した時刻と前記第1のパケットの処理順序の組み合わせを通知する通知パケットを受信し、
前記第1のパケットの後に送信された第2のパケットの受信時刻、前記第2のパケットの処理順序、および、前記通知パケット中の情報を用いて、前記第1のフレームレートを更新する
ことを特徴とする付記6または7に記載の通信システム。
(付記9)
複数の端末と前記複数の端末と通信可能な通信装置を含むネットワークで使用される通信方法であって、
前記通信装置が、
前記複数の端末から選択された送信端末から第1の映像データを受信し、
前記複数の端末のうちで所定期間に配信可能なフレーム数が相対的に小さい端末である対象端末を特定し、
前記第1の映像データから、前記対象端末に配信可能な数のフレームを抽出した第2の映像データを前記複数の端末の各々に送信する
処理を行うことを特徴とする通信方法。