実施形態1.
本発明の第1の実施形態のマルチメディアデータ送受信システム100について、図面を参照して説明する。図1は、本発明の第1の実施形態のマルチメディアデータ送受信システム100の構成例を示すブロック図である。
図1に示すように、本発明の第1の実施形態のマルチメディアデータ送受信システム100は、送信側端末200と受信側端末300とを含む。送信側端末200と受信側端末300とは、それぞれ通信ネットワーク400に接続されている。
そして、送信側端末200は、キャプチャ部201、エンコーダ選択部202、メインエンコーダ203、バックアップエンコーダ204、ファイル出力部205、ファイル送信部206、スループットフィードバック部207、メインエンコーダ初期化部208、およびバックアップエンコーダ初期化部209を含む。
なお、エンコーダ選択部202、ファイル出力部205、ファイル送信部206、スループットフィードバック部207、メインエンコーダ初期化部208、およびバックアップエンコーダ初期化部209は、例えば、プログラム制御に従って処理を実行するCPU(Central Processing Unit)によって実現される。また、キャプチャ部201、メインエンコーダ203、およびバックアップエンコーダ204は、例えば、プログラム制御に従って処理を実行する画像処理モジュールによって実現される。ファイル送信部206は、例えば、プログラム制御に従って処理を実行する通信モジュールによって実現される。そして、エンコーダ選択部202およびバックアップエンコーダ初期化部209が行う通信は、当該通信モジュールによって行われてもよい。
キャプチャ部201は、カメラ(図示せず)が撮影して生成された動画像の映像データおよび音声データによる映像フレームおよび音声フレーム(以下、単にフレームともいう)を取得する。
エンコーダ選択部202は、キャプチャ部201が取得したフレームをエンコードするエンコーダを選択し、選択したエンコーダに当該映像フレームおよび音声フレームを入力する。
メインエンコーダ203およびバックアップエンコーダ204は、エンコーダ選択部202が入力したフレームをエンコードするエンコーダであり、エンコード後のフレームをファイル出力部205に入力する。なお、バックアップエンコーダ204は、メインエンコーダ203よりも低いエンコードビットレートに設定されている。したがって、バックアップエンコーダ204によってエンコードされた映像フレームおよび音声フレームは、メインエンコーダ203によってエンコードされた映像フレームおよび音声フレームよりもビットレートが低い。メインエンコーダ203およびバックアップエンコーダ204は、例えば、一般のエンコーダである。
ファイル出力部205は、メインエンコーダ203またはバックアップエンコーダ204が入力したフレームを所定の再生時間単位にファイル化してファイル送信部206に入力する。ファイル出力部205によってファイル送信部206に入力されたファイルは、つまり、チャンクである。
ファイル送信部206は、ファイル出力部205が入力したファイルを受信側端末300へ送信する。
スループットフィードバック部207は、ファイル送信部206がファイルを受信側端末300へ送信した場合に、送信スループットを算出して、算出結果をメインエンコーダ初期化部208に入力する。
メインエンコーダ初期化部208は、スループットフィードバック部207が入力した送信スループットに応じて、メインエンコーダ203を初期化する。
バックアップエンコーダ初期化部209は、受信側端末300から送信された通知に応じて、バックアップエンコーダ204を初期化する。
また、受信側端末300は、ファイル受信部301、ファイル出力部302、および到着遅延検知部303を含む。
なお、到着遅延検知部303は、例えば、プログラム制御に従って処理を実行するCPUによって実現される。ファイル受信部301は、例えば、プログラム制御に従って処理を実行する通信モジュールによって実現される。そして、到着遅延検知部303が行う通信は、当該通信モジュールによって行われてもよい。
ファイル受信部301は、送信側端末200から送信されたファイルを通信ネットワーク400を介して受信する。
ファイル出力部302は、ファイル受信部301が受信したファイルを出力する。具体的には、ファイル出力部302は、例えば、ファイル受信部301が受信したファイルを、外部の機器に出力したり、デコードしてデコード後のフレームに再生処理を施して映像および音声を再生して出力したりする。
到着遅延検知部303は、ファイル受信部301が受信したファイルの通信ネットワーク400における遅延を検知し、検知結果を送信側端末200に通知する。
次に、本発明の第1の実施形態のマルチメディアデータ送受信システム100の動作について説明する。図2および図3は、本発明の第1の実施形態のマルチメディアデータ送受信システム100における送信側端末200の動作を示すフローチャートである。
送信側端末200が起動すると、メインエンコーダ初期化部208は、メインエンコーダ203を初期化して所定のエンコードビットレートを設定する(ステップS101)。
また、キャプチャ部201は、カメラが撮影して生成された動画像のフレームを取得する(ステップS102)。そして、キャプチャ部201は、エンコーダ選択部202に、ステップS102の処理で取得したフレームを入力する。
キャプチャ部201が前回以前のステップS102の処理で取得したフレームであって今回のステップS102の処理で取得したフレームと後述する処理で1つにファイル化されるフレームが、バックアップエンコーダ204によって既にエンコードされていた場合に(ステップS103のY)、ステップS110の処理に移行し、そうでない場合に(ステップS103のN)、ステップS104の処理に移行する。
バックアップエンコーダ初期化部209は、ステップS104の処理で、受信側端末300から送信された第1のフィードバック通知を受信した場合に(ステップS104のY)、バックアップエンコーダ204を初期化して(ステップS105)、ステップS109の処理に移行する。なお、第1のフィードバック通知とは、受信側端末300が、ファイルの到着が遅延したと判断した場合にその旨を送信側端末200に1回目に報告する通知である。第1のフィードバック通知によって、受信側端末300が後述するステップS404の処理で算出したスループットが通知されてもよい。そして、バックアップエンコーダ初期化部209は、ステップS105の処理で、当該通知されたスループットに応じたパラメータをバックアップエンコーダ204に設定してもよい。
また、エンコーダ選択部202は、受信側端末300から送信された第2のフィードバック通知を受信した場合に(ステップS104のN,S106のY)、ステップS107の処理に移行する。エンコーダ選択部202は、受信側端末300から第1のフィードバック通知も第2のフィードバック通知も受信しなかった場合に(ステップS104のN,S106のN)、ステップS109の処理に移行する。なお、第2のフィードバック通知とは、受信側端末300が、ファイルの到着が遅延したと判断した場合にその旨を送信側端末200に2回目以降に報告する通知であり、詳しくは後述する。
エンコーダ選択部202は、キャプチャ部201が前回以前のステップS102の処理で取得して今回のステップS102の処理で取得したフレームと後述する処理で1つにファイル化されるフレームが、メインエンコーダ203およびバックアップエンコーダ204のいずれかによってエンコードされたか否かを判定する(ステップS107)。
エンコーダ選択部202は、当該フレームが既にエンコードされたと判定した場合に(ステップS107のY)、ステップS108の処理に移行し、そうでない場合に(ステップS107のN)、ステップS110の処理に移行する。
エンコーダ選択部202は、ステップS108の処理で、エンコードに、メインエンコーダ203およびバックアップエンコーダ204のいずれを用いるのかを決定する(ステップS108)。なお、エンコーダ選択部202がメインエンコーダ203およびバックアップエンコーダ204のいずれを用いるのかを決定する方法については後述する。
エンコーダ選択部202は、エンコードに、メインエンコーダ203を用いると決定した場合に(ステップS108のY)、メインエンコーダ203に、キャプチャ部201が入力したフレームを入力する。メインエンコーダ203は、エンコーダ選択部202が入力したフレームをエンコードし(ステップS109)、ファイル出力部205に、エンコード後のフレームを入力して、ステップS111の処理に移行する。
また、エンコーダ選択部202は、エンコードに、バックアップエンコーダ204を用いると決定した場合に(ステップS108のN)、バックアップエンコーダ204に、キャプチャ部201が入力したフレームを入力する。バックアップエンコーダ204は、エンコーダ選択部202が入力したフレームをエンコードし(ステップS110)、ファイル出力部205に、エンコード後のフレームを入力して、ステップS111の処理に移行する。
ファイル出力部205は、操作部(図示せず)にユーザから終了操作がなされていない場合に(ステップS111のN)、入力されたエンコード後のフレームの数が所定の数未満であるときに(ステップS112のN)、ステップS102の処理に移行する。すなわち、送信側端末200は、操作部(図示せず)にユーザから終了操作がなされていない場合に(ステップS111のN)、ファイル出力部205に入力されたエンコード後のフレームの数がチャンクを構成する所定の数に達するまで、ステップS102〜S112の処理を繰り返す。
ファイル出力部205は、操作部にユーザから終了操作がなされておらず、入力されたエンコード後のフレームの数が所定の数に達した場合に(ステップS111のN,S112のY)、それらフレームを1つのファイルにして、ファイル送信部206に入力する(ステップS113)。なお、当該ファイルは、例えば、マルチメディアデータによるファイル(チャンク)である。また、例えば、ファイル出力部205は、当該ファイルが送信される場合における先頭に、当該ファイルのファイルサイズを示すファイルサイズ情報、および当該ファイルに含まれる各フレームに基づいて映像および音声が再生された場合の再生時間を示す再生時間情報を付加する。そして、例えば、ファイル出力部205は、当該ファイルが送信される場合における後尾に、当該ファイルが終了することを示す終了コードを付加する。
そして、ファイル送信部206は、ステップS113の処理でファイル出力部205が入力したファイルを受信側端末300へ送信する(ステップS114)。
スループットフィードバック部207は、ファイル送信部206がステップS114の処理でファイルを送信したときの送信スループットを算出する。具体的には、例えば、スループットフィードバック部207が、ファイル送信部206がステップS114の処理で送信したファイルのデータ量を当該送信に要した時間で除して算出した商が送信スループットである。
そして、スループットフィードバック部207は、メインエンコーダ初期化部208に、算出した送信スループットを示すスループット情報を入力する(ステップS115)。メインエンコーダ初期化部208は、次回のステップS101の処理で、ステップS115の処理で入力されたスループット情報が示す送信スループットに基づいて、エンコードビットレートを設定する。具体的には、例えば、メインエンコーダ初期化部208は、次回のステップS101の処理で、ステップS115の処理で入力されたスループット情報が示す送信スループットの値(例えば、1.0Mbps(Mega bit per second))を、エンコードビットレートの値に設定する。
ファイル出力部205は、操作部にユーザから終了操作がなされた場合に(ステップS111のY)、処理を終了する。なお、送信側端末200は、操作部にユーザから終了操作がなされた場合に(ステップS111のY)、ファイル出力部205によるステップS113の処理、ファイル送信部206によるステップS114の処理、およびスループットフィードバック部207によるステップS115の処理が完了してから、処理を終了するように構成されていてもよい。
エンコーダ選択部202が、ステップS108の処理で、メインエンコーダ203およびバックアップエンコーダ204のいずれを用いるのかを決定する方法について説明する。図4は、エンコーダ選択部202が、メインエンコーダ203およびバックアップエンコーダ204のいずれを用いるのかを決定する方法を示すフローチャートである。
本例では、エンコーダ選択部202が、メインエンコーダ203およびバックアップエンコーダ204のうちいずれか一方を、キャプチャ部201がステップS102の処理で取得したフレームをエンコードするエンコーダに決定する。
エンコーダ選択部202は、処理の初期設定を行う(ステップS201)。具体的には、エンコーダ選択部202は、ステップS113の処理で1つにファイル化されるフレームのうち先頭のフレームをメインエンコーダ203またはバックアップエンコーダ204(以下、エンコーダ203,204と総称することがある)がエンコードしたフレームのビット数を、n[bit]にセットする。なお、当該先頭フレームについてステップS201の処理が行われる場合に、エンコーダ選択部202は、管理者が予め指定した値をn[bit]にセットするように構成されていてもよい。
そして、エンコーダ選択部202は、フレームのエンコードをメインエンコーダ203およびバックアップエンコーダ204のいずれが行うのかの判定に用いる閾値Xを、X=n/2[bit]にセットする。
また、エンコーダ選択部202は、ステップS113の処理で1つにファイル化されるフレームの順序に応じた値をiにセットする。したがって、本処理が行われるフレームが、ステップS102の処理で取得された5番目のフレームであれば、iに5がセットされる。
エンコーダ選択部202は、ステップS113の処理で1つにファイル化される複数のフレームに応じて、本処理が最初に行われる場合に、第2のフィードバック通知を受信したときに処理されているフレームの順序に応じた値Iをリセットする。
また、エンコーダ選択部202は、第2のフィードバック通知を受信した後に、強制的にバックアップエンコーダ204にフレームのエンコードを行わせるか否かの判定値Mに、例えば、5をセットする。
そして、エンコーダ選択部202は、Iに値がセットされていなければ、Iにiの値をセットする(ステップS202)。なお、図4に示す本処理は、ステップS106の処理で、受信側端末300から送信された第2のフィードバック通知を受信したと判定された場合に行われる。したがって、Iには、ステップS113の処理で1つにファイル化される複数のフレームのうち、第2のフィードバック通知を最初に受信したときに処理されているフレームの順序に応じた値がセットされる。
エンコーダ選択部202は、ステップS102の処理でキャプチャ部201が取得したフレームのビット数であるmがXよりも大きい値である場合に(ステップS203のY)、ステップS205の処理に移行し、そうでない場合に(ステップS203のN)、ステップS204の処理に移行する。
エンコーダ選択部202は、ステップS204の処理で、i−Iの値が判定値Mの値よりも大きい場合に(ステップS204のY)、ステップS205の処理に移行し、そうでない場合に(ステップS204のN)、ステップS206の処理に移行する(ステップS204)。
そして、エンコーダ選択部202は、ステップS205の処理で、処理対象のフレームであるi番目のフレームをバックアップエンコーダ204がエンコードすると決定する(ステップS205)。また、エンコーダ選択部202は、ステップS206の処理で、処理対象のフレームであるi番目のフレームをメインエンコーダ203がエンコードすると決定する(ステップS206)。
なお、i−Iの値が判定値Mの値(本例では、5)よりも大きいということは、例えば、ステップS113の処理で1つにファイル化されるフレームのうち、2(I)番目のフレームの処理中に第2のフィードバック通知が受信されたにもかかわらず、8(i)番目のフレームの処理も、メインエンコーダ203でエンコードされるということである。そうすると、例えば、ステップS113の処理で1つにファイル化されるフレームが10個である場合に、次回以降のステップS203の処理でYと判定して残フレームである9番目のフレームおよび10番目のフレームのエンコードにバックアップエンコーダ204を用いたとしても、当該ファイルのサイズの増大を適切に抑制することができない。すると、当該ファイルの到着の遅延を適切に抑制することができない。そこで、本例では、ステップS203の処理でYと判定されなくても、i−Iの値が判定値Mの値(本例では、5)よりも大きい場合には、フレームのエンコードにバックアップエンコーダ204を用いることにより、当該ファイルのサイズの増大を適切に抑制することができる。よって、当該ファイルの到着の遅延を適切に抑制することができる。
次に、受信側端末300の動作について説明する。図5は、本発明の第1の実施形態のマルチメディアデータ送受信システム100における受信側端末300の動作を示すフローチャートである。
まず、ファイル受信部301は、送信側端末200から送信されたファイルを通信ネットワーク400を介して受信する(ステップS301)。なお、ファイル受信部301は、各ファイルごとに、当該ファイルを受信開始してから経過した時間を計測しているとする。
そして、到着遅延検知部303は、ファイル受信部301がステップS301の処理で受信したファイルが通信ネットワーク400において遅延したか否かを判定する(ステップS302)。なお、到着遅延検知部303が、ファイル受信部301がステップS301の処理で受信したファイルが通信ネットワーク400において遅延したか否かを判定する処理については後述する。
到着遅延検知部303が、ファイル受信部301がステップS301の処理で受信したファイルが通信ネットワーク400において遅延したと判定した場合に(ステップS302のY)、ステップS303の処理に移行し、そうでない場合に(ステップS302のN)、ステップS306の処理に移行する。
到着遅延検知部303は、ステップS303の処理で、今回のステップS301の処理で受信を開始したファイルの受信中に第1のフィードバック通知を行った場合に(ステップS303のY)、ステップS305の処理に移行し、そうでない場合に(ステップS303のN)、ステップS304の処理に移行する。
そして、到着遅延検知部303は、ステップS304の処理で、第1のフィードバック通知を送信側端末200に送信し(ステップS304)、ステップS306の処理に移行する。また、到着遅延検知部303は、ステップS305の処理で、第2のフィードバック通知を送信側端末200に送信し(ステップS305)、ステップS306の処理に移行する。なお、到着遅延検知部303は、第1のフィードバック通知および第2のフィードバック通知として、後述するステップS404の処理で算出したスループットを送信側端末200に通知するように構成されていてもよい。
到着遅延検知部303は、ステップS306の処理で、ファイル受信部301がステップS301の処理で受信したファイルを構成するデータにおいて終了コードを読み込んだ場合に(ステップS306のY)、ステップS307の処理に移行し、そうでない場合に(ステップS306のN)、ステップS301の処理に戻り、ファイル受信部301に当該ファイルの残部を受信させる。
そして、ファイル出力部302が、ステップS307の処理で、ファイル受信部301が受信したファイルを出力する(ステップS307)。
到着遅延検知部303が、ステップS302の処理で、ファイル受信部301がステップS301の処理で受信したファイルが通信ネットワーク400において遅延したか否かを判定する処理について説明する。本例では、当該判定について、第1の処理と第2の処理とのうちいずれか一方を用いるのであるが、その両方について述べる。
まず、到着遅延検知部303が、ファイル受信部301がステップS301の処理で受信したファイルが通信ネットワーク400において遅延したか否かを判定する第1の処理について説明する。図6は、到着遅延検知部303が、ファイル受信部301がステップS301の処理で受信したファイルが通信ネットワーク400において遅延したか否かを判定する第1の処理を示すフローチャートである。
到着遅延検知部303は、第1の処理で、ファイル受信部301がステップS301の処理で受信したファイルの先頭に付加されているファイルサイズ情報および再生時間情報を読み出した場合に(ステップS401のY)、ステップS402の処理に移行し、そうでない場合に、ステップS403の処理に移行する。本例では、ステップS301の処理で受信したファイルのファイルサイズは、ファイルサイズ情報によって200kバイトであることが示されているとする。また、本例では、ステップS301の処理で受信したファイルに基づいて映像および音声が再生された場合の再生時間は、再生時間情報によって2秒であることが示されているとする。
そして、到着遅延検知部303は、ステップS402の処理で、ステップS401の処理で読み出したファイルサイズ情報および再生時間情報に基づいて、ファイル受信部301がステップS301の処理で受信したファイルを適切に受信するための最低スループットを決定し(ステップS402)、ステップS403の処理に移行する。
具体的には、本例では、再生時間が2秒となるファイルのファイルサイズが200kバイトである。そうすると、当該ファイルに基づく映像および音声の再生を停止させずに継続するためには、当該ファイルのうち10kバイト以上のデータを100ミリ秒毎に受信する必要がある。したがって、到着遅延検知部303は、ステップS402の処理で、本例における最低スループットを、10kバイト/100ミリ秒であると決定する。
到着遅延検知部303は、ステップS403の処理で、ファイル受信部301がステップS301の処理で受信したファイルのデータ量を積算する(ステップS403)。
そして、到着遅延検知部303は、ステップS403の処理で積算したデータ量と、ファイル受信部301がステップS301の処理でファイルの受信を開始してから経過した時間とに基づいて、スループットを算出(測定)する(ステップS404)。
具体的には、ファイル受信部301がステップS301の処理でファイルの受信を開始してから500ミリ秒経過するまでに30kバイトのデータを受信した場合に、到着遅延検知部303は、スループットが、30kバイト/500ミリ秒=6kバイト/100ミリ秒であると算出する。
到着遅延検知部303は、ステップS404の処理で算出したスループットが、ステップS402の処理で決定した最低スループット未満であるか否かを判定する(ステップS405)。そして、到着遅延検知部303は、ステップS404の処理で算出したスループットが、ステップS402の処理で決定した最低スループット未満である場合に(ステップS405のY)、ステップS406の処理に移行し、そうでない場合に(ステップS405のN)、ステップS407の処理に移行する。
到着遅延検知部303は、ステップS406の処理で、ファイル受信部301がステップS301の処理で受信したファイルの到着が通信ネットワーク400において遅延したと判定して(ステップS406)、本処理を終了する。また、到着遅延検知部303は、ステップS407の処理で、ファイル受信部301がステップS301の処理で受信したファイルの到着が通信ネットワーク400において遅延していないと判定して(ステップS407)、本処理を終了する。
本例では、ステップS404の処理で算出したスループット6kバイト/100ミリ秒は、ステップS402の処理で決定した最低スループット10kバイト/100ミリ秒未満である。よって、到着遅延検知部303は、ステップS406の処理で、ファイル受信部301がステップS301の処理で受信したファイルが通信ネットワーク400において遅延したと判定する。
次に、到着遅延検知部303が、ファイル受信部301がステップS301の処理で受信したファイルが通信ネットワーク400において遅延したか否かを判定する第2の処理について説明する。図7は、到着遅延検知部303が、ファイル受信部301がステップS301の処理で受信したファイルが通信ネットワーク400において遅延したか否かを判定する第2の処理を示すフローチャートである。
到着遅延検知部303が第2の処理で行うステップS501,S502の処理は、図5に示す第1の処理におけるステップS401,S402の処理と同様であるので説明を省略する。
到着遅延検知部303は、ステップS503の処理で、ファイル受信部301がステップS301の処理で受信したファイルのデータ量を積算する(ステップS503)。
そして、到着遅延検知部303は、スループットを算出する所定のタイミングが到来した場合に(ステップS504のY)、ステップS505の処理に移行し、そうでない場合に(ステップS504のN)、ステップS503の処理に移行して、ファイル受信部301がステップS301の処理で受信したファイルのデータ量の積算を継続する。
なお、スループットを算出する所定のタイミングとは、例えば、ファイル受信部301がステップS301の処理でファイルの受信を開始してから500ミリ秒毎のタイミングである。
そして、到着遅延検知部303は、ステップS505の処理で、ステップS503の処理で積算したデータ量とスループットを算出する所定のタイミングに応じた時間とに基づいて、スループットを算出する(ステップS505)。
具体的には、前回の所定のタイミングが到来してから今回の所定のタイミングが到来するまでの500ミリ秒間にファイル受信部301がステップS301の処理で受信してステップS503の処理で積算されたデータ量が30kバイトである場合に、到着遅延検知部303は、スループットが、30kバイト/500ミリ秒=6kバイト/100ミリ秒であると算出する。
到着遅延検知部303は、ステップS505の処理で算出したスループットが、ステップS502の処理で決定した最低スループット未満であるか否かを判定する(ステップS506)。そして、到着遅延検知部303は、ステップS505の処理で算出したスループットが、ステップS502の処理で決定した最低スループット未満である場合に(ステップS506のY)、ステップS507の処理に移行し、そうでない場合に(ステップS506のN)、ステップS508の処理に移行する。
到着遅延検知部303は、ステップS507の処理で、ファイル受信部301がステップS301の処理で受信したファイルの到着が通信ネットワーク400において遅延したと判定して(ステップS507)、ステップS509の処理に移行する。また、到着遅延検知部303は、ステップS508の処理で、ファイル受信部301がステップS301の処理で受信したファイルの到着が通信ネットワーク400において遅延していないと判定して(ステップS508)、ステップS509の処理に移行する。
到着遅延検知部303は、ステップS509の処理で、ステップS503の処理で積算した、ファイル受信部301がステップS301の処理で受信したファイルのデータ量をリセットする(ステップS509)。
本例では、ステップS505の処理で算出したスループット6kバイト/100ミリ秒は、ステップS502の処理で決定した最低スループット10kバイト/100ミリ秒未満である。よって、到着遅延検知部303は、ステップS507の処理で、ファイル受信部301がステップS301の処理で受信したファイルが通信ネットワーク400において遅延したと判定する。
なお、第1の処理では、受信ファイルサイズの累計値と予測受信累計ファイルサイズとを比較することで到着遅延の判定が行われる。したがって、スループットの瞬間的な変動が平滑化されて判定に用いられる。よって、偶発的な理由によるスループットの瞬間的な変動に基づくエンコードビットレートの変動を抑制することができる。このことは、第1の処理は、偶発的な理由によるスループットの瞬間的な低下に基づくエンコードビットレートの低下を抑制することができるという効果を発揮することを意味する。
また、第2の処理では、単位時間ごとに得られる受信ファイルサイズと予測受信累計ファイルサイズとを比較することで到着遅延の判定が行われる。したがって、第2の処理は、エンコードビットレートを、スループットの変動に応じて迅速に対応させることができるという効果を発揮する。
本実施形態におけるマルチメディアデータ送受信システム100の動作の具体例について説明する。
マルチメディアデータ送受信システム100の送信側端末200は、例えば、マイクロフォンおよび動画像を撮影可能なカメラを備えた携帯端末装置や、そのようなマイクロフォンおよびカメラが外部接続されたパーソナルコンピュータ等の端末装置である。
マルチメディアデータ送受信システム100の受信側端末300は、例えば、パーソナルコンピュータ等の端末装置や、スマートフォンやタブレット端末等の携帯端末装置、サーバ装置である。
通信ネットワーク400は、インターネットやモバイル通信ネットワークなどのWAN(Wide Area Network)によって構成される通信ネットワークである。
送信側端末200は、フレームをN(Nは自然数)番目のファイルにファイル化した後、N番目のファイルの送信と並行してN+1番目のファイルを構成するフレームのエンコード処理を開始する。このことは、受信側端末300がN番目のファイルを受信しているときに、送信側端末200がN+1番目のファイルを構成するフレームをエンコード処理中であることを表している。
ここで、ビットレートが1.2[Mbps]にエンコードされたフレームによって構成されたN番目のファイルおよびN+1番目のファイルが、1.2[Mbps]のスループットで送信されたとする。
送信側端末200が、1.2[Mbps]のエンコードビットレートのN+1番目のファイルを送信するとともに、1.2[Mbps]のエンコードビットレートでN+2番目のファイルを構成するフレームのエンコード処理を行っている場合に、通信ネットワーク400におけるスループットが1.0[Mbps]に低下したとする。スループットが低下したときに、受信側端末300においてN+1番目のファイル受信中に、到着遅延検知部303が、到着遅延を検知する。到着遅延検知部303は、通信ネットワーク400のスループットを送信側端末200に第1のフィードバック通知として送信する。
送信側端末200のバックアップエンコーダ初期化部209は、受信側端末300の到着遅延検知部303から第1のフィードバック通知として通信ネットワーク400のスループットを受け取る。そして、バックアップエンコーダ初期化部209は、受け取ったスループットの値に基づいて、当該値に応じた値をエンコードビットレートとして各パラメータを定義し、バックアップエンコーダ204を初期化する。
次に受信側端末300の到着遅延検知部303が到着遅延を検知した場合に、N+1番目のファイルの受信中に既に第1のフィードバック通知を送信しているので、到着遅延検知部303は、送信側端末200に第2のフィードバック通知を送信する。
第2のフィードバック通知を受け取ったN+2番目のファイルを構成する一部のフレームをエンコード処理中の送信側端末200のエンコーダ選択部202が図4に例示した処理でバックアップエンコーダ204を用いると判定した場合に、バックアップエンコーダ204が当該ファイルを構成する残部のフレームのエンコード処理を行う。
送信側端末200は、N+2番目のファイルを構成するフレームのエンコード処理を1.2[Mbps]で開始したが、エンコード処理中に通信ネットワーク400のスループットに応じてエンコーダをバックアップエンコーダ204に変更してより低いエンコードビットレートで当該ファイルを構成するフレームの残部をエンコードしたので当該ファイルは到着が遅延することなく、受信側端末300に到着する。
本実施形態によれば、送信側が、エンコードに用いるエンコーダを、メインエンコーダ203と、当該メインエンコーダ203よりも低いエンコードビットレートのバックアップエンコーダ204との間で、通信状態の変化に基づく受信側からの通知に応じて切り替える。したがって、通信ネットワーク400における通信状態が悪化した場合に、エンコードに用いるエンコーダを、メインエンコーダ203からバックアップエンコーダ204に切り替えることにより、受信側における再生の停止を抑制することができる。
また、本実施形態によれば、メインエンコーダ203およびバックアップエンコーダ204として一般のエンコーダを採用することができるので、チャンクの途中でビットレートを変更可能な特殊なコーデックを用いた場合よりもコストを低減することができる。
本実施形態によれば、メインエンコーダ203のエンコード中に当該メインエンコーダ203を再設定したり再起動したりすることなく、円滑に、エンコードビットレートを変更することができる。
実施形態2.
次に、本発明の第2の実施形態のマルチメディアデータ送受信システム500について、図面を参照して説明する。図8は、本発明の第2の実施形態のマルチメディアデータ送受信システム500の構成例を示すブロック図である。
図8に示すように、本発明の第2の実施形態のマルチメディアデータ送受信システム500は、図1に示す第1の実施形態のマルチメディアデータ送受信システム100における送信側端末200および受信側端末300に加えて、中継サーバ600を含む。そして、図1に示すように、中継サーバ600は、通信ネットワーク400に接続されている。
なお、送信側端末200および受信側端末300は、第1の実施形態のマルチメディアデータ送受信システム100における構成と同様なため、対応する各要素には図1と同じ符号を付して説明を省略する。
中継サーバ600は、送信側端末200によって送信されたファイルを通信ネットワーク400を介して受信してトランスコードする。そして、中継サーバ600は、トランスコード後のファイルを受信側端末300に送信する。
中継サーバ600の構成について説明する。図9は、本発明の第2の実施形態のマルチメディアデータ送受信システム500における中継サーバ600の構成例を示すブロック図である。図9に示すように、本発明の第2の実施形態のマルチメディアデータ送受信システム500における中継サーバ600は、アップロード受付処理部610とコンテンツ配信処理部620とを含む。
そして、アップロード受付処理部610は、到着遅延検知部611およびアップロード受付部612を含む。
到着遅延検知部611は、本発明の第1の実施形態における到着遅延検知部303に相当する処理を行う。アップロード受付部612は、本発明の第1の実施形態におけるファイル受信部301に相当する処理を行う。
また、コンテンツ配信処理部620は、トランスコード部621およびコンテンツ配信部622を含む。
トランスコード部621は、アップロード受付部612が通信ネットワーク400を介して送信側端末200から受信したファイルを、通信ネットワーク400における受信側端末300との間の通信状態に応じてトランスコードする。つまり、本例においてトランスコード部621は、メインエンコーダ203またはバックアップエンコーダ204によってエンコードされたフレームをデコードすることなく再度エンコード(トランスコード)する。なお、トランスコード部621は、メインエンコーダ203またはバックアップエンコーダ204によってエンコードされたフレームをデコードしてから再度エンコードしてもよい。
コンテンツ配信部622は、本発明の第1の実施形態におけるファイル出力部302に相当する処理を行う。
中継サーバ600の動作について説明する。図10は、本発明の第2の実施形態のマルチメディアデータ送受信システム500における中継サーバ600がファイルを受信する動作を示すフローチャートである。
図10に示す処理のうち、ステップS601〜S605の処理は、図5に示す第1の実施形態のステップS301〜S305における処理と同様なため説明を省略する。なお、第1の実施形態におけるファイル受信部301の処理は、アップロード受付部612によって行われる。また、第1の実施形態における到着遅延検知部303の処理は、到着遅延検知部611によって行われる。
そして、本実施形態では、到着遅延検知部611が、ステップS606の処理で、アップロード受付部612がステップS601の処理で受信した、ファイルを構成するデータにおいて終了コードを読み込んだ場合に(ステップS606のY)、処理を終了する。
図11は、本発明の第2の実施形態のマルチメディアデータ送受信システム500における中継サーバ600がファイルを送信する動作を示すフローチャートである。
トランスコード部621は、アップロード受付部612がステップS601の処理で受信したファイルをトランスコードし(ステップS701)、トランスコード後のファイルを記憶手段(図示せず)に記憶させる(ステップS702)。なお、記憶手段には、トランスコード部621に設定するビットレートがリスト化されて登録されたトランスコードレートリストが記憶されているとする。そして、トランスコード部621は、記憶手段に記憶されているトランスコードレートリストに登録されているそれぞれのビットレートに、当該ファイルをトランスコードする。したがって、トランスコードレートリストに3種類のビットレートが登録されている場合に、トランスコード部621は、アップロード受付部612がステップS601の処理で受信したファイルにもとづいて、3種類のビットレートにそれぞれトランスコードされたファイルを生成して記憶手段にそれぞれ記憶させる。
コンテンツ配信部622は、受信側端末300から当該ファイルの送信を要求された場合に(ステップS703のY)、当該要求に応じて記憶手段に記憶されている当該ファイルを受信側端末300に送信する(ステップS704)。なお、コンテンツ配信部622は、例えば、ステップS704の処理で、記憶手段に記憶されている当該ファイルのうち、最も高いビットレートにトランスコードされているファイルを送信するように構成されていてもよい。
コンテンツ配信部622は、当該ファイルの送信中に受信側端末300から第1のフィードバック通知を受信したときに(ステップS705のY)、今回のステップS704の処理で送信開始したファイルの次に送信するファイルを、当該ファイルのビットレートよりも低いビットレートにトランスコードすることに決定する(ステップS706)。なお、トランスコード部621は、当該決定がなされた場合に、当該次に送信するファイルを当該ビットレートにトランスコードする処理を開始してもよい。
また、コンテンツ配信部622は、当該ファイルの送信中に受信側端末300から第2のフィードバック通知を受信したときに(ステップS707のY)、当該ファイルの次に、ステップS706の処理における決定結果に基づくビットレートにトランスコードされたファイルを送信することに決定する(ステップS708)。そして、コンテンツ配信部622は、ステップS704の処理に移行して、当該ファイルの送信を継続する(ステップS704)。
コンテンツ配信部622は、第1のフィードバック通知および第2のフィードバック通知を受信しなかったとき(ステップS705のN,S707のN)、ファイルの送信が終了した場合に(ステップS709のY)、処理を終了し、そうでない場合に(ステップS709のN)、ステップS704の処理に移行して当該ファイルの送信を継続する。
本実施形態におけるマルチメディアデータ送受信システム500の動作の具体例について説明する。
マルチメディアデータ送受信システム500においても、送信側端末200は、例えば、マイクロフォンおよび動画像を撮影可能なカメラを備えた携帯端末装置や、そのようなマイクロフォンおよびカメラが外部接続されたパーソナルコンピュータ等の端末装置である。
マルチメディアデータ送受信システム500においても、受信側端末300は、例えば、パーソナルコンピュータ等の端末装置や、スマートフォンやタブレット端末等の携帯端末装置、サーバ装置である。
マルチメディアデータ送受信システム500においても、通信ネットワーク400は、インターネットやモバイル通信ネットワークなどのWANによって構成される通信ネットワークである。
送信側端末200の動作、および受信側端末300の動作は、第1の実施形態における動作と同様なため説明を省略する。
中継サーバ600の記憶手段に記憶されているトランスコードレートリストには、800[kbps]、1.0[Mbps]、および1.2[Mbps]が登録されているとする。そして、中継サーバ600のトランスコード部621は、トランスコードレートリストに登録されているそれぞれのビットレートに、アップロード受付部612が受信したファイルをトランスコードして、記憶手段に記憶させる。したがって、記憶手段には、ビットレートが800[kbps]にトランスコードされたファイルと、ビットレートが1.0[Mbps]にトランスコードされたファイルと、ビットレートが1.2[Mbps]にトランスコードされたファイルとがそれぞれ記憶される。
コンテンツ配信部622は、受信側端末300の要求に応じて、記憶手段に記憶されている、ビットレートが互いに異なるファイルのうち、いずれか1つのファイルを送信する。
例えば、アップロード受付部612によってN番目に受信されたファイル(単にN番目のファイルともいう)、N+1番目に受信されたファイル(単にN+1番目のファイルともいう)、N+2番目に受信されたファイル(単にN+2番目のファイルともいう)が、1.0[Mbps]のビットレートにトランスコードされて、コンテンツ配信部622によって受信側端末300に順次送信される。なお、受信側端末300のファイル受信部301によって受信されてトランスコードされたN番目のファイルに基づく映像および音声がファイル出力部302によって再生されているときに、トランスコードされたN+1番目のファイルが受信側端末300のファイル受信部301によって受信され、N+2番目のファイルが中継サーバ600のアップロード受付処理部610によって受信される。
そして、中継サーバ600のアップロード受付処理部610によるN+2番目のファイルの受信が終了した場合に、当該N+2番目のファイルは、トランスコード部621によってトランスコードされる。
ここで、通信ネットワーク400において、受信側端末300と中継サーバ600との間のスループットが700[kbps]に変動したとする。
1.0[Mbps]にトランスコードされたN+1番目のファイルを受信中の受信側端末300において、到着遅延検知部303は到着遅延を検知する。そして、到着遅延検知部303は、スループットが700[kbps]であることを示す第1のフィードバック通知を中継サーバ600に送信する。
第1のフィードバック通知を通信ネットワーク400を介して受信した中継サーバ600のコンテンツ配信部622は、記憶手段に記憶されているN+2番目のファイルを、700[kbps]にトランスコードする。また、第1のフィードバック通知を通信ネットワーク400を介して受信した中継サーバ600のトランスコード部621は、第1のフィードバック通知が示す700[kbps]をトランスコードレートリストに登録する。
1.0[Mbps]にトランスコードされたN+1番目のファイルを受信中の受信側端末300において、到着遅延検知部303は到着遅延を検知する。そして、到着遅延検知部303は、第2のフィードバック通知を中継サーバ600に送信する。
第2のフィードバック通知を通信ネットワーク400を介して受信した中継サーバ600のコンテンツ配信部622は、700[kbps]にトランスコードされたN+2番目のファイルを受信側端末300に送信すると決定する。
そして、コンテンツ配信部622は、N+1番目のファイルの送信後に、700[kbps]にトランスコードされたN+2番目のファイルを受信側端末300に送信する。
したがって、トランスコードレートリストには、通信ネットワーク400において、受信側端末300と中継サーバ600との間のスループットに応じたビットレートが登録される。
そして、コンテンツ配信部622が、トランスコードされた当該ファイルを受信側端末300に送信する。よって、通信ネットワーク400において、受信側端末300と中継サーバ600との間のスループットに応じたビットレートでトランスコードされたファイルが送信される。
本実施形態によれば、中継サーバ600の記憶手段に、トランスコードレートリストに登録されているビットレートでトランスコードされたファイルがそれぞれ記憶される。そして、中継サーバ600は、受信側端末300の要求に応じて、記憶手段に記憶されているファイルを当該受信側端末300に送信する。
したがって、本実施形態によれば、ファイルを、複数の受信側端末に、通信ネットワーク400において互いに異なる通信回線を介してそれぞれ送信することが可能になる。
なお、送信側端末200がファイルを並行して複数の受信側端末に送信する場合に、送信側端末200と通信ネットワーク400との間の通信回線がボトルネックになり、送信側端末200におけるファイルのエンコードビットレートを低下させなければならなくなるおそれがある。それに対して、本実施形態のように、中継サーバ600が、通信ネットワーク400において互いに異なる通信回線を介して、複数の受信側端末にファイルを並行して送信すれば、そのような問題の発生を抑制することができる。
また、一の送信側端末200が複数の受信側端末に、互いに異なるエンコードビットレートのファイルをそれぞれ送信することは困難である。その理由は、多数のエンコーダを並行して動作させることは、多くのメモリリソースを必要とするからである。このことは、当該送信側端末200が携帯通信端末である場合に顕著である。しかし、本実施形態によれば、中継サーバ600は、記憶手段に記憶されているファイルを送信するので、そのような制約は生じず、複数の受信側端末に、互いに異なるエンコードビットレートのファイルをそれぞれ送信することができる。
実施形態3.
次に、本発明の第3の実施形態の通信端末20について、図面を参照して説明する。図12は、本発明の第3の実施形態の通信端末20の構成例を示すブロック図である。
図12に示すように、本発明の第3の実施形態の通信端末20は、第1のエンコーダ23、第2のエンコーダ24、エンコーダ決定部22、および送信部26を含む。
第1のエンコーダ23は、図1に示すメインエンコーダ203に相当する。第2のエンコーダ24は、図1に示すバックアップエンコーダ204に相当する。エンコーダ決定部22は、図1に示すエンコーダ選択部202に相当する。送信部26は、図1に示すファイル送信部206に相当する。
第1のエンコーダ23は、データをエンコードする。第2のエンコーダ24は、第1のエンコーダ23よりも低いビットレートでデータをエンコードする。
エンコーダ決定部22は、通信状態に応じて、データのエンコードに、第1のエンコーダ23と第2のエンコーダ24とのいずれを用いるのかを決定する。
送信部26は、エンコーダ決定部22によって決定された第1のエンコーダ23または第2のエンコーダ24によってエンコードされたデータを送信する。
本実施形態によれば、受信側における再生の停止を抑制することができる。