[第一の実施形態]
<システム構成>
図1は、デジタルカメラ100がライブ配信するためのシステム構成の一例を示す図である。デジタルカメラ100はネットワークを介して中継サーバ200および配信サーバ300にアクセスする。ここで、デジタルカメラ100は中継サーバ200のアドレスを記録しており、中継サーバ200は配信サーバ300のアドレスを記録しているとする。このアドレスは例えばIPアドレスやURL等である。
本実施形態の外部装置の一例である配信サーバ300はストリーミング技術を利用したクラウドサービスを提供する。本実施形態において、配信サーバ300は例えばライブ配信サービスを提供する。
デジタルカメラ100と中継サーバ200は、ネットワークルータ400を介して接続する。ネットワークルータ400は無線LANのアクセスポイントとなってネットワークを形成する。デジタルカメラ100はクライアントとしてネットワークルータ400が形成したネットワークにジョインする。デジタルカメラ100はネットワークルータ400を介して、中継サーバ200と接続する。また、中継サーバ200は公衆回線を経由して、配信サーバ300と接続する。そして、デジタルカメラ100は中継サーバ200から配信サーバ300のアドレスを受信し、そのアドレスを利用して配信サーバ300と接続することができる。
なお、本実施形態においてデジタルカメラ100がネットワークルータ400に無線接続する例を説明するが、デジタルカメラ100はネットワークルータ400に有線接続してもよい。また、本実施形態の通信システムではデジタルカメラ100は1台として説明しているが、複数のデジタルカメラ100が中継サーバ200および配信サーバ300と接続することも可能である。
<デジタルカメラ100の構成>
まず通信装置の一例であるデジタルカメラ100について説明する。図2は、本実施形態におけるデジタルカメラ100の構成例を示すブロック図である。なお、ここでは通信装置の一例としてデジタルカメラについて述べるが、通信装置はこれに限られない。例えば通信装置は、いわゆるスマートフォンや、タブレットデバイス、デジタルビデオカメラ、パーソナルコンピュータなどの情報処理装置であってもよい。本実施形態では特に、ユーザが携帯できるデジタルカメラ100を例に説明する。本実施形態において、デジタルカメラ100はライブ配信サービスを利用するための機能を有している。ライブ配信については後述する。
制御部101は、入力された信号や、後述のプログラムに従ってデジタルカメラ100の各部を制御する。なお、制御部101が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
撮像部102は、例えば、光学レンズユニットと絞り・ズーム・フォーカスなど制御する光学系と、光学レンズユニットを経て導入された光(映像)を電気的な映像信号に変換するための撮像素子などで構成される。撮像素子としては、一般的には、CMOS(Complementary Metal Oxide Semiconductor)や、CCD(Charge Coupled Device)が利用される。撮像部102は、制御部101に制御されることにより、撮像部102に含まれるレンズで結像された被写体光を、撮像素子により電気信号に変換し、ノイズ低減処理などを行いデジタルデータを画像データとして出力する。本実施形態では、当該画像データを撮像し出力するための一連の処理を「撮影」という。また、撮像部102は連続して撮影した画像データを1つのデータとして記録することで動画データを生成できる。本実施形態のデジタルカメラ100では、画像データおよび動画データは、DCF(Design Rule for Camera File system)の規格に従って、記録媒体110に記録される。また、ライブ配信において配信するための画像データおよび動画データは、作業用メモリ104に一時的に記録される。
不揮発性メモリ103は、電気的に消去・記録可能な不揮発性のメモリであり、制御部101で実行される後述のプログラム等が格納される。
作業用メモリ104は、撮像部102で撮影された画像データおよび動画データを一時的に保持するバッファメモリや、表示部106の画像表示用メモリ、制御部101の作業領域等として使用される。
操作部105は、ユーザがデジタルカメラ100に対する指示をユーザから受け付けるために用いられる。操作部105は例えば、ユーザがデジタルカメラ100の電源のオン/オフを指示するための電源ボタンや、撮影を指示するためのレリーズスイッチ、画像データの再生を指示するための再生ボタンを含む。さらに、後述の接続部111を介して外部機器との通信を開始するための専用の接続ボタンなどの操作部材を含む。また、後述する表示部106に形成されるタッチパネルも操作部105に含まれる。なお、レリーズスイッチは、SW1およびSW2を有する。レリーズスイッチが、いわゆる半押し状態となることにより、SW1がオンとなる。これにより、AF(オートフォーカス)処理、AE(自動露出)処理、AWB(オートホワイトバランス)処理、EF(フラッシュプリ発光)処理等の撮影準備を行うための指示を受け付ける。また、レリーズスイッチが、いわゆる全押し状態となることにより、SW2がオンとなる。これにより、撮影を行うための指示を受け付ける。
表示部106は、撮影の際のビューファインダー画像の表示、撮影した画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部106は必ずしもデジタルカメラ100が内蔵する必要はない。デジタルカメラ100は内部または外部の表示部106と接続することができ、表示部106の表示を制御する表示制御機能を少なくとも有していればよい。また、制御部101は、作業用メモリ104に蓄積された画像データまたは動画データを表示部106に逐次転送して表示することで、表示部106は電子ビューファインダとして機能する。これによってデジタルカメラ100はスルー画像表示(ライブビュー表示)を実行することができる。
マイク107は、音や音声等の音波をデジタルカメラ100に入力するために用いられる。マイク107は音や音声を電気信号に変換してデジタルカメラ100に入力する。制御部101は入力された電気信号から音声データを生成する。制御部101はこの音声データと撮像部102が撮影した動画データとを同期させて記録する。本実施形態において、ライブ配信に送信するための音声データは作業用メモリ104に記録される。なお、マイク107はデジタルカメラ100に着脱可能なよう構成してもよいし、デジタルカメラ100に内蔵されていてもよい。すなわち、デジタルカメラ100は少なくともマイク107から電気信号を受け取るための手段を有していればよい。
記録媒体110は、撮像部102から出力された画像データおよび動画データを記録することができる。記録媒体110は、デジタルカメラ100に着脱可能なよう構成してもよいし、デジタルカメラ100に内蔵されていてもよい。すなわち、デジタルカメラ100は少なくとも記録媒体110にアクセスする手段を有していればよい。
接続部111は、情報処理装置および外部装置と接続するためのインターフェースである。制御部101は、接続部111を制御することで情報処理装置および外部装置との通信を実現する。本実施形態のデジタルカメラ100は、接続部111を介して、後述する中継サーバ200および配信サーバ300とデータのやりとりを行うことができる。例えば、デジタルカメラ100は撮像部102で生成した動画データおよびマイク107で生成した音声データを、接続部111を介して配信サーバ300に送信することができる。なお、本実施形態では、接続部111はIEEE802.11の規格に従った、いわゆる無線LAN(Local Area Network)で通信するためのインターフェースを含む。本実施形態におけるデジタルカメラ100の接続部111は、インフラストラクチャモードにおけるクライアントとして動作するクライアントモードを有している。そして、接続部111をクライアントモードで動作させることにより、本実施形態におけるデジタルカメラ100は、インフラストラクチャモードにおけるクライアント機器として動作することが可能である。デジタルカメラ100がクライアント機器として動作する場合、周辺のアクセスポイント機器に接続することで、アクセスポイント機器が形成するLANにジョインすることが可能である。なお、通信方式は無線LANに限定されるものではなく、例えば4GやLTEなどの公衆無線通信方式や、Ethernet等の規格に従った有線通信方式を含む。
以上、通信装置の一例であるデジタルカメラ100について説明した。
<中継サーバ200の構成>
次に、情報処理装置の一例である中継サーバ200について説明する。図3は、本実施形態における中継サーバ200の構成例を示すブロック図である。なお、ここでは情報処理装置の一例としてサーバを例に挙げて説明するが、情報処理装置はこれに限らない。情報処理装置は、デジタルカメラ100と配信サーバ300との通信を中継し、配信サーバ300の通信プロトコルの変更に対応できる機能を有していればよい。情報処理装置は、例えば、スマートフォン、タブレットデバイス、およびパーソナルコンピュータ等である。
制御部201は、入力された信号や、後述のプログラムに従って中継サーバ200の各部を制御する。なお、制御部201が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
不揮発性メモリ203は、電気的に消去・記録可能な不揮発性のメモリである。不揮発性メモリ203には、制御部201が実行する基本的なソフトウェアであるOS(オペレーティングシステム)や、このOSと協働して応用的な機能を実現するアプリケーションが記録されている。また、本実施形態では、不揮発性メモリ203には、デジタルカメラ100および配信サーバ300と通信するためのアプリケーションが格納されている。さらに、不揮発性メモリ203には後述するデータベースが記録される。
作業用メモリ204は、揮発性メモリである。作業用メモリ204は、制御部201のワーク領域、エラー処理時のデータの退避領域等として使用される。
操作部205は、中継サーバ200に対する指示をユーザから受け付けるために用いられる。操作部205は例えば、ユーザが中継サーバ200の電源のオン/オフを指示するための電源ボタンや、キーボードやマウス等の入力装置等を含む。また、後述する表示部206に形成されるタッチパネルも操作部205に含まれる。なお、操作部205は必ずしも中継サーバ200が内蔵する必要はない。中継サーバ200は内部または外部の操作部205と接続することができる。
表示部206は、対話的な操作のための文字表示などを行う。表示部206は例えば、液晶ディスプレイや有機ELディスプレイ等である。なお、表示部206は必ずしも中継サーバ200が内蔵する必要はない。中継サーバ200は内部または外部の表示部206と接続することができ、表示部206の表示を制御する表示制御機能を少なくとも有していればよい。
外部記録装置210は、外部記録媒体に対して読み出しおよび書き込みを行う装置である。プログラムや画像データが外部記録媒体に記録されている場合、これらは外部記録装置210を介して作業用メモリ204に読み込まれる。外部記録媒体は、例えば、DVD−RW、CD−ROM、CD−R、DVD−RAMなどの光ディスクや、フレキシブルディスク、MOなどの磁気ディスク、着脱可能なフラッシュメモリ等の中継サーバ200に着脱可能な不揮発性メモリである。
接続部211は、通信装置および外部装置と接続するためのインターフェースである。本実施形態の中継サーバ200は、接続部211を介して、通信装置および外部装置とデータのやりとりを行うことができる。
以上、中継サーバ200について説明した。
<ライブ配信の説明>
ここで、ライブ配信について説明する。ライブ配信は、ストリーミング技術によって配信者(ユーザ)がインターネットを介してリアルタイムに動画データや音声データ等を視聴者(他のユーザ)へ配信することである。視聴者はこの動画データや音声データ等を、テレビ放送やラジオ放送の生放送のように、インターネットを介してリアルタイムに視聴できる。このようなクラウドサービスをライブ配信サービスという。ライブ配信サービスが提供する配信サーバ300は配信者と視聴者とを仲介する。例えばデジタルカメラ100は撮影している動画データを配信サーバ300へリアルタイムに送信する。配信サーバ300は受信した動画データをWebページ等で視聴者がリアルタイムに視聴できるようにサービスを提供する。以降、ライブ配信において視聴者へ配信するための動画データ、音声データおよびテキストデータ等のコンテンツを総称して配信データという。本実施形態では、デジタルカメラ100は動画データおよび音声データの少なくとも一方のコンテンツを送信する。
ユーザはライブ配信を開始する前に、パソコンやスマートフォン等を用いてイベントを配信サーバ300上に作成する。イベントは、例えばライブ配信の識別子、送信URL、ストリームキー、ライブ配信のタイトル、ライブ配信の開始時間、および動画データのビットレート等のライブ配信に関する設定を含むデータである。送信URLは、例えば配信データの送信先となる配信サーバ300のIPアドレスやURLである。ユーザはこのイベントを配信サーバに複数作成することができる。また、デジタルカメラ100がイベントを作成することもできる。また、配信サーバ300はユーザのイベントを設定する手間を省くためにデフォルトのイベントを有してもよい。本実施形態において配信サーバ300はデジタルカメラ100によって要求されたイベントを中継サーバ200を介してデジタルカメラ100へ送信する。なお、中継サーバ200はそのイベントからデジタルカメラ100がライブ配信に必要な情報を選択してデジタルカメラ100へ送信してもよい。
次にライブ配信サービスにおける通信において用いられる通信プロトコルについて説明する。一般的に、配信データの送受信に利用する通信プロトコルと、配信データ以外のデータの送受信に利用する通信プロトコルは異なる。ライブ配信において配信データの送受信に利用する通信プロトコルはストリーミングによる通信を目的とした通信プロトコルが用いられる。例えば、この通信プロトコルはRTMP(Real―Time Messaging Protocol)やDASH(Dynamic Adaptive Streaming over HTTP)等のストリーミング用の通信プロトコルである。DASHはMPEG−DASHとも呼ばれている。これらの配信データの送受信に利用する通信プロトコルは、ライブ配信サービスごとに異なることがある。
また、配信データ以外のデータの送受信に利用する通信プロトコルは汎用的な通信プロトコルがよく用いられる。これは一般的に、ストリーミングによる通信を目的とした通信プロトコルよりも汎用的な通信プロトコルの方が、データの用途に応じたインターフェースの実装が容易であるという理由等がある。例えば、汎用的な通信プロトコルはHTTP(Hypertext Transfer Protocol)である。本実施形態では各装置は配信データの送受信には前者のストリーミングによる通信を目的とした通信プロトコルを利用する。また本実施形態では、各装置は配信データ以外のデータの送受信には後者の汎用的な通信プロトコルであるHTTPを利用する。
<中継サーバ200のデータベースの構成>
図4(A)〜(C)を用いて、デジタルカメラ100が利用する通信プロトコルおよび配信サーバ300が利用する通信プロトコルを中継サーバ200がそれぞれ管理する方法を説明する。本実施形態において、デジタルカメラ100が利用する通信プロトコルおよび配信サーバ300が利用する通信プロトコルを中継サーバ200はデータベースを用いて管理する。
図4(A)は第一の実施形態におけるデジタルカメラが利用する通信プロトコルを管理するためのデータベースのテーブルの一例である。このデータベースは中継サーバ200の不揮発性メモリ203に記録される。このデータベースには、デジタルカメラの識別子、およびそのデジタルカメラが利用する通信プロトコルが記録される。例えばレコード4101およびレコード4102に示すように、識別子がDC−AであるデジタルカメラはRTMPおよびMPEG−DASHの通信プロトコルに準拠して通信できる。また、例えばレコード4103に示すように、識別子がDC−BであるデジタルカメラはRTMPの通信プロトコルに準拠して通信する。このように中継サーバ200はデジタルカメラごとにそのデジタルカメラが利用する通信プロトコルに関する情報をデータベースに格納する。本実施形態において中継サーバ200はデジタルカメラと接続を確立する度に、その接続を確立したデジタルカメラに関する情報を更新する。これにより中継サーバ200は接続したことのあるデジタルカメラの最新の情報を記録しておくことができる。また、中継サーバ200は通信プロトコルに関する情報をデジタルカメラの他の情報と一緒に記録していてもよい。例えばデジタルカメラの他の情報はバージョン情報や機種名等である。
図4(B)は第一の実施形態におけるクラウドサービスが利用する通信プロトコルを管理するためのデータベースのテーブルの一例である。このデータベースは中継サーバ200の不揮発性メモリ203に記録される。このデータベースには、クラウドサービスの名称、およびそのクラウドサービスを利用するための通信プロトコルが記録される。本実施形態においてクラウドサービスはライブ配信サービスを提供しているサービスである。レコード4201およびレコード4202に示すように、名称がServiceAのクラウドサービスはRTMPおよびMPEG−DASHの通信プロトコルに準拠して通信できる。またレコード4203に示すように、名称がServiceBのクラウドサービスはMPEG−DASHの通信プロトコルに準拠して通信する。本実施形態において中継サーバ200はクラウドサービスと接続を確立する度にこの情報を更新する。これにより中継サーバ200は接続したことのあるクラウドサービスの通信プロトコルに関する最新の情報を記録することができる。また、中継サーバ200は通信プロトコルに関する情報をそのクラウドサービスに関する他の情報と一緒に記録していてもよい。例えばクラウドサービスに関する他の情報はユーザの登録情報やアクセストークン等である。
図4(C)は第一の実施形態において、配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用できない場合、中継サーバ200が生成するデータベースのテーブルの一例である。このデータベースは中継サーバ200の不揮発性メモリ203に記録される。このデータベースには、中継サーバ200がデジタルカメラ100からデータを受信するための通信プロトコルおよびURL、中継サーバ200から配信サーバ300へデータを送信するための通信プロトコルおよびURLが記録される。以下、中継サーバ200がデジタルカメラ100からデータを受信するための通信プロトコルを受信プロトコル、およびデジタルカメラ100からデータを受信するためのURLを中継URLという。また、中継サーバ200が配信サーバ300へデータを送信するための通信プロトコルを送信プロトコル、および配信サーバ300へデータを送信するためのURLを送信URLという。例えばレコード4301には、受信プロトコルがRTMP、送信プロトコルがMPEG−DASHである場合における中継URLおよび送信URLが記録されている。ここで、中継サーバ200は中継URLを送信URLごとに生成する。また、中継サーバ200はこの中継URLを他の中継URLと異なるように生成する。例えば以下の中継URLに示すように、図4(C)のレコード4301では、中継サーバ200は中継URLをデジタルカメラ100の識別子(DC−B)、レコード番号(4103)および生成された順番を表す番号(No1)を組み合わせて生成する。なお、本実施形態において192.168.1.1は中継サーバ200のIPアドレスであり、172.16.1.1は配信サーバ300のIPアドレスであるとする。また、中継URLおよび送信URLにおけるIPアドレスの部分はドメイン名でもよい。
rtmp://192.168.1.1/DC−B/4103/No1
配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用できない場合、このデータベースに基づいて、中継サーバ200はデジタルカメラ100から配信データを受信プロトコルに従って受信する。中継サーバ200は受信したデータを、送信プロトコルに従ってクラウドサービスへ送信する。ここで、それぞれの通信プロトコルによってパケットやデータ等の構成の規定が異なるため、中継サーバ200は受信した配信データに対して、プロトコル変換およびトランスコード等の配信データを変換するための処理を実行する。これにより、デジタルカメラ100はクラウドサービスが利用する通信プロトコルを利用できなくとも、中継サーバ200を介して配信サーバ300へ配信データを送信できる。なお、データを受信するためのURLは中継サーバ200を示すURLではなく、プロトコル変換およびトランスコード等のデータを変換するための情報処理装置を示すURLでもよい。
なお、図4(D)については後述する。
<デジタルカメラ100および配信サーバ300の登録>
中継サーバ200がデジタルカメラ100および配信サーバ300をデータベースに登録(記録)する処理について説明する。この準備処理において、デジタルカメラ100、中継サーバ200、および配信サーバ300はHTTPに準拠して通信する。
まず中継サーバ200がデジタルカメラ100をデータベースに登録する処理について説明する。図5(A)は本実施形態における中継サーバ200がデジタルカメラ100をデータベースに登録する処理の一例を示すシーケンス図である。
ステップS501において、ユーザはデジタルカメラ100が中継サーバ200にアクセスするための登録情報(以下、登録情報Aという)をデジタルカメラ100に入力する。例えばユーザはこの登録情報Aを表示部106に表示されたキーボードをタッチパネルをタッチ操作することで入力する。登録情報Aは、ユーザが中継サーバ200に登録されていることを証明するための情報である。例えば、登録情報Aは中継サーバ200にアクセスするためのアカウントIDとパスワードである。
ステップS502において、デジタルカメラ100は中継サーバ200と接続を確立する。ここで、デジタルカメラ100はステップS501において入力された登録情報Aを用いて中継サーバ200にアクセスする。
ステップS503において、中継サーバ200はライブ配信する際の通信に利用できる通信プロトコルの情報をデジタルカメラ100に要求する。
ステップS504において、デジタルカメラ100は中継サーバ200から要求された情報を送信する。
ステップS505において、中継サーバ200はステップS504において受信した情報とデジタルカメラ100の識別子とをデータベースに記録する。デジタルカメラ100の識別子は本ステップにおいて中継サーバ200が生成する。これにより中継サーバ200はデジタルカメラ100が利用できる通信プロトコルを図4(A)に示すようなデータベースに記録できる。
以上、中継サーバ200がデジタルカメラ100をデータベースに登録する処理について説明した。なお、ステップS501において、ユーザは登録情報をデジタルカメラ100を介して中継サーバ200に送信しているが、他の方法でもよい。例えば、ユーザは他のパソコン等の情報処理装置から中継サーバ200に登録情報を送信すればよい。
また、図4(A)に示したデータベースにデジタルカメラ100に関する情報をさらに登録する場合、ステップS503において中継サーバ200はその情報をさらにデジタルカメラ100に要求する。そしてステップS504において、デジタルカメラ100はステップS503において中継サーバ200から要求された情報を中継サーバ200へ送信する。このようにすることで中継サーバ200は図4(A)に示したデータベースにさらにデジタルカメラ100の情報を登録できる。
次に中継サーバ200が配信サーバ300をデータベースに登録する処理について説明する。図5(B)は本実施形態における中継サーバ200が配信サーバ300をデータベースに登録する処理の一例を示すシーケンス図である。
ステップS551において、ユーザは中継サーバ200が配信サーバ300にアクセスするための登録情報(以下、登録情報Bという)を中継サーバ200に入力する。例えば、ユーザは登録情報Bをパソコンやスマートフォン等の情報処理装置またはデジタルカメラ100を介して中継サーバ200に入力する。この登録情報Bは、ユーザが配信サーバ300に登録されていることを証明するための情報である。例えば、この登録情報Bは配信サーバ300にアクセスするためのアカウントIDとパスワードである。
ステップS552において、中継サーバ200は配信サーバ300に認証情報を要求する。本実施形態では、ステップS551において受信した登録情報Bを用いて、中継サーバ200は配信サーバ300に認証情報を要求する。この認証情報は、例えばアクセストークンである。この認証情報はデジタルカメラ100のデータベースと関連付けて記録される。
ステップS553において、中継サーバ200は配信サーバ300から認証情報を受信する。この認証情報を利用することで中継サーバ200は配信サーバ300にアクセスすることができる。
ステップS554において、中継サーバ200はライブ配信する際の通信に利用する通信プロトコルの情報を配信サーバ300に要求する。この通信プロトコルの情報は、例えば、配信サーバ300が利用する通信プロトコルを示す情報である。
ステップS555において、配信サーバ300は中継サーバ200から要求された情報を中継サーバ200に送信する。
ステップS556において、中継サーバ200はステップS555において受信した通信プロトコルの情報と配信サーバ300(クラウドサービス名)とをデータベースに記録する。これにより中継サーバ200は配信サーバ300が利用する通信プロトコルを図4(B)に示すようなデータベースに記録できる。
また、図4(B)に示したデータベースに配信サーバ300に関する情報をさらに登録する場合、ステップS552において中継サーバ200はその情報をさらに配信サーバ300に要求する。そしてステップS553において、配信サーバ300はステップS552において中継サーバ200から要求された情報を中継サーバ200へ送信する。このようにすることで中継サーバ200は図4(B)に示したデータベースにさらに配信サーバ300の情報を登録できる。
以上、中継サーバ200が配信サーバ300をデータベースに登録する処理について説明した。
なお、中継サーバ200が配信サーバ300からライブ配信する際の通信に利用する通信プロトコルの情報を受信できない場合、中継サーバ200の管理者やユーザ等が配信サーバ300が利用する通信プロトコルを中継サーバ200に入力する。
なお、中継サーバ200は認証情報をデジタルカメラ100から受信してもよい。この場合、中継サーバ200はステップS552およびステップS553の処理を実行しない。
<ライブ配信処理>
図6および図7は本実施形態におけるライブ配信処理の一例のシーケンスを示す図である。図6はデジタルカメラ100が配信サーバ300へ直接配信データを送信する場合のライブ配信処理の一例を示すシーケンス図である。図7はデジタルカメラ100が配信サーバ300へ中継サーバ200を介して配信データを送信する場合のライブ配信処理の一例を示すシーケンス図である。図8(A)〜(C)は本実施形態におけるデジタルカメラ100が表示する画面の一例である。図8(A)〜(C)の画面は例えば表示部106に表示される。先に図6および図8(A)〜(C)を用いて、デジタルカメラ100が配信サーバ300へ直接配信データを送信する場合のライブ配信処理について説明する。まずデジタルカメラ100がイベントを配信サーバ300から中継サーバ200を介して受信する処理について説明する。
ステップS601において、ユーザがデジタルカメラ100を操作して、ライブ配信を開始するための指示を入力する。図8(A)は本実施形態におけるライブ配信処理を開始するための画面の一例である。例えばユーザがタッチパネルをタッチ操作し釦802を選択することによって、デジタルカメラ100はライブ配信処理を開始する。なお、ユーザがタッチパネルをタッチ操作して釦801を選択した場合、デジタルカメラ100は、中継サーバ200にデジタルカメラ100を登録するための処理を開始する。この処理は図5(A)を用いて説明した処理である。
ステップS602において、デジタルカメラ100はイベントを中継サーバ200に要求する。
ステップS603において、中継サーバ200は、デジタルカメラ100から要求されたイベントを配信サーバ300に要求する。ここで中継サーバ200は配信サーバ300に情報を要求する場合、デジタルカメラ100と関連付けて記録している認証情報を利用する。
ステップS604において、ステップS603において受信した要求に対する応答として、配信サーバ300はイベントを、中継サーバ200へ送信する。例えば配信サーバ300はデフォルトのイベントを中継サーバ200へ送信する。また本ステップにおいて、配信サーバ300は配信データを受け付ける状態になる。
ステップS605において、中継サーバ200は配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力があるか否かを判断する。本シーケンスでは配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力があると中継サーバ200は判断する。
ステップS606において、ステップS605の処理に基づいて中継サーバ200は、ステップS604において受信したデータ(イベント)をデジタルカメラ100へ送信する。本ステップにおいて、中継サーバ200はステップS604において受信したイベントに含まれる送信URLを配信データの送信先として、デジタルカメラ100へ送信する。
ステップS607において、配信データを配信サーバ300に送信する前に、デジタルカメラ100は待機画面を表示する。図8(B)は本実施形態におけるデジタルカメラ100のライブ配信を開始する前の待機画面の一例である。図8(B)に示すように、デジタルカメラ100は表示部106にスルー画像を表示する。ユーザはこのスルー画像を参照しながら画角等を調整し、ライブ配信の準備をすることができる。
ここまでの処理によりデジタルカメラ100は中継サーバ200を介して配信サーバ300からイベントを受信した。デジタルカメラ100はこのデータに基づいて配信サーバ300へ直接ライブ配信する。このライブ配信するための処理をこれから説明する。
ステップS608において、ユーザはデジタルカメラ100を操作し、配信データの送信を開始するための指示を入力する。例えば図8(B)に示す画面において、ユーザがタッチパネルをタッチ操作して、釦803を選択することによりライブ配信処理を開始するための指示を入力する。デジタルカメラ100は本ステップ以降に撮影した動画データおよび本ステップ以降に生成した音声データを配信データとして配信サーバ300へ送信する。
ステップS609において、デジタルカメラ100はステップS606おいて受信したデータを利用して配信データを配信サーバ300へ送信する。ここで、配信データは中継サーバ200を介することなく配信サーバ300へ送信される。デジタルカメラ100は本ステップの処理を繰り返す。このようにデジタルカメラ100は配信データを継続的に送信することで、配信サーバ300を介してライブ配信できる。ここで、配信サーバ300は受信した配信データを視聴者であるユーザに送信(配信)している。ここで、図8(C)は本実施形態におけるデジタルカメラ100のライブ配信中における画面の一例である。図8(C)に示すように、本ステップにおいてデジタルカメラ100はライブ配信中であることを表示部106の左上に「●Live」と表示することでユーザに示している。また、ライブ配信中において、デジタルカメラ100は配信サーバ300から受信したライブ配信に関する情報を表示部106に表示する。例えば、図8(C)に示すように、デジタルカメラ100は表示項目804に視聴者数を表示することで、現在ライブ配信を視聴しているユーザの人数を示すことができる。他にもライブ配信の状態に関する情報は、例えば配信サーバ300との通信状況、ライブ配信の評価に関する数値、およびライブ配信中に視聴者から受信したコメント等がある。デジタルカメラ100はこのライブ配信に関する情報をライブ配信中に適宜配信サーバ300から受信する。
以上の処理を実行することで、デジタルカメラ100はライブ配信する。ユーザは任意のタイミングでデジタルカメラ100を操作することでこのライブ配信処理を終了することができる。これからライブ配信を終了する処理について説明する。
ステップS610において、ユーザはデジタルカメラ100を操作して、ライブ配信を終了するための指示を入力する。例えば、図8(C)に示す画面において、ユーザがタッチパネルをタッチ操作して、釦805を選択することによりライブ配信を終了するための指示を入力する。
ステップS611において、デジタルカメラ100は動画データの記録および送信を終了する。
ステップS612において、デジタルカメラ100はライブ配信を終了するための要求を中継サーバ200に送信する。
ステップS613において、中継サーバ200は、ステップS612において受信した要求に基づいて、配信サーバ300にライブ配信を終了するよう要求する。
ステップS614において、ステップS613において受信した要求に対する応答として、配信サーバ300はライブ配信を終了したことを示す通知を中継サーバ200へ送信する。
ステップS615において、中継サーバ200は、ステップS614において受信した通知に基づいて、ライブ配信を終了したこと示す通知をデジタルカメラ100へ送信する。以上の処理によりデジタルカメラ100はライブ配信を終了することができる。
このように、配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がある場合、デジタルカメラ100は配信データを配信サーバ300へ直接送信する。以上、デジタルカメラ100が配信サーバ300へ直接配信データを送信する場合のライブ配信処理について説明するについて説明した。
次に図7を用いて、デジタルカメラ100が配信サーバ300へ中継サーバ200を介して配信データを送信する場合のライブ配信処理について説明する。まずデジタルカメラ100がイベントを配信サーバ300から中継サーバ200を介して受信する処理について説明する。
ステップS701からステップS704はそれぞれ図6のステップS601からステップS604と同様であるため説明を省略する。
ステップS705において、中継サーバ200は配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力があるか否かを判断する。本シーケンスではデジタルカメラ100は配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がないと判断する。
ステップS706において、ステップS705の処理に基づいて中継サーバ200は、ステップS604において受信したデータをデジタルカメラ100へ送信する。ただし、本ステップにおいて、中継サーバ200は中継URLを配信データの送信先として、デジタルカメラ100へ送信する。この中継URLは本ステップにおいて中継サーバ200が生成する。
ここまでの処理によりデジタルカメラ100は中継サーバ200を介して配信サーバ300からイベントを受信した。デジタルカメラ100はこのデータに基づいて中継サーバ200を介してライブ配信する。このライブ配信するための処理をこれから説明する。
ステップS707およびステップS708はそれぞれ図6のステップS607およびステップS608と同様であるため説明を省略する。
ステップS709において、デジタルカメラ100はステップS706おいて受信したデータを利用して配信データを送信する。ここで、デジタルカメラ100はステップS706において配信データの送信先として中継URLを受信したので、配信データは中継サーバ200に送信される。
ステップS710において、中継サーバ200は受信した配信データに対してプロトコル変換およびトランスコード等の処理を実行する。これにより中継サーバ200は配信サーバ300が利用する通信プロトコルに従って受信した配信データを配信サーバ300へ送信できるようになる。
ステップS711において、中継サーバ200はステップS710において変換した配信データを配信サーバ300へ送信する。
デジタルカメラ100および中継サーバ200はステップS709〜ステップS711の処理を繰り返す。これにより、デジタルカメラ100は配信サーバ300が利用する通信プロトコルを利用する能力がなくとも、配信サーバ300を介してライブ配信できる。ここで、デジタルカメラ100は図6のステップS609と同様に画面を表示する。以上の処理を実行することで、デジタルカメラ100はライブ配信する。
ステップS712からステップS717の処理は、それぞれ図6のステップS611からステップS615と同様であるため説明を省略する。この一連の処理はライブ配信を終了する処理である。
このように、配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がない場合、デジタルカメラ100は配信データを中継サーバ200を介して配信サーバ300へ送信する。以上、デジタルカメラ100が配信サーバ300へ中継サーバ200を介して配信データを送信する場合のライブ配信処理について説明した。
なお、図6のステップS602および図7のステップS702において、デジタルカメラ100は中継サーバ200へ認証情報やライブ配信に利用する通信プロトコルの一覧を送信してもよい。この場合、中継サーバ200は図6のステップS605および図7のステップS705において、デジタルカメラ100の通信プロトコルはこの通信プロトコルを利用する能力があるとして判断する。
なお、図6のステップS604および図7のステップS704において、配信サーバ300は中継サーバ200に、ライブ配信に利用する通信プロトコルを通知してもよい。この場合、図6のステップS605および図7のステップS705において、中継サーバ200はその通信プロトコルをデジタルカメラ100が利用する能力があるか否かを判断する。
なお、中継サーバ200は中継URLを本処理の開始前にあらかじめ生成し、データベースに記録していてもよい。この場合、ステップS706において、中継サーバ200は中継URLを新たに生成せず、データベースから中継URLを読み込む。
<デジタルカメラ100の動作>
図8(A)〜(C)および図9を用いてデジタルカメラ100の処理について説明する。図8(A)〜(C)は本実施形態におけるデジタルカメラ100の表示画面の一例である。図9は、本実施形態のライブ配信処理におけるデジタルカメラ100の動作の一例を示すフローチャートである。このデジタルカメラ100の処理は、不揮発性メモリ103に記録されたソフトウェアを作業用メモリ104に展開して制御部101が実行することで実現する。またこの処理は、ユーザによるライブ配信を開始する指示を制御部101が受け付けたことをトリガに開始される。例えば図8(A)に示す画面において、ユーザがタッチパネルをタッチ操作しての釦802を選択したことをトリガに、制御部101は本フローチャートの処理を開始する。これは図6のステップS601および図7のステップS701に対応する。
ステップS901において、制御部101は接続部111を介してイベントを要求するパケットを中継サーバ200へ送信する。本ステップは、図6のステップS602および図7のステップS702に対応する。
ステップS902において、接続部111を介して中継サーバ200からイベントを受信したか否かを制御部101は判断する。イベントを受信した場合、制御部101はその情報を作業用メモリ104に保持し、ステップS703に遷移する。制御部101はイベントを受信するまで本処理を繰り返す。このイベントには送信URLまたは中継URLが含まれる。なお、制御部101は受信したURLが送信URLか中継URLかを判断しない。本ステップは、図6のステップS606および図7のステップS706に対応する。
ステップS903において、制御部101は待機画面を表示する。例えば制御部101は表示部106に図8(B)に示すような画面を表示する。図8(B)は本実施形態におけるデジタルカメラ100のライブ配信を開始する前の待機画面の一例である。図8(B)の釦803はライブ配信の開始を受け付けるためのアイテムである。本ステップは図6のステップS607および図7のステップS707に対応する。
ステップS904において、制御部101は配信データの送信を開始する指示を受け付けたか否かを判断する。例えば、制御部101はユーザのタッチパネルへのタッチ操作によって図8(B)の釦803が選択されたことを検知した場合、ステップS905に遷移する。制御部101はユーザから配信データの送信を開始する指示を受け付けるまで本処理を繰り返す。本ステップは図6のステップS608および図7のステップS708に対応する。ここで、ステップS905以降に撮影された動画データおよびステップS905以降に生成された音声データを制御部101は配信データとする。
ステップS905において、制御部101はステップS902において受信したイベントに基づいて、接続部111を介して配信データを送信する。制御部101はユーザからライブ配信を終了する指示を受け付けるまで、配信データの送信を継続する。ここで、制御部101は配信データを作業用メモリ104に保持し、所定量以上の配信データが作業用メモリ104に格納された場合、接続部111を介して配信データを送信する。ここで、図8(C)に示すように、制御部101はライブ配信中であることを表示部106の左上に「●Live」と表示することでユーザに示す。本ステップは図6のステップS609および図7のステップS709に対応する。
ステップS906において、制御部101はユーザからライブ配信の終了の指示を受け付けたか否かを判断する。ライブ配信の終了の指示を受け付けた場合、制御部101はステップS907に遷移する。ライブ配信の終了の指示を受け付けていない場合、制御部101はステップS905に戻り、ライブ配信を継続する。制御部101は、例えば、図8(C)に示す釦805を、ユーザがタッチパネルをタッチ操作によって選択したことを検知することでライブ配信の終了の指示を受け付ける。本ステップは、図6のステップS610および図7のステップS712に対応する。
ステップS907において、制御部101は配信データの送信を終了する。本ステップは、図6のステップS611および図7のステップS713に対応する。
ステップS908において、制御部101は中継サーバ200へライブ配信の処理を終了するよう要求する。本ステップは図6のステップS612および図7のステップS714に対応する。
ステップS909において、制御部101は中継サーバ200からライブ配信の処理を終了したことを示す通知を受信し、処理を終了する。なお、所定時間が経過してもこの通知を受信できない場合、制御部101は再度ステップS908の処理を実行する。本ステップは図6のステップS615および図7のステップS717に対応する。
以上、デジタルカメラ100の動作について説明した。
<中継サーバ200の動作>
図10は本実施形態における中継サーバ200の動作の一例を示すフローチャートである。中継サーバ200はデジタルカメラ100と接続した場合、本処理を開始する。この中継サーバ200の処理は、不揮発性メモリ203に記録されたソフトウェアを作業用メモリ204に展開して制御部201が実行することで実現する。
ステップS1001において、制御部201はイベントを要求するパケットを受信したか否かを判断する。この要求パケットを受信した場合、制御部201はステップS1002に遷移する。制御部201はこの要求パケットを受信するまで本ステップの処理を繰り返す。なお、所定時間経過しても要求パケットを受信しなかった場合、制御部201は処理を終了してもよい。本ステップは図6のステップS602および図7のステップS702に対応する。
ステップS1002において、制御部201は接続部211を介して、イベントを要求するパケットを配信サーバ300へ送信する。ここで制御部201は認証情報を用いて配信サーバ300に要求する。本ステップは図6のステップS603および図7のステップS703に対応する。
ステップS1003において、制御部201は接続部211を介して、配信サーバ300からイベントを受信したか否かを判断する。イベントを受信した場合、制御部201はステップS1004に遷移する。制御部201はイベントを受信するまで本ステップの処理を繰り返す。ただし、所定時間経過してもイベントを受信できない場合、制御部201はデジタルカメラ100へイベントを要求してもよい。本ステップは図6のステップS604および図7のステップS704に対応する。
ステップS1004において、制御部201は配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力があるか否かを判断する。例えばここで、制御部201は図4(A)、(B)において説明したようなデータベースを参照して判断する。配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がある場合、制御部201はステップS1005に遷移する。配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がない場合、制御部201はステップS1007に遷移する。本ステップは図6のステップS605および図7のステップS705に対応する。
このように中継サーバ200がデジタルカメラ100および配信サーバ300の通信プロトコルについて判断することで、デジタルカメラ100は配信サーバ300が利用する通信プロトコルについて判断する処理を実行する必要がなくなる。まず、配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がある場合について説明する。
ステップS1005において、制御部201はイベントをデジタルカメラ100へ送信する。ここで、イベントは送信URLを含む。本ステップは図6のステップS606に対応する。
ステップS1006において、制御部201はデジタルカメラ100からライブ配信を終了することを要求するパケットを受信したか否かを判断する。制御部201はこの要求パケットを受信するまで本ステップの処理を繰り返す。この要求パケットを受信した場合、制御部201はステップS1012に遷移する。本ステップは、図6のステップS612に対応する。次に、配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がない場合について説明する。
ステップS1007において、制御部201はイベントをデジタルカメラ100へ送信する。ここで、制御部201はイベントに含まれる送信URLを中継URLに置き換える。本ステップは図7のステップS706に対応する。
ステップS1008において、制御部201はデジタルカメラ100から配信データを受信した否かを判断する。制御部201は配信データを受信するまで本ステップの処理を繰り返す。なお、制御部201は所定時間経過しても配信データを受信できなかった場合、デジタルカメラ100へエラーを示すパケットを送信する。本ステップは図7のステップS709に対応する。
ステップS1009において、制御部201はステップS1008において受信した配信データに対してプロトコル変換およびトランスコード等の処理を実行する。本ステップは図7のステップS710に対応する。
ステップS1010において、制御部201はステップS1009において変換した配信データを配信サーバ300へ送信する。本ステップは図7のステップS711に対応する。
ステップS1011において、制御部201はデジタルカメラ100からライブ配信を終了することを要求するパケットを受信したか否かを判断する。制御部201はこの要求パケットを受信するまでステップS1008からステップS1010までの処理を繰り返す。この要求パケットを受信した場合、制御部201はステップS1012に遷移する。本ステップは図7のステップS714に対応する。
ステップS1012において、制御部201はライブ配信を終了することを要求するパケットを配信サーバ300へ送信する。本ステップは図7のステップS715に対応する。
ステップS1013において、制御部201は配信サーバ300からライブ配信を終了したことを示す通知を受信する。本ステップは図7のステップS716に対応する。
ステップS1014において、制御部201はライブ配信を終了したことを示す通知をデジタルカメラ100へ送信する。本ステップは図7のステップS717に対応する。
以上、中継サーバ200の動作について説明した。
このように中継サーバ200がデジタルカメラ100および配信サーバ300の通信プロトコルについて判断することで、配信サーバ300が利用する通信プロトコルに関わらず、ユーザはデジタルカメラ100を介してライブ配信が可能になる。
また、配信サーバ300が利用する通信プロトコルのリストを取得できる場合、デジタルカメラ100および中継サーバ200はその通信プロトコルのリストを要求するパケットを送信してもよい。この場合、ステップS1004において、この通信プロトコルのリストに基づいて中継サーバ200は判断する。
本実施形態では図10のステップS1004において、中継サーバは通信プロトコルだけに基づいて判断したが、ライブ配信に関係する諸条件で判断してもよい。
なお、配信サーバ300がライブ配信する時間に上限を設けている場合、デジタルカメラ100はその上限の時間に合わせてライブ配信する。ライブ配信している時間が上限に達した場合、デジタルカメラ100はユーザの操作を待つことなく自動的にライブ配信を終了する。
なお、中継サーバ200は中継サーバ200の利用情報や配信サーバ300の利用情報等をユーザに通知してもよい。この利用情報は例えば、会員の種類、利用料金、および今月の利用時間等の個人情報である。
ここで、図4(A)に示したデータベースのテーブルは次の図4(D)に示すようなテーブルでもよい。図4(D)は第一の実施形態におけるデジタルカメラの種類ごとのデータベースのテーブルの一例である。このデータベースには、デジタルカメラの機種名、デジタルカメラのバージョン、およびそのデジタルカメラが利用する通信プロトコルが記録される。レコード4401に示すように、機種名がXXXでありバージョン1.00.00のデジタルカメラはRTMPの通信プロトコルを利用する。しかし、レコード4402およびレコード4403に示すように、機種名がXXXであってもバージョン1.10.00のデジタルカメラはRTMPおよびMPEG−DASHの通信プロトコルを利用する。またレコード4404に示すように、機種名がYYYでありバージョン1.00.00のデジタルカメラはRTMPの通信プロトコルを利用する。このようにデジタルカメラの種類およびバージョンごとの情報をデータベースに格納することで、中継サーバ200は接続しているデジタルカメラの種類およびバージョンの情報からそのデジタルカメラが利用する通信プロトコルを取得することができる。
なお、中継サーバ200はデジタルカメラと接続を確立するごとにデジタルカメラが利用する通信プロトコルに関する情報をデジタルカメラから受信し、デジタルカメラと接続を確立している間のみこの情報を保持するとしてもよい。この場合、中継サーバ200はデジタルカメラとの接続を切断した場合、この情報を消去する。
また、中継サーバ200はデジタルカメラ100の最新のバージョン情報を有する場合、デジタルカメラ100の現在のバージョンと最新のバージョンとを比較し、一致しない場合は、デジタルカメラ100に最新のバージョン情報を送信してもよい。これにより、ユーザはデジタルカメラ100を更新することで、デジタルカメラ100が配信サーバ300が利用する通信プロトコルを利用できるようになる場合がある。
[第二の実施形態]
第二の実施形態では、配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力があるか否かを、中継サーバ200ではなくデジタルカメラ100が判断する。本実施形態において、システム構成およびそのシステムに利用する装置(デジタルカメラ100、中継サーバ200、および配信サーバ300)の構成は第一の実施形態と同様である。
<ライブ配信処理>
図11は本実施形態におけるデジタルカメラ100、中継サーバ200、および配信サーバ300のライブ配信処理の一例のシーケンスを示す図である。まず図11を用いて、デジタルカメラ100が配信サーバ300へ直接配信データを送信する場合のライブ配信処理について説明する。
ステップS1101からステップS1104はそれぞれ図6のステップS601からステップS604と同様であるため説明を省略する。
ステップS1105において、中継サーバ200はステップS1104において受信したイベントをデジタルカメラ100へ送信する。本ステップにおいて、中継サーバ200は配信サーバ300が利用する通信プロトコルについて判断しない。中継サーバ200の処理はこのステップで終了する。
ステップS1106において、デジタルカメラ100はステップS1105において受信したイベントに基づいて、配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力があるか否かを判断する。本シーケンスでは配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力があるとデジタルカメラ100は判断する。そのためこれからの処理において、デジタルカメラ100は受信したイベントに含まれる送信URLに配信データを送信する。
ステップS1107からステップS1109は、それぞれ図6のステップS607からステップS609と同様であるため説明を省略する。本処理はライブ配信するための処理である。
ステップS1110およびステップS1111は、それぞれ図6のステップS610からステップS611と同様であるため説明を省略する。本処理はライブ配信を終了するための処理である。
ステップS1112において、デジタルカメラ100は配信サーバ300へ直接ライブ配信を終了することを要求するパケットを送信する。
ステップS1113において、ステップS1112において受信した要求に対する応答として、配信サーバ300はライブ配信を終了したことを示す通知をデジタルカメラ100へ送信する。
このように、配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がある場合、デジタルカメラ100は配信データを配信サーバ300へ直接送信する。以上、デジタルカメラ100が配信サーバ300へ直接配信データを送信する場合のライブ配信処理について説明するについて説明した。
次に図12を用いて、デジタルカメラ100が配信サーバ300へ中継サーバ200を介して配信データを送信する場合のライブ配信処理について説明する。まずデジタルカメラ100がイベントを配信サーバ300から中継サーバ200を介して受信する処理について説明する。
ステップS1201からステップS1204はそれぞれ図7のステップS701からステップS704と同様であるため説明を省略する。
ステップS1205において、中継サーバ200はステップS1204において受信したイベントをデジタルカメラ100へ送信する。本ステップにおいて、中継サーバ200は配信サーバ300が利用する通信プロトコルについて判断しない。本シーケンスにおいて中継サーバ200の処理はこのステップでは終了しない。
ステップS1206において、デジタルカメラ100はステップS1205において受信したイベントに基づいて、配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力があるか否かを判断する。本シーケンスでは配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がないとデジタルカメラ100は判断する。そのためこれからの処理において、デジタルカメラ100は中継サーバ200を介して配信データを配信サーバ300へ送信するための処理を実行する。
ステップS1207において、デジタルカメラ100は中継URLを要求するパケットを中継サーバ200へ送信する。
ステップS1208において、ステップS1207において受信した要求への応答として、中継サーバ200は中継URLをデジタルカメラ100へ送信する。デジタルカメラ100はステップS1205において受信したデータおよび本ステップにおいて受信したデータに基づいてライブ配信処理を実行する。
ステップS1209からステップS1219は、それぞれ図7のステップS707からステップS717と同様であるため説明を省略する。本処理はライブ配信を開始してから終了するまでの処理である。
このように、配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がない場合、デジタルカメラ100は配信データを中継サーバ200を介して配信サーバ300へ送信する。以上、デジタルカメラ100が配信サーバ300へ中継サーバ200を介して配信データを送信する場合のライブ配信処理について説明した。
なお、本実施形態において、配信サーバ300が利用する通信プロトコルに関する情報はイベントに含まれていてもよい。この場合、デジタルカメラ100はこの配信サーバ300が利用する通信プロトコルに関する情報に基づいて、配信データを中継サーバ200を介して送信するか配信サーバ300へ直接送信するかを判断する。
<デジタルカメラ100の動作>
図13を用いてデジタルカメラ100の動作について説明する。図13は、本実施形態のライブ配信処理におけるデジタルカメラ100の動作の一例を示すフローチャートである。この処理は、不揮発性メモリ103に記録されたソフトウェアを作業用メモリ104に展開して制御部101が実行することで実現する。またこの処理は、ユーザによるライブ配信を開始する指示を制御部101が受け付けたことをトリガに開始される。例えば図8(A)に示す画面において、ユーザがタッチパネルをタッチ操作しての釦802を選択したことをトリガに、制御部101は本フローチャートの処理を開始する。これは図11のステップS1101および図12のステップS1201に対応する。
ステップS1301において、制御部101はイベントを要求するパケットを接続部111を介して中継サーバ200へ送信する。本ステップは、図11のステップS1102および図12のステップS1202に対応する。
ステップS1302において、接続部111を介して中継サーバ200からイベントを受信したか否かを制御部101は判断する。イベントを受信した場合、制御部101はその情報を作業用メモリ104に保持し、ステップS1303に遷移する。制御部101はイベントを受信するまで本処理を繰り返す。このイベントには送信URLが含まれる。本ステップは、図11のステップS1105および図12のステップS1205に対応する。
ステップS1303において、ステップS1302において受信したデータに基づいて、制御部101は配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力があるか否かを判断する。配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がある場合、制御部101はステップS1304に遷移し、配信データを直接配信サーバ300へ送信するための処理を実行する。配信サーバ300が利用する通信プロトコルをデジタルカメラ100が利用する能力がない場合、制御部101はステップS1311に遷移し、配信データを中継サーバ200を介して配信サーバ300へ送信するための処理を実行する。本ステップは図11のステップS1106および図12のステップS1206に対応する。まず制御部101が配信データを配信サーバ300へ直接送信する処理について説明する。
ステップS1304において、制御部101は待機画面を表示する。例えば制御部101は表示部106に図8(B)に示すような画面を表示する。本ステップは図11のステップS1107に対応する。
ステップS1305において、制御部101は配信データの送信を開始する指示を受け付けたか否かを判断する。例えば、制御部101はユーザのタッチパネルへのタッチ操作によって図8(B)の釦803が選択されたことを検知した場合、ステップS1305に遷移する。制御部101はユーザから配信データの送信を開始する指示を受け付けるまで本処理を繰り返す。本ステップは図11のステップS1108に対応する。ここで、ステップS1305以降に撮影された動画データおよびステップS1305以降に生成された音声データを制御部101は配信データとする。
ステップS1306において、制御部101は配信データを配信サーバ300へ直接送信する。本ステップは図11のステップS1109に対応する。
ステップS1307において、制御部101はユーザからライブ配信の終了の指示を受け付けたか否かを判断する。ライブ配信の終了の指示を受け付けた場合、制御部101はステップS1308に遷移する。ライブ配信の終了の指示を受け付けていない場合、制御部101はステップS1306に戻り、ライブ配信を継続する。制御部101は、例えば、図8(C)に示す釦805を、ユーザがタッチパネルをタッチ操作によって選択したことを検知することでライブ配信の終了の指示を受け付ける。本ステップは、図11のステップS1110に対応する。
ステップS1308において、制御部101は配信データの送信を終了する。本ステップは、図11のステップS1111に対応する。
ステップS1309において、制御部101は配信サーバ300へライブ配信の処理を終了するよう要求する。本ステップは図11のステップS1112に対応する。
ステップS1310において、制御部101は配信サーバ300からライブ配信の処理を終了したことを示す通知を受信し、処理を終了する。なお、所定時間が経過してもこの通知を受信できない場合、制御部101は再度ステップS1309の処理を実行する。本ステップは図11のステップS1113に対応する。
ここまで制御部101が配信データを配信サーバ300へ直接送信する処理について説明した。これから制御部101が配信データを中継サーバ200を介して配信サーバ300へ送信する処理について説明する。
ステップS1311において、制御部101は中継URLを要求するパケットを中継サーバ200へ送信する。本ステップは図12のステップS1207に対応する。
ステップS1312において、制御部101は中継サーバ200から中継URLを受信したか否かを判断する。制御部101は中継サーバ200からこのデータを受信するまで本処理を繰り返す。このデータを受信した場合、制御部101はステップS1313に遷移し、配信データを中継サーバ200を介して配信サーバ300へ送信する。
ステップS1313およびステップS1314はそれぞれステップS1304およびステップS1305と同様であるため説明を省略する。ステップS1313およびステップS1314はそれぞれ図12のステップS1209およびステップS1210に対応する。
ステップS1315において、制御部101は配信データを中継サーバ200へ送信する。この配信データは中継サーバ200を介して配信サーバ300へ送信される。本ステップは図12のステップS1211に対応する。
ステップS1316において、制御部101はユーザからライブ配信の終了の指示を受け付けたか否かを判断する。ライブ配信の終了の指示を受け付けた場合、制御部101はステップS1317に遷移する。ライブ配信の終了の指示を受け付けていない場合、制御部101はステップS1315に戻り、ライブ配信を継続する。制御部101は、例えば、図8(C)に示す釦805を、ユーザがタッチパネルをタッチ操作によって選択したことを検知することでライブ配信の終了の指示を受け付ける。本ステップは、図12のステップS1214に対応する。
ステップS1317において、制御部101は配信データの送信を終了する。本ステップは、図12のステップS1215に対応する。
ステップS1318において、制御部101は中継サーバ200へライブ配信の処理を終了するよう要求する。本ステップは図12のステップS1216に対応する。
ステップS1319において、制御部101は中継サーバ200からライブ配信の処理を終了したことを示す通知を受信し、処理を終了する。なお、所定時間が経過してもこの通知を受信できない場合、制御部101は再度ステップS1318の処理を実行する。本ステップは図12のステップS1219に対応する。
以上、デジタルカメラ100の動作について説明した。
また、配信サーバ300が利用する通信プロトコルのリストを取得できる場合、デジタルカメラ100および中継サーバ200はその通信プロトコルのリストを要求するパケットを送信してもよい。この場合、ステップS1303において、この通信プロトコルのリストに基づいてデジタルカメラ100は判断する。
<中継サーバ200の動作>
図14は本実施形態における中継サーバ200の動作の一例を示すフローチャートである。中継サーバ200はデジタルカメラ100と接続した場合、本処理を開始する。この処理は、不揮発性メモリ203に記録されたソフトウェアを作業用メモリ204に展開して制御部201が実行することで実現する。
ステップS1401からステップS1403はそれぞれ図10のステップS1001から1003と同様であるため説明を省略する。ステップS1401からステップS1403はそれぞれ図11のステップS1102からステップS1104に対応する。またステップS1401からステップS1403はそれぞれ図12のステップS1202からステップS1204に対応する。
ステップS1404において、制御部201はイベントをデジタルカメラ100へ送信する。ここで、制御部201はイベントについて変更を加えない。本ステップは図11のステップS1105および図12のステップS1205に対応する。
ステップS1405において、中継URLを要求するパケットを制御部201はデジタルカメラ100から受信したか否かを判断する。このデータを要求するパケットを受信した場合、制御部201はステップS1406に遷移する。このデータを要求するパケットを受信していない場合、制御部201は処理を終了する。ここで、例えばデジタルカメラ100との接続が切断した場合や所定時間経過してもこのデータを要求するパケットを受信していない場合に、制御部201は要求パケットを受信していないと判断する。本ステップは図12のステップS1207に対応する。これから中継URLを要求するパケットを制御部201がデジタルカメラ100から受信した場合について説明する。
ステップS1406において、制御部201は中継URLをデジタルカメラ100へ送信する。本ステップは図12のステップS1208に対応する。
ステップS1407からステップS1410はそれぞれ図10のステップS1008からステップS1011と同様であるため説明を省略する。本処理はデジタルカメラ100から受信した配信データを変換し、その変換した配信データを配信サーバ300へ送信する処理である。ステップS1407からステップS1410はそれぞれ図12のステップS1211、ステップS1212、ステップS1213、およびステップS1216に対応する。
ステップS1411からステップS1413はそれぞれ図10のステップS1012からステップS1014と同様であるため説明を省略する。本処理はライブ配信を終了する処理である。ステップS1411からステップS1413はそれぞれ図12のステップS1217からステップS1219に対応する。
以上、中継サーバ200の動作について説明した。
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。