以下、添付の図面を参照して、本発明をその好適な実施例に基づいて詳細に説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
(実施例1)
本発明の第1の実施例にかかる送信システムの構成を、図1に示す。図1において送信装置100は、受信装置200と相互に通信可能なネットワーク300で接続される。また、送信装置100はネットワーク300を介してビデオカメラ400と接続されている。送信装置100とビデオカメラ400は単一の装置で実現しても良い。
ビデオカメラ400は、被写体の撮像を行う撮像部を有する。また、ビデオカメラ400は、撮像した撮像画像から映像データの生成を行う生成部を有する。また、ビデオカメラ400は、生成部が生成した映像データを保持する保持部を有する。この保持部は、例えば、RAM(Random Access Memory)やROM(Read Only Memory)等により構成することができる。あるいは、メモリカード等のリムーバブルメディアを用いて、映像データを保持することとしてもよい。さらに、ビデオカメラ400は生成した映像データを送信装置100に出力する出力部を有する。
本実施例にかかる送信装置100について、図2(a)、(b)を用いて説明する。図2(a)は、本実施例にかかる送信装置100の構成を示す図である。
通信部101は、ビデオカメラ400から出力されたコンテンツ(映像データ)を送信装置100に入力する。通信部101は、ビデオカメラ400が撮像を継続している間に、ビデオカメラ400が生成した映像データを順次、送信装置100に入力することができる。また、通信部101は、ビデオカメラ400が撮像を完了し、ビデオカメラ400の保持部に保持された映像データを入力することができる。入力された映像データに基づいて、後述の生成部102により複数のセグメントデータが生成され、後述の記憶部103に保持される。
また通信部101は、受信装置200が送信装置100から取得することができるセグメントデータを示すメタデータ(以下、プレイリスト)の送信要求(以下、プレイリスト要求)を受信する。プレイリストの内容については、図4を用いて後述する。通信部101は、生成部102が生成するプレイリストを、プレイリスト要求の受信に応じて送信する。
さらに通信部101は、プレイリストを受信した受信装置から、セグメントデータの取得要求を受信する。通信部101は、セグメントデータの取得要求に応じて、要求されたセグメントデータを受信装置200に送信する。
生成部102は、受信装置からのプレイリスト要求に応じて、通信部101が入力した映像データから複数のセグメントデータを生成する。例えば生成部102は、ビデオカメラ400から入力された映像データを所定時間単位で区切ってファイル化することにより、セグメントデータを生成する。このようにして、入力された映像データから、所定の再生時間に応じたセグメントデータを複数生成する。
セグメントデータの生成の方法は特に限定しない。例えば、所定のデータ量ごとにセグメントデータを生成する等としてもよい。また、ビデオカメラ400が撮影した映像データに対してユーザが関連付けた情報に応じて映像データを区切ることとしてもよい。
あるいは、動画内容に応じてビデオカメラ400が映像データに関連付けた情報に基づいて、映像データを区切ることとしてもよい。
例えばビデオカメラ400が映像中の動体を検出する機能を有する場合には、映像中の動体検出結果に応じて映像データを区切ることとしてもよい。ビデオカメラ400が動体を検出する場合に限られず、ビデオカメラ400が人体等の特定物体を検出し、映像中の特定物体検出結果に応じて映像データを区切ることとしてもよい。
例えば、ビデオカメラ400が映像中の動体又は特定物体を検出したタイミングで映像データを区切ったり、それまで検出していた動体又は特定物体が検出されなくなったタイミングで映像データを区切ったりすることができる。
所定時間単位で映像データを区切る方法と、動体又は特定物体の検出結果に応じて映像データを区切る方法を併用してもよい。すなわち、動体又は特定物体が検出されていない間は所定時間毎に映像データを区切ってセグメントデータを生成する。さらに、動体又は特定物体を検出した場合、当該所定時間に関わらず映像データを区切って新たなセグメントデータを生成する。動体又は特定物体の検出に応じて映像データを区切った位置から、再び所定時間毎に映像データを区切ってセグメントデータを生成するようにしてもよい。
本実施例において、各セグメントデータにはセグメント番号が対応付けられる。セグメント番号は1番から順に一連の番号を割り当てても良い。または、セグメントデータの生成時間を割り当てても良い。あるいは、セグメントデータに該当する映像データの一部が作成された時間を割り当てても良い。本実施例では1番から順番に割り当てる例について説明する。セグメント番号が小さいとセグメントデータが古く、セグメント番号が大きいとセグメントデータが新しいものとする。古いセグメントデータとは、受信装置200における再生順序が時間的により前のセグメントデータを意味する。また、新しいセグメントデータとは、受信装置200における再生順序が時間的により後のセグメントデータを意味する。このセグメント番号は、各セグメントデータを識別するための情報である。生成されたセグメントデータは、記憶部103に保持される。
また生成部102は、記憶部103に保持されているセグメントデータについてのプレイリストを生成する1つのプレイリストには、特定情報を複数含む。ここで特定情報とは、受信装置200が取得することができるセグメントデータを受信装置が特定するための情報である。
本実施例では、生成部102が生成するプレイリストに含むことができる特定情報の数を所定数に制限する場合について説明する。このように、1つのプレイリストに含まれる特定情報の数に上限を設けることにより、受信装置200に送信するプレイリストのデータ量を小さくすることがきる。従って、送信装置100が送信することができる全てのセグメントデータの特定情報を含むプレイリストを送信する場合に比べて、プレイリストを送信する際のネットワークに対する負荷を低減することができる。
生成部102が生成するプレイリストの例を図4に示す。本実施例では、1つのプレイリストに3つを上限として特定情報が含まれる例について説明する。
図4において、行121、122、123に記載された情報は、それぞれ異なるセグメントデータの特定情報を示す。
図4の列131に記載された情報は、各セグメントデータに対応付けられたセグメント番号を示す。このセグメント番号は、特定情報を識別するために用いられる。また、セグメント番号はプレイリストに含まれる各特定情報に応じたセグメントデータの再生順序を表す。例えば、セグメント番号が大きい程、再生順序が後であることを示すようにすることができる。図4の例では、セグメント番号1、2、5の順に、対応するセグメントデータが再生されることを示す。ただし、セグメント番号を用いずに再生順序を表すこととしてもよい。例えば、プレイリストに記載された特定情報の順が、対応するセグメントデータの再生順序を示すこととしてもよい。図4の例では、上に記載された特定情報から順に再生することを示すこととしてもよい。
図4の列132に記載された情報は、各特定情報に対応するセグメントデータが保持された場所を示す。図4の例では、列132には、セグメントデータの保持されている場所を示すURI(Uniform Resource Identifier)が記載される。
図4の列133に記載された情報は、各特定情報に対応するセグメントデータの再生時間の長さを示す。図4の例では、各特定情報に対応するセグメントデータの再生時間はいずれも0.5秒である。所定の再生時間毎にセグメントデータが生成される場合には、再生時間はプレイリストに記載しないこととしてもよい。
記憶部103は、生成部102が生成したセグメントデータを記憶する。また、後述の制御部104がCPU(Central Processing Unit)等のプロセッサを内蔵する場合には、記憶部103は、当該プロセッサに実行させるためのプログラムを記録する。さらに、後述の制御部104がプロセッサを内蔵する場合には、記憶部103は、当該プロセッサがプログラムを実行する際に用いるパラメータを一時的に保存するために用いられる。記憶部103は、例えばROMやRAM等により構成される。記憶部103としてリムーバブルメディアを用いてもよい。また記憶部103は、その一部又は全体が外部記憶装置により構成されてもよい。また記憶部103は複数の記録媒体により構成されてもよい。
制御部104は、図2(a)に示した送信装置100の各構成の動作を制御する。制御部104は例えば、CPU等のプロセッサにより構成することができる。制御部104がプロセッサとして構成される場合、制御部104は記憶部103に記憶されたプログラムを読み出して実行することにより、図2(a)に示した送信装置100の各構成の動作を制御する。
送信装置100の機能ブロック図を図2(b)に示す。図2(b)の各構成は、制御部104が送信装置100の各構成を制御して実行する機能モジュールを表す。図2(b)の各構成の一部又は全体を制御部104と独立したハードウェアにより実行することとしてもよい。
映像データ入力部111は、ビデオカメラ400から入力された映像データを送信装置100に入力する。
セグメントデータ生成部112は、入力された映像データからセグメントデータを生成する。また、セグメントデータ生成部112は生成したセグメントデータの情報をプレイリスト生成部115へ出力する。
セグメントデータ要求取得部113は、受信装置200から送信されたセグメントデータの取得要求(以下、セグメントデータ要求)を受信する。セグメントデータ要求取得部113は、受信したセグメントデータ要求の内容を解析し、送信装置100が保持するセグメントデータのうち、いずれのセグメントデータを要求しているのか判定する。セグメントデータ要求取得部113は、判定結果をセグメントデータ送信部114へ通知する。
セグメントデータ送信部114は、受信装置200の要求に応じたセグメントデータを受信装置200へ送信する。また、セグメントデータ送信部114は、受信装置200に送信済みのセグメントデータの番号を判定部117へ通知する。
プレイリスト生成部115は、セグメントデータ生成部112により作成されたセグメントデータについてのプレイリストを、後述の判定部117の判定結果に基づいて生成する。
プレイリスト要求受信部116は、受信装置200から送られるプレイリスト要求を受信する。プレイリスト要求受信部116はプレイリスト要求を受信したとき、プレイリスト要求を受信したことをプレイリスト送信部118へ通知する。
判定部117は、セグメントデータ送信部114から送信される、送信済みのセグメントデータの番号を保持する。そして、保持した情報に基づいて、セグメントデータが受信装置200に送信済であるか否かを判定する。判定部117は、判定結果をプレイリスト送信部118へ通知する。
プレイリスト送信部118は、プレイリスト生成部115により生成されたプレイリストを受信装置200へ送信する。
次に受信装置200について、図3(a)及び(b)を用いて説明する。図3(a)は本実施例にかかる受信装置200の構成を示す図である。
通信部201は、送信装置100にプレイリストの送信を要求するプレイリスト要求を送信する。本実施例において、受信装置200は、ユーザの指示に応じてセグメントデータの受信の開始が指示されると、所定間隔で送信装置100に対してプレイリスト要求を送信する。通信部201は、プレイリスト要求の送信に応じて、送信装置100からプレイリストを受信する。
また通信部201は、プレイリストに含まれる特定情報に対応するセグメントデータの取得要求を送信装置100に送信する。通信部201は、セグメントデータの取得要求に応じて、送信装置100からセグメントデータを受信する。
再生部202は、通信部201が受信したセグメントデータの再生処理を行う。
記憶部203は、送信装置100から受信したプレイリストを保持する。記憶部203は、保持したプレイリストを用いてセグメントデータの取得要求を行った後は、当該プレイリストを削除することとしてもよい。このようにして、受信したプレイリストを保持し続ける場合に比べて、少ない記憶容量でセグメントデータの受信を実現することができる。
また記憶部203は、送信装置100から送信されたセグメントデータを保持する。記憶部203は、保持したセグメントデータが再生部202によって再生された後は、当該セグメントデータを削除することとしてもよい。このようにして、受信したセグメントデータを保持し続ける場合に比べて、少ない記憶容量でセグメントデータの再生を実現することができる。
また記憶部203は、後述の制御部204がCPU等のプロセッサを内蔵する場合には、記憶部203は、当該プロセッサに実行させるためのプログラムを記録する。さらに、後述の制御部204がプロセッサを内蔵する場合には、記憶部203は、当該プロセッサがプログラムを実行する際に用いるパラメータを一時的に保存するために用いられる。記憶部203は、例えばROMやRAM等により構成される。記憶部203としてリムーバブルメディアを用いてもよい。また記憶部203は、その一部又は全体が外部記憶装置により構成されてもよい。また記憶部203は複数の記録媒体により構成されてもよい。
制御部204は、図3(a)に示した受信装置200の各構成の動作を制御する。制御部204は例えば、CPU等のプロセッサにより構成することができる。制御部204がプロセッサとして構成される場合、制御部204は記憶部203に記憶されたプログラムを読み出して実行することにより、図3(a)に示した受信装置200の各構成の動作を制御する。
次に、受信装置200の機能ブロック図を図3(b)に示す。図3(b)の各構成は、制御部204が受信装置200の各構成を制御して実行する機能モジュールを表す。図3(b)の各構成の一部又は全体を制御部104と独立したハードウェアにより実行することとしてもよい。
プレイリスト受信部211は、送信装置100から送信されるメタデータを受信する。プレイリスト受信部211は、受信したプレイリストの内容に応じた順序で、プレイリストに含まれるURIをセグメントデータ受信部212へ送信する。
セグメントデータ受信部212は、プレイリスト受信部から送信されたURIを用い、送信装置から送信されるセグメントデータを受信する。セグメントデータ受信部212は、受信したセグメントデータを再生処理部213へ送信する。
再生処理部213は、セグメントデータ受信部212より送信されたセグメントデータの再生処理を行う。
次に、映像データの再生が開始されるまでの、送信装置100と受信装置200との間のデータの送受信について図5を用いて説明する。
送信装置100は、ビデオカメラ400から映像データを受信する(S501)。そして、受信した映像データから複数のセグメントデータを生成する(S502)。例えば送信装置100は、ビデオカメラ400から入力された映像データを所定時間単位で区切ってファイル化することにより、セグメントデータを生成する。このようにして、入力された映像データから、所定の再生時間に応じたセグメントデータを複数生成する。セグメントデータの生成の方法は特に限定しない。例えば、所定のデータ量ごとにセグメントデータを生成する等としてもよい。また、ビデオカメラ400が撮影した映像データに対してユーザが関連付けた情報に応じて映像データを区切ることとしてもよい。あるいは、動画内容に応じてビデオカメラ400が映像データに関連付けた情報に基づいて、映像データを区切ることとしてもよい。生成したセグメントデータは送信装置100内の記憶部103に保持される。
受信装置200は、ユーザによって映像データの受信開始が指示(S511)されると、所定の間隔でプレイリスト要求を送信装置100に送信する(S512)。受信装置200は例えば、所定時間間隔ごとにプレイリスト要求を送信装置100に送信する。
送信装置100は、受信装置200からプレイリスト要求を受信すると、プレイリストを生成する(S503)。このプレイリストは、受信装置200が受信することができるセグメントデータを示すメタデータである。プレイリストの生成方法については、図7を用いて後述する。プレイリストを生成すると、送信装置100は生成したプレイリストを受信装置200に送信する(S504)。このプレイリストには、図5を用いて上述したように、複数のセグメントデータについての特定情報を含むことができる。このようにして、送信装置100は、コンテンツを構成する複数のセグメントデータのうち受信装置が取得可能なセグメントデータを示すメタデータを受信装置に送信する。
受信装置200は、送信装置100からプレイリストを受信すると、受信したプレイリストに含まれる複数の特定情報に対応するセグメントデータのうち、受信要求を行うセグメントデータを決定する(S513)。受信要求を行うセグメントデータは、1つであってもよいし複数であってもよい。受信要求を行うセグメントデータの決定処理の詳細は図8を用いて後述する。そして受信装置200はステップS513において決定したセグメントデータの送信を要求するセグメントデータ要求を送信装置100に送信する(S514)。このとき受信装置200は、プレイリストに含まれる特定情報(例えば、URI)を用いて、送信装置100に対してセグメントデータを要求する。
送信装置100は、受信装置200からセグメントデータ要求を受信すると、要求されたセグメントデータを記憶部103から読み出して、受信装置200に送信する(S505)。本実施例において受信装置200は、セグメントデータ受信途中で新たにプレイリストを受信した場合、現行のセグメントデータの受信が完了してから、新たに受信したプレイリストに含まれる特定情報用いてセグメントデータの受信を開始することができる。あるいは受信装置200は、セグメントデータ受信途中で新たにプレイリストを受信した場合、受信中のセグメントデータ受信を中止し、新たに受信したプレイリストに含まれる特定情報を用いてセグメントデータ受信を開始してもよい。
受信装置200は、送信装置100からセグメントデータを受信すると、受信したセグメントデータを再生する(S515)。このようにして、送信装置100は、セグメントデータの取得要求に応じてセグメントデータを送信する。以上のようにして、映像データの再生が開始される。
送信装置100は、セグメントデータを生成後、記憶部103に保持したセグメントデータを順次削除してもよい。例えばセグメントデータを生成してから所定時間経過後の当該セグメントデータを削除することができる。あるいは、記憶部103に記憶することができる容量が所定値以下となった場合に記憶したセグメントデータを削除することができる。
また、受信装置200は、プレイリストから特定情報を選択したのち、当該プレイリストを削除してもよい。
次に図6を用いて、本実施例における映像データの送信を終了させるための送信装置100と受信装置200との処理について図6を用いて説明する。
受信装置200は、ユーザから映像データ受信の終了命令を受信する(S611)。終了命令を受信した受信装置200は、上述のステップS512において、映像送信の終了を指示する終了指示を含むプレイリスト要求を送信装置100に対して行う。
送信装置100は、終了指示を含むプレイリスト要求を受信すると、上述のステップS503において、映像データの送信終了を示す終了タグを含むプレイリストを生成する。そしてステップS504において、終了タグを含むプレイリストを受信装置200に送信する。
ステップS513において受信装置200がプレイリストを受信してから、ステップS515において受信装置200がセグメントデータを再生するまでの、送信装置100及び受信装置200の処理は図5を用いて説明した処理と同じなので説明を省略する。
受信装置200は、送信装置100から終了タグを含むプレイリストを受信すると、プレイリスト要求を終了する。すなわち受信装置200は、終了タグを含むプレイリストを送信装置100から受信するまでは、図5を用いて上述したように、所定間隔ごとにプレイリスト要求を行う。そして、終了タグを含むプレイリストを送信装置100から受信すると、プレイリスト要求を終了する。そして、映像データの再生を終了する(S612)。
図6に示した例では、受信装置200が終了指示を送信装置100に対して送信する場合について説明したが、映像データ送信の終了の方法はこれに限られない。例えば、受信装置200は終了指示を送信しないこととしてもよい。たとえば、送信装置100において映像データの送信を終了すると判定した場合に、送信装置100がプレイリストに終了タグを含めて送信するようにしてもよい。終了タグを含むプレイリストを受信した受信装置200は、それ以降プレイリスト要求を送信しない。送信装置100が映像データの送信を終了すると判定する場合として、例えば、ひとまとまりの映像データの最後まで映像送信が終了する場合、あるいは、送信装置100に対するユーザの操作によって、映像データ送信の終了が指示された場合等とすることができる。
次に、送信装置100におけるセグメントデータの生成処理(S502)について説明する。本実施例にかかる送信装置100は、以下の(1)から(3)の規則を満たすようにして、プレイリストを生成する。
(1)プレイリストには、所定数以下のセグメントデータに対応する特定情報(例えばURI等)を含む。
例えば、所定数が3である場合、1つのプレイリストには、セグメントデータに対応する特定情報を3つまで含めることができる。例えば図5に示したように、セグメント番号1、2、及び、5の3つのセグメントデータについての特定情報を含むことができる。プレイリストに含まれる特定情報に対応するセグメントデータの数は、所定数以下であってもよい。所定数が3である場合、プレイリストには、0から3までの数のセグメントデータに対応する特定情報を含めることができる。
(2)前回受信装置200に送信した第1のプレイリストに含まれる特定情報に対応するセグメントデータのうち、まだ受信装置200に送信していないセグメントデータの特定情報を第2のプレイリストに含めるようにして、第2のプレイリストを生成する。
言い換えれば、前回受信装置200に送信した第1のプレイリストに含まれる特定情報に対応するセグメントデータのうち、既に受信装置200に送信したセグメントデータ以前のセグメントデータの特定情報を、第2のプレイリストに含めないようにする。
例えば、第1のプレイリストにセグメント番号1番、2番、及び3番のセグメントデータについての特定情報を含めて送信した場合について説明する。第1のプレイリストの次に受信装置200に送信する第2のプレイリストを生成する時点で、セグメント番号1から3までのセグメントデータのうち、セグメント番号1番のセグメントデータだけが受信装置200に送信済であるとする。この場合、送信装置100の生成部102は、第2のプレイリストに、セグメント番号2番、及び、3番のセグメントデータについての特定情報が含まれるようにして第2のプレイリストを生成する。ただし、第2のプレイリストを生成する時点で、セグメント番号2番、又は3番のセグメントデータを送信装置100の記憶部103から削除してしまった場合には、プレイリストに当該セグメント番号に対応する特定情報を含めないようにする。
このようにして、第2のプレイリストの生成時に、セグメント番号2番、及び、3番のセグメントデータを受信装置200が取得可能であるか否かを受信装置200に示すことができる。
(3)(2)の規則を適用して含めることが決定した特定情報の数が、(1)の規則の所定数よりも少ない場合、(2)の規則を適用して含めることを決定した特定情報に対応するセグメントデータよりも後に再生されるセグメントデータをプレイリストに含める。
例えば、第1のプレイリストにセグメント番号1番、2番、及び3番のセグメントデータの特定情報を含めて送信した場合について説明する。セグメント番号1番のセグメントデータが受信装置に既に配信済である場合、(2)の規則に従って、第2のプレイリストには、セグメント番号2番、3番の特定情報が含まれる。ここで、(1)の規則により、セグメントデータの特定情報は3個含めることができるので、セグメント番号2番、3番の特定情報に加えて、例えば、セグメント番号4番のセグメントデータの特定情報を第2のプレイリストに含めて送信することができる。または、第2のプレイリストを生成する時点でセグメント番号6番のセグメントデータまで送信装置100の記憶部103に保持されている場合、セグメント番号4番以降に再生されるセグメントデータの特定情報を第2のプレイリストに含めて送信してもよい。すなわち、セグメント番号2番、3番の特定情報に加えて、セグメント番号5番又は6番のセグメントデータの特定情報を第2のプレイリストに含めることとしてもよい。
次に、送信装置100におけるセグメントデータの生成処理(S502)について図7のフローチャートを用いて説明する。送信装置100の制御部104がプロセッサを内蔵する形態では、図7の処理フローは、図7に示す手順を制御部104に実行させるためのプログラムを示す。送信装置100の制御部104が内蔵するプロセッサはコンピュータであり、送信装置100が内蔵する記憶部103から読み出したプログラムを実行する。
まず送信装置100は、受信装置200から受信したプレイリスト要求が、映像送信を開始して初回のプレイリスト要求か否かを判定する(S701)。
初回のプレイリスト要求であるか否かは、受信したプレイリスト要求に含まれるセッション識別情報が、送信装置100が現在既に確立しているセッションの識別情報と同じであるか否かにより判定できる。ここで、現在既に確立しているセッションの識別情報は、送信装置100の記憶部103に保持されているものとする。また、セッション識別情報とは、送信装置100が他の装置と確立している通信セッションを識別するための識別情報である。
送信装置100は、受信したプレイリスト要求に含まれるセッション識別情報が、記憶部103に保持されていない場合、初回のプレイリスト要求であると判定する。そして、受信したプレイリスト要求に含まれるセッション識別情報を記憶部103に保持する。一方、受信したプレイリスト要求に含まれるセッション識別情報が、送信装置100が現在既に確立しているセッションの識別情報と同じである場合、初回のプレイリスト要求ではないと判定する。
初回のプレイリスト要求である場合(ステップS701においてYesの場合)、送信装置100は新たなプレイリストに含めて送信するメタデータの送信候補数を0に設定する(S702)。その後、ステップS703の処理を行う。
ステップS703において、送信装置100は送信候補数と、所定数Nとを比較し、その差の数だけ特定情報をプレイリストに追加する。この所定数は、プレイリストに特定情報を含めることができる数の上限値である。本実施例では、例えば、所定数は3であるものとする。ステップS702からステップS703の処理に移行した場合、送信候補数は0であるので、所定数との差3だけ、特定情報を追加する。
追加する特定情報に対応するセグメントデータは、送信装置100が記憶部103に保持する複数のセグメントデータのうちから選択することができる。例えば再生される順序が前のセグメントデータから所定数選択することができる。例えば記憶部103に1番から10番までのセグメントデータが保持されている場合、セグメント番号1番、2番及び3番のセグメントデータに対応する特定情報をプレイリストに追加するために選択することができる。
あるいは、送信装置100が生成したセグメントデータのうち、より新しいもから選択してもよい。例えば、送信装置100がセグメント番号1番から10番のセグメントデータを生成して保持している場合、セグメント番号8番、9番、及び、10番のセグメントデータに対応する特定情報をプレイリストに追加するために選択することができる。ステップS703において追加する特定情報の選択の方法は特に限定しない。
そして、ステップS703において選択したセグメントデータに対応する特定情報が含まれるようにして、プレイリストを生成する(S704)。
一方ステップS701において、受信したプレイリスト要求が初回のプレイリスト要求ではないと判定した場合(S701においてNoの場合)、送信装置100は前回送信した第1のプレイリストの内容に応じて、次に生成する第2のプレイリストを生成する。
送信装置100は、前回送信した第1のプレイリストに含まれる特定情報を全て送信候補に設定する(S705)。例えば、第1のプレイリストにセグメント番号1番、2番、及び、3番の特定情報が含まれている場合、第2のプレイリストに含めて送信する特定情報の送信候補として、セグメント番号1番、2番、及び、3番の特定情報を設定する。
次に送信装置100は、ステップS705において設定した送信候補に、送信済みのセグメントデータ以前に再生されるセグメントデータの特定情報が含まれるか判定する(S706)。
例えば、ステップS705において、セグメント番号1番、2番、及び3番の特定情報が送信候補として設定された場合について説明する。ステップS706の判定を行う時点で、既にセグメント番号1番のセグメントデータを受信装置200に送信済であった場合、ステップS706において、送信済みセグメントデータ以前のセグメントデータの特定情報が送信候補に含まれると判定する。この場合(S706においてYesの場合)、送信装置100は、ステップS707の処理を行う。
一方、セグメント番号1番のセグメントデータをまだ受信装置200に送信していない場合、ステップS706において、送信済みセグメントデータ以前のセグメントデータの特定情報が送信候補に含まれないと判定する。この場合(S706においてNoの場合)、送信装置100はステップS708の処理を行う。
ステップS707において、送信装置100は、ステップS705において設定した送信候補から、送信済みのセグメントデータ以前のセグメントデータの特定情報を除く処理を行う。セグメントデータが送信済みであるか否かは、図2(b)を用いて上述した、判定部117が判定を行う。例えば、ステップS705において、セグメント番号1番、2番、及び3番の特定情報が送信候補として設定された場合について説明する。ステップS706の判定を行う時点で、既にセグメント番号1番のセグメントデータを受信装置200に送信済であった場合、送信候補からセグメント番号1番の特定情報を除く処理を行う。すなわち、送信候補は、セグメント番号2番及び3番の特定情報を送信候補とし、セグメント番号1番の特定情報を送信候補としない。このとき送信候補の数は2となる。ステップS706の処理を終えると、送信装置100はステップS708の処理へ進む。本実施例では、送信済みのセグメントデータ以前のセグメントデータの特定情報を除く処理を行う場合について説明したが、送信済みのセグメントデータより前のセグメントデータの特定情報を除くこととしてもよい。
このようにして、メタデータの第1の取得要求を受信した後にメタデータの第2の取得要求を受信した場合、以下のようにして第2のメタデータを生成する。すなわち、受信装置に送信した第1のセグメントデータより前に再生すべきセグメントデータを受信装置が取得可能なセグメントデータとして含まないようにすることができる。また、第1の取得要求に応じて送信した第1のメタデータが含む複数のセグメントデータのうち第1のセグメントデータよりも後に再生すべきセグメントデータを受信装置が取得可能なセグメントデータとして含む第2のメタデータを生成することができる。
また、判定部117が送信済みと判定したセグメントデータよりも新しいセグメントデータであっても、生成後所定時間経過している場合には、そのセグメントデータの特定情報を送信候補としないようにしてもよい。
次に送信装置100は、ステップS708において、送信候補の数が、所定の数より少ないか判定する。この所定数は、プレイリストに含むことができる特定情報の上限数に対応する。本実施例では、所定数は3とする。送信候補の特定情報の数が所定数に達している場合(S708においてYesの場合)、送信候補の特定情報を含むプレイリストを生成する(S704)。一方、送信候補の特定情報の数が所定数に達していない場合(S708においてNoの場合)、送信装置100はステップS703の処理を行う。
ステップS703において、送信装置100は送信候補数と、所定数Nとを比較し、その差の数だけ特定情報をプレイリストに追加する。本実施例では、例えば、所定数は3であるものとする。例えば、ステップS707の処理を行った結果、セグメント番号2番と3番の特定情報が送信候補となり、送信候補の数が2となった場合、ステップS703において、所定数3と送信候補数2との差である1だけ特定情報を追加する。
追加する特定情報に対応するセグメントデータは、送信装置100が記憶部103に保持する複数のセグメントデータのうち、受信装置200に送信済みのセグメントデータよりも後に再生されるセグメントデータから選択することができる。
例えば、記憶部103に保持するセグメントデータのうち、再生される順序が前のセグメントデータから所定数選択することができる。例えば、記憶部103に1番から10番までのセグメントデータが保持されている場合、ステップS707送信候補として決定した2番、3番に加えて、セグメント番号4番のセグメントデータに対応する特定情報をプレイリストに追加するために選択することができる。
あるいは、送信装置100が生成したセグメントデータのうち、より新しいもから選択してもよい。例えば、送信装置100がセグメント番号1番から10番のセグメントデータを生成して保持している場合、セグメント番号10番のセグメントデータに対応する特定情報をプレイリストに追加するために選択することができる。ステップS703において追加する特定情報の選択の方法は特に限定しない。
そして、ステップS703において選択したセグメントデータに対応する特定情報が含まれるようにして、プレイリストを生成する。例えば、ステップS707においてセグメント番号2番、3番の特定情報が送信候補とされ、ステップS703においてセグメント番号4番の特定情報が送信候補とされた場合、セグメント番号2番、3番、4番の特定情報を含むプレイリストを生成する。また例えば、ステップS707においてセグメント番号2番、3番の特定情報が送信候補とされ、ステップS703においてセグメント番号10番の特定情報が送信候補とされた場合、セグメント番号2番、3番、10番の特定情報を含むプレイリストを生成する。
以上のようにして、送信装置100はプレイリストの生成を行う。
次に、受信装置200におけるセグメントデータの決定処理(S513)について図8のフローチャートを用いて説明する。受信装置200の制御部204がプロセッサを内蔵する形態では、図8の処理フローは、図8に示す手順を制御部204に実行させるためのプログラムを示す。受信装置200の制御部204が内蔵するプロセッサはコンピュータであり、受信装置200が内蔵する記憶部203から読み出したプログラムを実行する。
まず受信装置200は、送信装置100から受信したプレイリストが初回のプレイリストであるか否かを判定する(S801)。受信装置200は、プレイリスト要求時にプレイリスト要求を送信した送信装置100の識別情報、あるいは、プレイリスト要求を送信した送信装置100とのセッション識別情報を記憶する。そして、送信装置100の識別情報、又は、送信装置100とのセッション識別情報を用いて、送信するプレイリスト要求が初回のプレイリスト要求であるか否かを判定することができる。ステップS801では、受信したプレイリストが送信装置100に対して送信した初回のプレイリスト要求に対して送信されたプレイリストであるか否かを判定する。このようにして、受信装置200は送信装置100から受信したプレイリストが初回のプレイリストであるか否かを判定することができる。ただし、判定の方法はこれに限られない。
送信装置100から受信したプレイリストが初回のプレイリストである場合(S801においてYesの場合)、プレイリストに含まれる特定情報のうち、1又は複数の特定情報を選択する。例えば、プレイリストに含まれる全ての特定情報を選択することができる。あるいは例えば、プレイリストに含まれる特定情報に対応するセグメントデータのうち、より後に再生されるセグメントデータから順に所定数のセグメントデータの特定情報を選択することができる。またあるいは、プレイリストに含まれる特定情報に対応するセグメントデータのうち、最も後に再生されるセグメントデータを選択することができる。そして、選択した特定情報に対応するセグメントデータの取得要求を行うことを決定する(S802)。
送信装置100から受信したプレイリストが初回のプレイリストでない場合(S801においてNoの場合)、今回受信したプレイリストに含まれる特定情報と、前回受信したプレイリストに含まれる特定情報に重複があるか判定する(S804)。前回受信したプレイリストとは、例えば、今回受信したプレイリストの1回前に受信装置200が送信装置100から受信したプレイリストである。
今回受信したプレイリストに含まれる特定情報と、前回受信したプレイリストに含まれる特定情報に重複がない場合(S804において「なし」の場合)、送信装置100はステップS802の処理を行う。すなわち、今回受信したプレイリストに含まれる特定情報のうち、1又は複数の特定情報を選択する。そして、選択した特定情報に対応するセグメントデータの取得要求を行うことを決定する。
一方、今回受信したプレイリストに含まれる特定情報と前回受信したプレイリストに含まれる特定情報に重複がある場合(S804において「あり」の場合)、重複していない特定情報に対応するセグメントデータのうちから要求するセグメントデータを決定する。要求するセグメントデータは、ステップS802の場合と同様にして、1つ又は複数とすることができる。例えば、重複を省いた特定情報のすべてを選択することができる。あるいは例えば、重複を省いた特定情報に対応するセグメントデータのうち、より後に再生されるセグメントデータから順に所定数のセグメントデータの特定情報を選択することができる。またあるいは、重複を省いた特定情報に対応するセグメントデータのうち、最も後に再生されるセグメントデータを選択することができる。そして、選択した特定情報に対応するセグメントデータの取得要求を行うことを決定する。
ステップS802又はステップS805において、取得要求を行うセグメントデータを決定すると、送信装置100はプレイリスト要求を終了するか否かを判定する(S803)。プレイリスト要求を終了するか否かは、図6を用いて説明したように、受信したプレイリストに終了タグが含まれているか否かに基づいて行うことができる。受信したプレイリストに終了タグが含まれない場合には、プレイリストの要求を継続すると判定する。そしてステップS801の処理に戻る。一方、受信したプレイリストに終了タグが含まれている場合には、プレイリスト要求を終了する。以上のようにして、受信装置200は受信するセグメントデータを決定する。
本実施例にかかる送信装置100は、第1のプレイリスト要求を受信した後に、第2のプレイリスト要求を受信する。送信装置100は第1のプレイリスト要求に応答して第1のプレイリストを受信装置200に送信し、第2のプレイリスト要求に応答して第2のプレイリストを受信装置200に送信する。
送信装置100は、受信装置200に送信した第1のセグメントデータより前に再生すべきセグメントデータの特定情報を第2のプレイリストに含まないようにする。
送信装置100は、第1のプレイリストに含まれる複数の特定情報に対応するセグメントデータのうち、受信装置200に送信した第1のセグメントデータよりも後に再生すべきセグメントデータに対応する特定情報を第2のプレイリストに含むようにする。
本実施例によれば、第1のプレイリストに含まれる特定情報と、第2のプレイリストに含まれる特定情報が重複するようにして第2のプレイリストを生成することができる。この重複する特定情報は、送信装置100が受信装置200に送信していないセグメントデータに対応する特定情報である。
このような構成によれば、受信装置200は、受信済のセグメントデータに連続して生成されたセグメントデータを取得するためのメタデータを取得することができる。
例えば、プレイリスト要求に対して、最も新しく生成されたセグメントデータの特定情報のみを送信する場合、セグメントデータの受信装置200への送信状況が考慮されない。従って、前回送信したセグメントデータと不連続なセグメントデータについての特定情報が送信されてしまう場合がある。本実施例の構成によれば、セグメントデータの受信装置200への送信状況を考慮して、プレイリストに含める特定情報を決定するので、連続するセグメントデータを送信できる確率を高くすることができる。ここで、連続するセグメントデータとは、セグメントデータの生成において連続して生成されるセグメントデータのことをいう。
また本実施例にかかる送信装置100は、プレイリスト要求に対して、受信装置200に送信済みのセグメントデータに対応する特定情報を含まないようにして、プレイリストを生成して送信する。従って、受信装置200が必要としない特定情報を送信しないようにすることができる。これにより、受信装置200に対し、冗長な特定情報の送信が行われることを防ぐことができる。また、メタデータ送信における通信帯域に対する負荷を軽減することができる。
また本実施例では、プレイリストに含まれる特定情報の数を所定数以下に制限する。このような構成により、通信帯域に対する負荷を軽減してプレイリストを送信することができる。すなわち、1回のプレイリストの取得要求に対し、送信装置100が生成済みの全てのセグメントデータについての特定情報を含むプレイリストを送信する場合に比べて、より小さなデータ容量でプレイリストを送信することができる。従って、プレイリストの送信のための、通信帯域に対する負荷を軽減することができる。
また本実施例にかかる受信装置200は、1回のプレイリスト取得要求に対して複数の特定情報を受信する。こうして受信装置200は、プレイリストに含まれる複数の特定情報に対応する各セグメントデータのうち、より後に生成されたセグメントデータを取得するか、取得済みのセグメントデータとより連続性の高いセグメントデータを取得するか選ぶことができる。例えば受信装置200が、セグメント番号1番のセグメントデータを受信済みであり、その後、セグメント番号2番、3番、及び、5番の特定情報を含むプレイリストを受信したとする。この場合、データ再生の連続性を優先する場合、受信装置200はプレイリストに記載されたセグメント番号2番の特定情報を用いて、セグメント番号2番のセグメントデータを送信装置100に要求することができる。このようにすれば、受信装置200は、セグメント番号が1番のセグメントデータを受信した後に、セグメント番号2番のセグメントデータを受信することができる。一方、データ再生のリアルタイム性を優先する場合、受信装置200はプレイリストに記載されたセグメント番号5番の特定情報を用いて、セグメント番号5番のセグメントデータを送信装置100に要求することができる。このようにすれば受信装置200は、より新たに送信装置100により生成されたセグメントデータであるセグメント番号5番のセグメントデータを取得することができる。
例えば、受信装置200が受信したセグメントデータの録画を行う場合には、連続したセグメントデータを受信して記録することが望ましい。このような場合、受信装置200はプレイリストに記載された特定情報のうち、より時間的に前に再生されるべきセグメントデータに対応する特定情報を選択することができる。
一方、受信装置200が、ビデオカメラ400が撮影中の映像データのストリーミング再生を行う場合には、より新たに生成されたセグメントデータを受信して再生することが望ましい。このような場合、受信装置200はプレイリストに記載された特定情報のうち、より時間的に後に再生されるべきセグメントデータに対応する特定情報を選択することができる。このようにして、ビデオカメラ400が撮影中の映像データをリアルタイムに再生することができる。
このように本実施例によれば、このような受信装置200における映像データの用途に応じて、いずれのセグメントデータを受信するか受信装置が選択することができる。
本実施例においては、送信装置100が映像データを保持し、映像データから複数のセグメントデータを生成する場合について説明したが、これに限らない。たとえば、映像データの保持、又は、セグメントデータの生成は、送信装置100に接続された外部装置が行うこととしてもよい。この場合、送信装置100は当該外部装置から映像データ又はセグメントデータを受信して、上記と同様のプレイリスト送信処理及びセグメントデータ送信処理を行うことができる。
(実施例2)
本実施例にかかる送信システムの構成は、実施例1において図1を用いて説明した構成と同じなので説明を省略する。
また、本実施例にかかる送信装置100の構成は、図2(a)及び(b)を用いて説明した構成と同じなので説明を省略する。
本実施例にかかる受信装置200の構成は、実施例1において図3(a)及び(b)を用いて説明した構成と同じであるため、説明を省略する。
次に、本実施例における送信装置100と受信装置200の動作について説明する。
映像データの再生が開始されるまでの、送信装置100と受信装置200との間のデータの送受信の処理の概要は、実施例1において図5を用いて説明した内容と同じである。また、映像データの送信を終了させるための送信装置100と受信装置200との処理は、実施例1において図6を用いて説明した内容と同様である。
ここで、本実施例における送信装置100が行うプレイリスト生成処理(S503)について図9を用いて説明する。送信装置100の制御部104がプロセッサを内蔵する形態では、図9の処理フローは、図9に示す手順を制御部104に実行させるためのプログラムを示す。送信装置100の制御部104が内蔵するプロセッサはコンピュータであり、送信装置100が内蔵する記憶部103から読み出したプログラムを実行する。
図9に示したステップS701からS702、および、S704からS708の処理は図7に示した処理と同じであるので、同じ符号を付して説明を省略する。
本実施例にかかる送信装置100は、ステップS708において、送信候補の特定情報の数が所定数未満である場合、ステップS901の処理を行う。ステップS901では、送信装置100は、前回送信したプレイリストに、2以上の特定情報が含まれているか判定する。
送信装置100が、前回送信したプレイリストに2以上の特定情報が含まれる場合(S901においてYesの場合)、次に送信装置100は、ステップS902の処理を行う。ステップS902では送信装置100は、前回送信したプレイリストに含まれる特定情報に対応するセグメントデータのうち、より前に再生されるべき(より古い)セグメントデータが、受信装置200に送信済みであるか判定する。
例えば、前回送信したプレイリストにはセグメント番号5番、6番、7番の特定情報が記載されていたものとする。ステップS902では、前回送信したプレイリストに含まれる特定情報に対応するセグメントデータのうち、より前に再生されるべきセグメントデータ(セグメント番号5番)が、受信装置200に送信済みであるか判定する。
前回送信したプレイリストに含まれる特定情報に対応するセグメントデータのうち、より前に再生されるべきセグメントデータが受信装置200に送信済みである場合、送信装置100はステップS903に進む。
ステップS903では、送信装置100は送信候補数と、所定数Nとを比較し、その差の数だけ特定情報をプレイリストに追加する。この所定数は、プレイリストに特定情報を含めることができる数の上限値である。本実施例では、例えば、所定数は3であるものとする。
追加する特定情報に対応するセグメントデータは、送信装置100が記憶部103に保持する複数のセグメントデータのうち、受信装置200に送信済みのセグメントデータよりも後に再生されるセグメントデータから選択することができる。ステップS903では、送信候補以外で、再生される順序がより前のセグメントデータを選択する。
例えば、S701からS902までの処理により、セグメント番号6番、7番の特定情報が送信候補とされているものとする。また、セグメント番号5番のセグメントデータまで、受信装置200に送信されているものとする。さらに、送信装置100には、セグメント番号1番から10番までのセグメントデータが保持されているものとする。
この場合、送信装置100は、ステップS1003の処理において、送信候補以外で、受信装置200に送信済みのセグメントデータよりも後に再生されるセグメントデータのうち、より再生順序が前のもの(セグメント番号8番)を選択する。そして選択したセグメント番号に対応する特定情報を送信するプレイリストに追加する。この場合、プレイリストには、セグメント番号6番、7番、及び、8番の特定情報が含まれることとなる。
このように送信装置100は、前回送信したプレイリストに含まれる特定情報に対応するセグメントデータのうち、より再生順序が前のセグメントデータが受信装置200に送信された場合、以下のように判断する。すなわち、受信装置200が、再生順序がより前のセグメントデータを要求していると送信装置100が判断する。そして、次に送信するプレイリストに含まれる特定情報のセグメント番号の連続性を優先して、プレイリストに含まれる特定情報を決定することができる。
一方、前回送信したプレイリストに、2以上の特定情報が含まれていない場合(S901においてNoの場合)は、ステップS904の処理を行う。
またステップS902において、前回送信したプレイリストに含まれる特定情報に対応するセグメントデータのうちより前に再生されるべきセグメントデータが、受信装置200に送信されていないと判定された場合も、ステップS904の処理を行う。
ステップS904では、送信装置100は送信候補数と、所定数Nとを比較し、その差の数だけ特定情報をプレイリストに追加する。この所定数は、プレイリストに特定情報を含めることができる数の上限値である。本実施例では、例えば、所定数は3であるものとする。
追加する特定情報に対応するセグメントデータは、送信装置100が記憶部103に保持する複数のセグメントデータのうち、受信装置200に送信済みのセグメントデータよりも後に再生されるセグメントデータから選択することができる。ステップS904では、送信候補以外で、再生される順序がより後のセグメントデータを選択する。
例えば、前回送信したプレイリストにはセグメント番号5番、6番、7番の特定情報が記載されていたものとする。そしてこのプレイリストを受信した受信装置200は、セグメント番号7番のセグメントデータを取得し、セグメント番号5番の特定情報の取得を行わなかったものとする。
そして、S701からS901までの処理、あるいは、S701からS902までの処理により、特定情報の送信候補の数が0となっている(いずれの特定情報も送信候補となっていない)ものとする。また、セグメント番号7番のセグメントデータまで、受信装置200に送信されているものとする。さらに、送信装置100には、セグメント番号1番から15番までのセグメントデータが保持されているものとする。
この場合送信装置100は、ステップS1003において、送信候補以外で、受信装置200に送信済みのセグメントデータよりも後に再生されるセグメントデータのうち、より再生順序が後のもの(セグメント番号13番、14番、及び、15番)を選択する。そして選択したセグメント番号に対応する特定情報を送信するプレイリストに追加する。この場合、プレイリストには、セグメント番号13番、14番、及び、15番の特定情報が含まれることとなる。
このように送信装置100は、前回送信したプレイリストに含まれる特定情報に対応するセグメントデータのうち、より再生順序が後のセグメントデータが受信装置200に送信された場合、以下のように判断する。すなわち、受信装置200は再生順序がより後のセグメントデータを要求していると送信装置100が判断する。そして、次に送信するプレイリストに含まれる特定情報が、より新たに生成されたセグメントデータに対応した特定情報となるようにして、プレイリストに含まれる特定情報を決定することができる。
以上のようにして、受信装置200が、再生順序がより前のセグメントデータの取得を要求しているか、再生順序がより後のセグメントデータの取得を要求しているかを送信装置100が判定することができる。そして送信装置100は、判定結果に応じて、受信装置200の要求に合わせた特定情報を受信装置200に送信することができる。このようにして、第1のメタデータが受信装置が取得可能なセグメントデータとして含む複数のセグメントデータのうち、受信装置が要求したセグメントデータに応じて決定されるセグメントデータを第2のメタデータに含めることができる。
なお、再生順序がより前のセグメントデータの取得を要求するか、再生順序がより後のセグメントデータの取得を要求するかを受信装置200が送信装置100へ予め通知してもよい。この場合、送信装置100は受信装置200からの通知内容を基に、再生順序がより前のセグメントデータの取得を要求するか、再生順序がより後のセグメントデータの取得を要求するかを決定することができる。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。