説明

コンテンツ再生システム

【課題】 ソフトウェア処理によって各受信装置のコンテンツ毎の再生開始時刻を同期させる。
【解決手段】 送信装置は、各受信装置に対して、同時刻に同じコンテンツの同じコンテンツデータを送信する。従って、各受信装置は、同時刻に同じコンテンツの同じコンテンツデータを受信する。受信装置は、次のコンテンツのコンテンツデータを最初に受信した受信開始時刻を特定し、受信開始時刻に、各受信装置において同じ時間に設定されている遅延時間を加算して、次のコンテンツの再生開始時刻を設定する。受信装置は、再生開始時刻になると、現在再生中のコンテンツの再生を終了させ、再生開始時刻になった次のコンテンツのコンテンツデータの再生を開始させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、送信装置と受信装置とを備えるコンテンツ再生システムに関する。
【背景技術】
【0002】
送信装置からネットワーク経由で複数の受信装置に対して、同じ時刻に同じコンテンツデータを送信することで、各受信装置で同時刻に同じコンテンツデータを一斉に再生するシステムが提案されている。ここで、各受信装置の再生クロックの周波数が異なっていると、送信装置が受信装置に同じ時刻に同じコンテンツデータを送信したとしても、受信装置が再生を継続するにつれて次第に、各受信装置のコンテンツの再生位置にずれが生じてくる。この問題を解決するために下記特許文献1においては、送信装置のクロックを基準にし、パケットに付加された時刻情報に基づいて、各受信装置が再生クロックをあわせる技術が提案されている。しかし、この技術ではクロックを合わせるためのハードウェア(VCXOによる電圧−周波数変換や、PLLの分周逓倍比の変更)等を追加する必要がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】US2007/0038999
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は上記従来の課題を解決するためになされたものであり、その目的は、ソフトウェア処理によって各受信装置のコンテンツ毎の再生開始時刻を同期させることができるコンテンツ再生システムを提供することである。
本発明の別の目的は、ソフトウェア処理によって受信装置及び送信装置のコンテンツ毎の再生開始時刻を同期させることができるコンテンツ再生システムを提供することである。
本発明は、上記いずれか一方の課題を解決すればよい。
【課題を解決するための手段】
【0005】
本発明の好ましい実施形態によるコンテンツ再生システムは、送信装置と、前記送信装置とネットワーク経由で接続可能な複数の受信装置とを備え、複数のコンテンツを連続して再生するコンテンツ再生システムであって、前記送信装置が、前記各受信装置に対して、同時刻に同じコンテンツの同じ再生位置のコンテンツデータを送信する送信部を有し、前記各受信装置が、前記送信装置からコンテンツデータを受信する受信部と、受信したコンテンツデータを再生する再生部と、次のコンテンツのコンテンツデータを最初に受信した受信開始時刻を特定する時刻特定部と、前記受信開始時刻に、各受信装置において同じ時間に設定されている遅延時間を加算して、次のコンテンツの再生開始時刻を設定する開始時刻設定部と、再生開始時刻になったか否かを判断する時刻判断部と、再生開始時刻になったと判断された場合、前記再生部に、現在再生中のコンテンツの再生を終了させ、再生開始時刻になった次のコンテンツのコンテンツデータの再生を開始させる再生制御部とを有する。
【0006】
送信装置は、各受信装置に対して、同時刻に同じコンテンツの同じ再生位置のコンテンツデータを送信する。従って、各受信装置は、ほぼ同時刻に同じコンテンツの同じ再生位置のコンテンツデータを受信する。受信装置は、次のコンテンツのコンテンツデータを最初に受信した受信開始時刻を特定し、受信開始時刻に、各受信装置において同じ時間に設定されている遅延時間を加算して、次のコンテンツの再生開始時刻を設定する。受信装置は、再生開始時刻になると、現在再生中のコンテンツの再生を終了させ、再生開始時刻になった次のコンテンツのコンテンツデータの再生を開始させる。従って、コンテンツの再生中に受信装置毎に再生位置が若干ずれたとしても、次のコンテンツの再生開始時刻は全ての受信装置で同期させることができる。
【0007】
好ましい実施形態においては、前記再生制御部が、再生開始時刻になったと判断された場合、前記再生部に、現在再生中のコンテンツのコンテンツデータを記憶領域から全て削除させ、再生開始時刻になった次のコンテンツのコンテンツデータを記憶領域に格納させることにより、再生開始時刻になった次のコンテンツのコンテンツデータを再生開始させる。
【0008】
次のコンテンツの再生開始時刻になったときに、バッファに前のコンテンツのコンテンツデータが未だ格納されている場合に、前のコンテンツのコンテンツデータを全て削除し、次のコンテンツのコンテンツデータをバッファに格納することで、再生開始時刻に次のコンテンツを再生開始することができる。
【0009】
好ましい実施形態においては、前記送信部が、コンテンツと共に、フェードアウトすることを示す情報、又は、フェードインすることを示す情報を送信し、前記再生部が、前のコンテンツの末尾部分をフェードアウトさせ、次のコンテンツの先頭部分をフェードインさせるように合成して再生し、前記開始時刻設定部が、前記受信開始時刻に前記遅延時間を加算し、次のコンテンツのコンテンツデータを最初に受信したときのバッファに蓄積されている残り再生時間を減算し、前記再生開始時刻を設定する。
【0010】
前のコンテンツをフェードアウトさせ、次のコンテンツをフェードインさせる場合、次のコンテンツの再生開始時刻にバッファ内に残存する前のコンテンツのコンテンツデータを削除することができない。前のコンテンツの途中部分が再生されなくなるからである。本例では、次のコンテンツのコンテンツデータを最初に受信したときのバッファに蓄積されている前のコンテンツの残り再生時間を、次のコンテンツの再生開始時刻から減算することで、この問題を解決することができる。
【0011】
好ましい実施形態においては、前記各受信装置が、再生開始時刻になったと判断された時点の現在再生中のコンテンツの残り再生時間を前記送信装置に送信する残り再生時間送信部をさらに有し、前記送信装置が、再生開始時刻になったと判断された時点の現在再生中のコンテンツの残り再生時間を前記各受信装置から受信する残り再生時間受信部と、前記各受信装置から受信した残り再生時間の最大値を特定し前記遅延時間に加算して、新たな前記遅延時間を算出する遅延時間算出部と、算出された新たな前記遅延時間を前記各受信装置に送信する遅延時間送信部とをさらに有し、前記各受信装置が、算出された新たな前記遅延時間を受信する遅延時間受信部をさらに有し、前記開始時刻設定部が、前記受信開始時刻に、算出された新たな前記遅延時間を加算して、次のコンテンツの再生開始時刻を設定する。
【0012】
受信装置は、再生開始時刻になったと判断された時点の現在再生中のコンテンツの残り再生時間(つまり再生できなかった残り再生時間)を送信装置に送信する。送信装置は、各受信装置から受信した残り再生時間の最大値を特定し遅延時間に加算して、新たな遅延時間を算出し、各受信装置に送信する。各受信装置は、新たな遅延時間を使用して再生開始時刻を設定する。従って、全ての受信装置がコンテンツを最後まで再生し終えることが出来るように、遅延時間を適宜補正することができる。
【0013】
好ましい実施形態においては、前記複数のコンテンツが連続した音声信号であって、前記受信装置が、前記送信装置から受信する基準クロックと、前記受信装置内で管理するクロックとの差情報を前記送信装置に送信する差情報送信部をさらに有し、前記送信装置が、前記受信装置から差情報を受信する差情報受信部と、受信した差情報が所定値以上であり、かつ、音声信号のレベルが無音と判断される所定レベル未満である場合に、当該箇所で別のコンテンツとして分離するコンテンツ分離部とをさらに有する。
【0014】
複数のコンテンツが連続した音声信号であっても、無音と判断される箇所で別のコンテンツとして分離することによって、上記のように別のコンテンツの再生開始時刻を受信装置間で同期させることができる。
【0015】
本発明の別の好ましい実施形態によるコンテンツ再生システムは、送信装置と、前記送信装置とネットワーク経由で接続可能な受信装置とを備え、複数のコンテンツを連続して再生するコンテンツ再生システムであって、前記送信装置が、前記受信装置および前記送信装置自身に対して、同時刻に同じコンテンツの同じ再生位置のコンテンツデータを送信する送信部を有し、前記受信装置及び前記送信装置が、前記送信装置からコンテンツデータを受信する受信部と、受信したコンテンツデータを再生する再生部と、次のコンテンツのコンテンツデータを最初に受信した受信開始時刻を特定する時刻特定部と、前記受信開始時刻に、前記受信装置および前記送信装置において同じ時間に設定されている遅延時間を加算して、新たなコンテンツの再生開始時刻を設定する開始時刻設定部と、再生開始時刻になったか否かを判断する時刻判断部と、再生開始時刻になったと判断された場合、前記再生部に、現在再生中のコンテンツの再生を終了させ、再生開始時刻になった次のコンテンツのコンテンツデータの再生を開始させる再生制御部とを有する。
【0016】
送信装置は、受信装置及び送信装置自身に対して、同時刻に同じコンテンツの同じ再生位置のコンテンツデータを送信する。従って、受信装置および送信装置は、同時刻に同じコンテンツの同じ再生位置のコンテンツデータを受信する。受信装置および送信装置は、次のコンテンツのコンテンツデータを最初に受信した受信開始時刻を特定し、受信開始時刻に、受信装置及び送信装置において同じ時間に設定されている遅延時間を加算して、次のコンテンツの再生開始時刻を設定する。受信装置および送信装置は、再生開始時刻になると、現在再生中のコンテンツの再生を終了させ、再生開始時刻になった次のコンテンツのコンテンツデータの再生を開始させる。従って、コンテンツの再生中に受信装置および送信装置で再生位置が若干ずれたとしても、次のコンテンツの再生開始時刻は受信装置および送信装置で同期させることができる。
【発明の効果】
【0017】
本発明の一実施形態によると、ソフトウェア処理によって各受信装置のコンテンツ毎の再生開始時刻を同期させることができるコンテンツ再生システムを提供することができる。
本発明の別の一実施形態によると、ソフトウェア処理によって受信装置及び送信装置のコンテンツ毎の再生開始時刻を同期させることができるコンテンツ再生システムを提供することができる。
【図面の簡単な説明】
【0018】
【図1】本発明のコンテンツ再生システムを示すブロック図である。
【図2】送信装置100を示す図である。
【図3】受信装置200を示す図である。
【図4】キュー管理テーブルを示す図である。
【図5】送信装置100の送信処理を示すフローチャートである。
【図6】受信装置100の受信処理を示すフローチャートである。
【図7】キューの状態の遷移を示す図である。
【図8】受信装置200の再生処理を示すフローチャートである。
【図9】受信装置200の再生開始待ち処理を示すフローチャートである。
【図10】各受信装置200の前の曲Xと次の曲Yとの再生を示す模式図である。
【図11】受信装置200の再生中処理を示すフローチャートである。
【図12】フェードイン、フェードアウトを示す図である。
【図13】バッファ残時間に応じてフェード時間の補正を示す図である。
【図14】フェードイン、フェードアウト時の送信装置100、受信装置の処理を示すシーケンス図である。
【図15】送信装置100の送信処理を示すフローチャートである。
【図16】送信装置100の曲送信処理を示すフローチャートである。
【図17】受信装置200の受信処理を示すフローチャートである。
【図18】受信装置100の再生開始待ち処理を示すフローチャートである。
【図19】受信装置100の再生中処理を示すフローチャートである。
【図20】送信装置100、受信装置200の遅延時間補正処理を示すフローチャートである。
【図21】送信装置100の曲分離処理を示すフローチャートである。
【発明を実施するための形態】
【0019】
以下、本発明の好ましい実施形態について、図面を参照して具体的に説明するが、本発明はこれらの実施形態には限定されない。
【0020】
図1は、コンテンツ再生システムを示すブロック図である。コンテンツ再生システムは、送信装置100と、複数の受信装置200(200A、200B、200C等)と、サーバ300とを備え、これらはインターネット、LAN等の任意のネットワークを介して相互に接続可能である。サーバ300は、複数のコンテンツをHDD等の記憶媒体に格納している。コンテンツは、音楽(曲)データ、映像(画像)データ等の総称であるが、本例では曲データである。つまり、1つの曲のことを1つのコンテンツという。
【0021】
送信装置100は、サーバ300からコンテンツデータを受信し、受信したコンテンツデータをパケット化して、各受信装置200に対して、同時刻に同じコンテンツの同じ再生位置のコンテンツデータを送信する。つまり、送信装置100は、曲データを各受信装置200に対してマルチキャスト又はブロードキャスト配信する。なお、サーバ300は、送信装置100とネットワーク経由で接続されている必要はなく、音声ケーブル等で有線接続されていてもよい。また、サーバ300の機能を送信装置100が備えていても良い。
【0022】
各受信装置200は、同時刻に同じコンテンツの同じ再生位置のコンテンツデータを受信する。各受信装置200は、受信したコンテンツデータを再生する。ここで、各受信装置は、次のコンテンツのコンテンツデータを最初に受信した受信開始時刻を特定し、受信開始時刻に、各受信装置200において同じ時間に設定されている遅延時間を加算して、次のコンテンツの再生開始時刻を設定する。従って、各受信装置は、同時刻に送信装置100からコンテンツデータを受信するので、各受信装置のコンテンツ毎の再生開始時刻が全て同じになるように設定される。各受信装置200は、再生開始時刻になったか否かを判断し、再生開始時刻になったと判断された場合、現在再生中のコンテンツの再生を終了し、再生開始時刻になった次のコンテンツのコンテンツデータの再生を開始する。これにより、コンテンツ単位で、各受信装置は再生開始時刻を同期させることができる。すなわち、コンテンツを再生していくと、各受信装置の再生クロックの周波数の誤差によって、各受信装置200が再生しているコンテンツの再生位置に若干の誤差が生じる場合があるが、次のコンテンツを再生開始するときに、コンテンツの再生位置を各受信装置200で一致させることができる。
【0023】
送信装置100は、受信装置200の機能を兼有していてもよい。つまり、送信装置100は、各受信装置200に加えて、送信装置100にも同時刻に同じコンテンツの同じ再生位置のコンテンツデータを送信する。送信装置100も、受信装置200と同じように、次のコンテンツのコンテンツデータを最初に受信した受信開始時刻を特定し、受信開始時刻に、各受信装置200および送信装置100において同じ時間に設定されている遅延時間を加算して、次のコンテンツの再生開始時刻を設定する。送信装置100は、再生開始時刻になったか否かを判断し、再生開始時刻になったと判断された場合、現在再生中のコンテンツの再生を終了し、再生開始時刻になった次のコンテンツのコンテンツデータの再生を開始する。これにより、コンテンツ単位で、送信装置も、各受信装置と再生開始時刻を同期させることができる。
【0024】
図2は、送信装置100の構成を示す概略ブロック図である(なお、送信装置100における受信装置200としての機能の説明は図3で記載する)。送信装置100は、制御部11と、メモリ(ROM、RAM等)12と、ネットワークインターフェース13と、受信バッファ14と、デコーダ15と、パケット化部16と、送信バッファ17とを概略備える。
【0025】
制御部11は、メモリ12に格納されている送信装置100の動作プログラムに基づいて送信装置100の各部を制御するものであり、マイコンやCPU等である。ネットワークインターフェース13は、サーバ300や、受信装置200とネットワーク経由で通信し、データやコマンドを送受信する。受信バッファ14は、ネットワークインターフェースを介してサーバ300から受信した曲データを一時的に格納し、その後、デコーダ15に供給する。デコーダ15は、曲データをデコードし、PCMデータ列に変換し、パケット化部16に供給する。パケット化部16は、ひとかたまりのPCMデータ列を例えばRTP(Real-time Transport Protocol)等の任意のプロトコルを用いてパケットに変換する。パケット化部16は、送信バッファ17にパケットを一時的に格納する。制御部11は、送信バッファ17からパケットを取り出してタイムスタンプ及びSSRCを含むヘッダを追加して、ネットワークインターフェース13を介して、各受信装置200にパケットを送信する。SSRCは、RTPにおいて定義されている曲を示す識別情報である。
【0026】
図3は、各受信装置200(及び送信装置100の受信装置としての機能)の構成を示すブロック図である。受信装置200は、制御部21と、メモリ22(ROM、RAM等)と、受信処理部23と、キュー管理部24と、再生処理部25とを概略備える。制御部21は、メモリ22に格納されている受信装置200の動作プログラムを実行することによって、受信装置200の各部を制御するものであり、マイコンやCPU等である。
【0027】
受信処理部23は、送信装置100からネットワーク経由で送信された曲データのパケットを受信し、チャンクを生成する。チャンクはひとかたまりのPCMデータ列にヘッダを付加したものである。受信処理部23は、パケット受信部23Aと、パケット解析部23Bと、チャンク生成部23Cと、キュー操作部23Dとを有する。パケット受信部23Aは、ネットワーク経由で送信装置100から送信されたパケットを受信し、パケット解析部23Bに供給する。パケット解析部23Bは、パケットのヘッダに含まれているSSRCを取得し、制御部21に供給する。パケット解析部23Bは、受信したパケットに含まれているSSRCが変更されたとき、すなわち、受信した曲が次の曲に変更されたとき、パケットを受信した時刻を受信開始時刻として特定し、制御部21に供給する。チャンク生成部23Cは、パケットからチャンクを生成し、キュー管理部24に供給する。キュー操作部23Dは、制御部21の指示に基づいてキュー管理テーブルを更新制御する。
【0028】
キュー管理部24は、曲毎にキューを作成し、キューにチャンクを格納すると共に、キューの情報をキュー管理テーブルにおいて管理する。キュー管理部24は、曲毎に生成されたキュー24Aと、キュー管理テーブル24Bとを有する。キューは、次の曲のチャンクが受信処理部23から供給されるときに、新たに生成される。キューに格納されたチャンクは、制御部21の指示に応じて再生処理部25によって読み出される。図4は、キュー管理テーブルの一例を示す図である。キュー管理テーブルには、キューインデックスと、キューID(識別番号)と、再生開始時刻と、キューの状態とが対応付けて登録される。これらの情報の詳細について後述する。
【0029】
再生処理部25は、キュー管理部24から読み出したチャンクを再生し、音声信号を出力する。再生処理部25は、チャンク処理部25Aと、ミキシング処理部25Bと、音声出力部25Cとを概略有する。チャンク処理部25Aは、キューからチャンクを読み出して、チャンクからPCMデータ列を取り出す。ミキシング処理部25は、後述する別の実施形態においてクロスフェード処理を実行する際に前の曲のPCMデータと、後の曲のPCMデータとを合成する。音声出力部25Cは、チャンク処理部25A又はミキキング処理部25BからのPCMデータ列を自身が備えるバッファ(音声出力バッファ)に一時的に格納したあと、音声出力を実行する。
【0030】
以上の構成を有するコンテンツ再生システムの動作を説明する。
図5は、送信装置100の制御部11の送信処理を示すフローチャートである。制御部11は、サーバ300から例えばネットワーク経由でコンテンツリストを取得し、メモリ12に保存する(S1)。制御部11は、コンテンツリストから曲を1つ選択する(S2)。制御部11は、コンテンツリスト内の全ての曲について受信装置200に送信済みであるか否かを判断する(S3)。送信済みであれば(S3でYES)、処理を終了する。送信済みでなければ(S3でNO)、制御部11は選択された曲の例えば全データをサーバ300からネットワーク経由で取得し、受信バッファ14に格納する(S4)。
【0031】
制御部11は、選択された曲のSSRCを生成する(S5)。SSRCは、RTPのヘッダに含まれている、曲を特定するための識別情報である。制御部11は、受信バッファ14内に格納されている曲データをペイロード長分読み出して、デコードし、パケット化し、送信バッファに格納する(S6)。ペイロード長とは、1つのパケットに含めることができる曲データの最大サイズである。制御部11は、タイミング調整のために所定時間待機する(S7)。ここで、所定時間とは、受信装置200に前回送信した曲データが受信装置200側で消化されるまでに必要な時間であり、詳細には、(送信済みサンプル数の総和)/(サンプリング周波数)によって決定される。
【0032】
制御部11は、ヘッダにタイムスタンプとSSRCとを格納する(S8)。タイムスタンプは、主として、受信装置200がパケットを受信できなかった場合に、欠落しているパケットの再生時間情報を確認するために使用される情報である。制御部11は、曲データのパケットにヘッダを付加して、ネットワークインターフェース13を介して、各受信装置200に曲データのパケットを送信する(S9)。
【0033】
制御部11は、選択された曲の全曲データを送信完了したか否かを判断する(S10)。送信完了していない場合(S10でNO)、処理はS6に戻って、曲データのパケットの送信を継続する。送信完了した場合(S10でYES)、制御部11は、曲間パケットを送信しながら、所定時間待機する(S11)。つまり、受信装置200は、音声再生のクロック周波数が低い場合に、曲データの再生終了までの時間が遅くなる。従って、全ての受信装置200が曲データを最後まで再生し終え、かつ、次の曲を再生開始するまでに多少の曲間が生じるように、次の曲データの送信を所定時間待機することが好ましい。待機している間、制御部11は、曲間パケットを送信する。
【0034】
曲間パケットは、ペイロードに曲データを含まず、ヘッダに曲間パケットであることを示す情報が含まれている。曲間パケットであることを示す情報は、例えば、曲間フラグが1にセットされることによって実現することができる。曲間パケットに含まれるSSRCは、直前に送信終了した曲のSSRCである。その後、処理はS2に戻って、制御部11は、コンテンツリストから次の曲を選択し、上記各処理を再度実行する。
【0035】
図6は、受信装置200の制御部21の受信処理を示す。制御部21は、曲データのパケットの受信に必要な情報(例えばマルチキャストアドレス等)を取得する(S21)。制御部21は、受信処理部23に曲データのパケットを受信開始させる(S22)。パケットを受信した場合(S23でYES)、制御部21は、チャンク生成部23Cに、パケットからチャンクを生成させる(S24)。チャンクは、再生処理部25に送信するひとかたまりのPCMデータ列にヘッダを付加したものである。必要に応じて、パケット内の曲データが圧縮データである場合にはデコードが実行される。
【0036】
制御部21は、パケット解析部23Bに、パケットからSSRCを取得させる(S25)。制御部21は、取得したSSRCが前回受信したパケットのSSRCと異なっているか否かを判断する(S26)。すなわち、受信した曲データが次の曲の曲データに変更されたか否かが判断される。SSRCが同じである場合(S26でYES)、制御部21は、チャンク生成部23Cに、チャンクを現在再生中の曲に対応するキューに格納させる(S31)。
【0037】
一方、SSRCが変更された場合(S26でNO)、制御部21は、キュー管理部24に新たな曲に対応するキューを生成させ、新たなキューのキューIDを設定する(S27)。制御部21は、新たに生成したキューに対してその再生開始時刻を設定する(S28)。詳細には、制御部21は、パケット解析部23Bから、SSRCが変更されたパケット(すなわち次の曲の先頭パケット)を受信した受信時刻を取得し、受信時刻に所定の遅延時間を加算し、キューの再生開始時刻を算出する。遅延時間は、例えば、各受信装置200において同じ遅延時間に設定されており、好ましくは、全ての受信装置200が曲データを最後まで再生し終えることができる遅延時間に設定されている。
【0038】
制御部21は、新たに設定したキューIDに対応するキューの状態として、「再生開始待ち」を設定する(S29)。制御部21は、キュー管理テーブルに、キューID、再生開始時刻、及び、キューの状態を登録する(S30)。制御部21は、受信処理部23に、新たに生成したキューにチャンクを格納させる(S31)。この時点では、前の曲(現在再生中の曲)のキューにもチャンクが格納されている状態であり、重複して前後の2つの曲のキューが生成されて、それぞれのキューにチャンクが格納された状態となる。その後、処理はS23に戻って、上記の処理を繰り返す。
【0039】
ここで、図7を参照し、キュー管理テーブルに設定されるキューの状態について説明する。「再生開始待ち」は、新たにキューが生成されたときから再生開示時刻に到達するまでの状態であり、キューにチャンクが格納されていくが、再生は開始されていない状態である。「再生中」は、再生開始時刻になり、キューからPCMデータが音声出力部25Cに出力される状態である。「廃棄待ち」は、次の曲のキューの再生開始時刻になったために、キューから音声出力部にチャンクが出力されなくなった状態であり、キューが廃棄されるのを待機している状態である。
【0040】
図8は、受信装置200の制御部21の再生処理を示す。制御部21は、音声出力部25Cに音声出力設定(例えば、サンプリング周波数、量子化ビット数の設定)を実行する(S41)。制御部21は、音声出力部25Cの音声出力バッファをクリアする(S41)。制御部21は、キュー管理テーブルのキューインデックスを0に初期化する(S42)。
【0041】
制御部21は、キュー管理テーブルからキューインデックスに対応するキューの各情報(再生開始時刻、キューの状態)を読み出す(S43)。制御部21は、対応するキューが存在するか否かを判断する(S44)。存在しなければ(S44でNO)、処理はS42に戻る。存在する場合(S44でYES)、制御部21は、キューの状態が「再生開始待ち」であるか否かを判断する(S45)。「再生開始待ち」である場合(S45でYES)、再生開始待ち処理(後述)が実行され(S46)、処理はS49に進む。
【0042】
一方、「再生開始待ち」ではない場合(S45でNO)、制御部21は、キューの状態が「廃棄待ち」であるか否かを判断する(S47)。「廃棄待ち」である場合(S47でYES)、処理はS49に進む。一方、廃棄待ちでない場合(S47でNO)、制御部21は、キューの状態が「再生中」であるので、再生中処理(後述)を実行し(S48)、処理はS49に進む。制御部21は、キューインデックスを1加算し、S43に戻って、上記の処理を繰り返す。つまり、キュー管理テーブルに登録されている各キューについてキューインデックスの順番に上記処理が実行される。
【0043】
図9は、再生開始待ち処理(S46)の詳細を示す。制御部21は、現在時刻とキューの再生開始時刻とを比較する(S51)。現在時刻は、受信装置200自身が管理している時刻である。未だ再生開始時刻になってない場合(S52でNO)、処理を終了する。再生開始時刻になると(S52でYES)、制御部21は、他のキューが存在する場合に、キュー管理部24に、他のキューを全て廃棄させ、廃棄したキューの各情報をキュー管理テーブルから削除する(S53)。すなわち、前の曲のチャンクを格納している、又は、格納していたキューを廃棄させる。
【0044】
制御部21は、音声出力部25Cに音声出力バッファをクリアさせる(S54)。クリアとは、バッファ内のデータを全て削除することである。これにより、前の曲データがバッファに残存する場合でも、バッファ内の曲データを全て削除する。従って、曲の再生開始時刻になると、直ちに曲データの再生を開始することができるので、再生開始時刻を同じ時刻に設定しておくことで、送信装置100及び各受信装置200において曲の再生開始時刻を同期させることが可能となる。
【0045】
制御部21は、キュー管理部24にキューからチャンクを読み出させ、チャンク処理部25Aに供給させる(S55)。チャンク処理部25Aは、制御部21の指示で、チャンクからPCMデータ列を取出し(S56)、音声出力部25Cの音声出力バッファに格納する(S57)。制御部21は、音声出力部25Cに音声出力バッファに格納されているPCMデータを再生開始させる(S58)。制御部21は、キュー管理テーブルにおけるキューの状態を「再生中」に変更する(S59)。
【0046】
図10は、各受信装置200における前の曲と次の曲の再生タイミングを模式的に示した図であり、横軸が時刻である。受信装置200A〜200Cは共に同じ再生開始時刻に曲Yを再生開始しており、再生開始時刻が同期している。受信装置200Aおよび200Cは、曲Yの再生開始時刻になる前に前の曲Xの再生を終了している。一方、受信装置200Bは、曲Yの再生開始時刻迄に前の曲Xを再生し終えることが出来なかったので、曲Xの末尾部分の再生が行われることなく、次の曲Yが再生開始される。少なくとも、全ての受信装置200において、曲の再生開始時刻を同期させることができる。
【0047】
図11は、再生中処理(S48)の詳細を示す。制御部21は、音声出力部25Cの音声出力バッファがデータで満杯であるか否かを判断し(S61)、満杯であれば(S61でYES)、処理を終了する。満杯でない場合(S61でNO)、制御部21は、さらに、キュー管理部24にキューからチャンクを読み出させ、チャンク処理部25Aに供給させる(S62)。制御部21は、キューからチャンクを取り出すことができないかを判断し(S63)、取り出せない場合(S63でYES)、処理を終了する。取り出せる場合(S63でNO)、制御部21は、チャンク処理部25Aに、チャンクからPCMデータ列を取り出させる(S64)。
【0048】
制御部21は、PCMデータ列を取り出せなかったかを判断し(S65)、取り出せなかった場合(S65でYES)、曲間パケットであるので、キュー管理テーブルにおいてキューの状態を「廃棄待ち」に変更する(S67)。取り出せた場合(S65でNO)、制御部21は、PCMデータ列を音声出力25Cの音声出力バッファに格納させる(S66)。
【0049】
以上のように、本実施形態によると、各受信装置200が同時刻に曲の先頭パケットを受信し、その受信時刻に所定の遅延時間を加算して曲の再生開始時刻を設定し、再生開始時刻になると、前の曲が再生中であるかに関係なく、曲の再生を開始することで、曲単位で再生開始時刻を必ず同期させることができる。
【0050】
次に本発明の別の好ましい実施形態を説明する。本例では、受信装置200は、クロスフェード処理を実行する。つまり、図12に示すように、前の曲Xの終わり付近で曲データの再生をフェードアウトさせ、かつ、次の曲Yの先頭部分をフェードアウト区間とオーバーラップするようにフェードインさせて、合成して音声出力する。合成して出力する時間をフェード時間tfといい、例えば3秒である。本実施形態では、クロスフェードした場合に、各受信装置で曲毎に再生を同期させるために、図13に示すように、次の曲Xの先頭パケットを受信した際に、音声出力バッファに残存しているデータの残り再生時間tbだけ、次の曲Yの再生開始時刻を早めるように補正する。その結果、クロスフェードの開始時刻も音声出力バッファに残存しているデータの残り再生時間tbだけ早めるように補正される。このように処理するのは、クロスフェード処理を実行する場合、先の実施形態のように音声出力バッファをクリアして再生開始時刻を同期させることができないからである。
【0051】
図14に示すように、送信装置100から受信装置200に送信されるパケットのヘッダは、フェードインフラグと、フェードアウトフラグと、フェードイン残量と、フェードアウト残量とを含む。フェードアウトフラグが1のときフェードアウトすることを意味し、フェードインフラグが1のときフェードインすることを意味する。S201において送信されるパケットは、前の曲(SSRC=0x11223344)のパケットであり、フェードアウトすること、及び、フェードアウト残量が3000msecであることを示す。S202において送信されるパケットは、次の曲(SSRC=0x34567890)のパケットであり、フェードインすること、及び、フェードイン残量が3000msecであることを示す。S203において送信されるパケットは、前の曲(SSRC=0x11223344)のパケットであり、フェードアウトすること、及び、フェードアウト残量が2995msecであることを示す。S204において送信されるパケットは、次の曲(SSRC=0x34567890)のパケットであり、フェードインすること、及び、フェードイン残量が2995msecであることを示す。このように、クロスフェード処理期間には、フェードアウトする前の曲のパケットと、フェードインする次の曲のパケットとが入り交じって送信される。
【0052】
図15は、送信装置100の制御部11の送信処理を示すフローチャートである。制御部11は、サーバ300から例えばネットワーク経由でコンテンツリストを取得し、メモリ12に保存する(S71)。制御部11は、コンテンツリストから曲を1つ選択する(S72)。制御部11は、コンテンツリスト内の全ての曲について受信装置200に送信済みであるか否かを判断する(S73)。送信済みであれば(S73でYES)、処理を終了する。送信済みでなければ(S73でNO)、制御部11は選択された曲の送信処理を開始する(S74)。制御部11は、選択された曲がフェードアウト処理中であるか否かを判断する(S75)。フェードアウト処理中である場合(S75でYES)、処理はS72に戻って次の曲の送信処理へと進む。
【0053】
図16は、曲送信処理(S74)の詳細を示す。制御部11は選択された曲の例えば全データをサーバ300からネットワーク経由で取得し、受信バッファ14に格納する(S81)。制御部11は、選択された曲のSSRCを生成する(S82)。制御部11は、受信バッファ14内に格納されている曲データをペイロード長分読み出して、デコードし、パケット化し、送信バッファに格納する(S83)。制御部11は、タイミング調整のために所定時間待機する(S84)。制御部11は、ヘッダにタイムスタンプとSSRCとを格納する(S85)。
【0054】
制御部11は、ヘッダにフェードイン、又は、フェードアウトに関する情報を格納する。詳細には、3秒間クロスフェードを実行する場合、曲の終わりから3秒前までのデータを送信するかを判断し、曲の終わりから3秒前迄のデータである場合、フェードアウトフラグを1に設定し、フェードアウト残量を設定する。同様に、制御部11は、曲の先頭から3秒後までのデータであるかを判断し、曲の先頭から3秒後迄のデータである場合、フェードインフラグを1に設定し、フェードイン残量を設定する。上記の通り、フェードアウトする曲のパケットと、フェードインする曲のパケットとは交互に送信される。制御部11は、曲データのパケットにヘッダを付加して、ネットワークインターフェース13を介して、各受信装置200に曲データのパケットを送信する(S87)。
【0055】
制御部11は、選択された曲の全データを送信完了したか否かを判断する(S88)。送信完了していない場合(S88でNO)、処理はS83に戻って、曲データのパケットの送信を継続する。送信完了した場合(S88でYES)、制御部11は、曲間パケットを送信しながら、所定時間待機する(S89)。
【0056】
図17は、受信装置200の制御部21の受信処理を示す。制御部21は、曲データのパケットの受信に必要な情報を取得する(S91)。制御部21は、受信処理部23に曲データのパケットを受信開始させる(S92)。パケットを受信した場合(S93でYES)、制御部21は、チャンク生成部23Cに、パケットからチャンクを生成させる(S94)。
【0057】
制御部21は、パケット解析部23Bに、パケットからSSRCを取得させる(S95)。制御部21は、取得したSSRCが前回受信したパケットのSSRCと異なっているか否かを判断する(S96)。SSRCが同じである場合(S96でYES)、制御部21は、チャンク生成部23Cに、チャンクを現在再生中の曲に対応するキューに格納させる(S102)。
【0058】
一方、SSRCが変更された場合(S96でNO)、制御部21は、キュー管理部24に新たな曲に対応するキューを生成させ、新たなキューのキューIDを設定する(S97)。制御部21は、音声出力部25Cの音声出力バッファに残存する現在再生中の曲のデータ残時間を特定する(S98)。データ残時間は、音声出力バッファに残存するデータを再生し終える迄にかかる時間である。制御部21は、次の曲の再生開始時刻を、曲の受信開始時刻に所定の遅延時間を加算し、さらに音声出力バッファのデータ残時間を減算することで算出する(S99)。
【0059】
制御部21は、キューの状態として、「再生開始待ち」を設定する(S100)。制御部21は、キュー管理テーブルに、キューID、再生開始時刻、及び、キューの状態を登録する(S101)。制御部21は、受信処理部23に、新たに生成したキューにチャンクを格納させる(S102)。
【0060】
図18は、再生開始待ち処理を示す。制御部21は、現在時刻とキューの再生開始時刻とを比較する(S111)。未だ再生開始時刻になってない場合(S112でNO)、処理を終了する。再生開始時刻になると(S112でYES)、制御部21は、キュー管理部24にキューからチャンクを読み出させ、チャンク処理部25Aに供給させる(S113)。チャンク処理部25Aは、制御部21の指示で、チャンクからPCMデータ列を取出す(S114)。制御部21は、ヘッダにフェードイン指示が含まれているか否かを判断する(S115)。含まれていない場合(S115でNO)、処理はS118に進む。含まれている場合(S115でYES)、制御部21は、再生処理部25にフェードイン処理を開始させる。フェードインは、音量レベルをフェードイン終了時点に向けてほぼ線形的に0から徐々に増加させる。従って、図13に示す補正済みフェード時間tf’かけて音量レベルが0からユーザ設定値まで増加するように音量レベルが調整される。制御部21は、再生処理部25にPCMデーア列にフェードイン処理を実行させる(S117)。
【0061】
その後、制御部21は、ミキシング処理部25Bに、前の曲のPCMデータ列と、再生開始時刻になった曲のPCMデータ列とを合成させ(S118)、再生開始させる(S119)。制御部21は、キュー管理テーブルにおけるキューの状態を「再生中」に変更する(S120)。
【0062】
図19は、再生中処理を示す。制御部21は、音声出力部25Cの音声出力バッファがデータで満杯であるか否かを判断し(S121)、満杯であれば(S121でYES)、書き込みできるまで待つため、処理を終了する。満杯でない場合(S121でNO)、制御部21は、キュー管理部24にキューからチャンクを読み出させ、チャンク処理部25Aに供給させる(S122)。チャンクを取り出すことができない場合(S123でYES)、処理を終了する。取り出せる場合(S123でNO)、制御部21は、チャンク処理部25Aに、チャンクからPCMデータ列を取り出させる(S124)。PCMデータ列を取り出せなかった場合(S125でYES)、曲間パケットであるので、キュー管理テーブルにおいてキューの状態を「廃棄待ち」に変更する(S132)。
【0063】
取り出せた場合(S125でNO)、制御部21は、ヘッダにフェードイン指示が含まれているか否かを判断する(S126)。含まれていない場合(S126でNO)、S128に進む。含まれている場合(S126でYES)、制御部21は、PCMデータ列にフェードイン処理を実行させる(S127)。これは、S116、S117の処理と同じであり、残りフェードイン残量に応じて音量レベルが決定される。制御部21は、ヘッダにフェードアウト指示が含まれているか否かを判断する(S128)。含まれていない場合(S128でNO)、S130に進む。含まれている場合(S128でYES)、制御部21は、PCMデータ列にフェードアウト処理を実行させる(S129)。フェードアウトは、音量レベルをフェードアウト開始時点から曲の終わりにかけてほぼ線形的にユーザ設定値から0に徐々に減少させる。従って、図13に示す補正済みフェード時間tf’かけて音量レベルがユーザ設定値から0まで減少するように音量レベルが調整される。つまり、残りフェードアウト残量に応じて音量レベルが決定される。制御部21は、ミキシング処理部25Bで前の曲のPCMデータ列と、次の曲のPCMデータ列とを合成させ(S130)、合成されたPCMデータ列を音声出力バッファに転送させる(S131)。
【0064】
以上の処理によって、クロスフェードを実行する場合にも、受信装置の再生時刻を同期させることが出来る。
【0065】
次に、本発明のさらに別の実施形態を説明する。本実施形態では、受信装置200が、曲の再生開始時刻になって、音声出力バッファをクリアする際に、音声出力バッファの残量(残時間)を特定し、送信装置100に通知する。送信装置100は、各受信装置200から受信した音声出力バッファの残量(残時間)のうち、最大の残時間を特定し、特定した残時間を遅延時間に加算して新たな遅延時間を設定し、各受信装置200に送信する。各受信装置200は、受信した新たな遅延時間を使って上記実施形態における再生開始時刻を設定する。これにより、全ての受信装置200が曲の最後まで再生し終えてから次の曲を再生開始できるように遅延時間を補正することが出来る。
【0066】
図20は本例の処理を示すフローチャートである。本処理は、S141、S151のように、例えば一定数の曲毎に定期的に実行されるとよい。各受信装置200の制御部21は、音声出力バッファをクリアする際の音声出力バッファの残時間を特定し、送信装置200に送信する(S152)。音声出力バッファの残時間は、音声出力バッファに残存している(すなわちクリアされる)データを再生するのにかかる時間である。送信装置100の制御部11は、受信装置200から音声出力バッファの残時間を受信し(S142)、メモリ22に記憶する(S143)。送信装置100の制御部11は、全ての受信装置200から音声出力バッファの残時間を受信したか否かを判断し(S144)、未だ受信していない場合(S144でNO)、S142に戻る。受信した場合(S144でYES)、制御部11は、各受信装置200から受信した音声出力バッファの残時間の中から、音声出力バッファの残時間の最大値を取得する(S145)。制御部11は、取得した音声出力バッファの残時間の最大値を、現行の遅延時間に加算し、新たな遅延時間を設定する(S146)。制御部11は、新たに設定した遅延時間を、各受信装置200に送信する(S147)。各受信装置200の制御部21は、新たな遅延時間を受信して、メモリ22に記憶し(S153)、これ以降、新たな遅延時間を使用して、再生開始時刻を設定する。
【0067】
次に、本発明のさらに別の実施形態を説明する。送信装置100が受信して各受信装置200に送信するコンテンツがラジオ放送やアナログ音声信号のような複数の曲が連続した音声信号である場合、上記のような曲毎に再生開始位置を同期させることができず、再生時間の経過と共に受信装置200間での再生位置のずれが顕著になる。これを解決するために、連続入力の音声信号であっても、無音区間を検出し、無音区間において曲間を形成し、SSRCを変更し別の曲として送信する。
【0068】
図21に示すように、各受信装置200の制御部21は、送信装置100から受信する基準クロック(これは、パケットのヘッダに含まれているタイムスタンプのことである)と、受信装置200が自身で管理するクロック(これは受信中のSSRCで最初に受信したパケットに含まれていたタイムスタンプに、受信装置200自身が発生するクロックを加算してカウントしたもの)とを比較し、その差(ずれ)を送信装置100に送信する(S171)。クロックのずれは所定時間(例えば10秒)毎に送信されると良い。
【0069】
送信装置100の制御部11は、クロックのずれの情報を受信装置200から受信する(S161)。制御部11は、受信したクロックのずれが所定値以上であるか否かを判断する(S162)。所定値未満である場合(S162でNO)、許容範囲内のずれであるので、曲間を形成することなく、処理はS161に戻る。所定値以上である場合(S162でYES)、許容範囲を超えているので、曲間を形成する処理を実行する。制御部11は、音声信号のレベル(振幅値)が無音と判断できる値(例えば−20dB)未満である状態が所定時間(例えば1秒)継続するか否かを判断し、待機する(S163)。−20dB未満である状態が1秒継続した場合(S163でYES)、制御部11は、当該箇所で曲間を形成し、SSRCを変更し、別の曲(コンテンツ)として、パケットを各受信装置200に送信する(S164)。従って、コンテンツがラジオ放送やアナログ音声信号のような複数の曲が連続した音声信号である場合でも、無音と判断される区間で仮想的に別の曲として各受信装置200に送信することによって、別の曲の再生開始時刻を各受信装置200で同期させることができる。
【0070】
以上、本発明の好ましい実施形態を説明したが、本発明はこれらの実施形態には限定されない。本発明の送信装置100、受信装置200を動作させるためのコンピュータプログラムまたはそのコンピュータプログラムを記録した記録媒体という形態で提供されてもよい。
【産業上の利用可能性】
【0071】
本発明は送信装置と受信装置とを備えるコンテンツ再生システムに好適に適用され得る。
【符号の説明】
【0072】
100 送信装置
11 制御部
12 メモリ
13 ネットワークインターフェース
14 受信バッファ
15 デコーダ
16 パケット化部
17 送信バッファ
200 受信装置
21 制御部
22 メモリ
23 受信処理部
23A パケット受信部
23B パケット解析部
23C チャンク生成部
23D キュー操作部
24 キュー管理部
24A キュー
24B キュー管理テーブル
25 再生処理部
25A チャンク処理部
25B ミキシング処理部
25C 音声出力部
300 サーバ

【特許請求の範囲】
【請求項1】
送信装置と、前記送信装置とネットワーク経由で接続可能な複数の受信装置とを備え、複数のコンテンツを連続して再生するコンテンツ再生システムであって、
前記送信装置が、前記各受信装置に対して、同時刻に同じコンテンツの同じ再生位置のコンテンツデータを送信する送信部を有し、
前記各受信装置が、
前記送信装置からコンテンツデータを受信する受信部と、
受信したコンテンツデータを再生する再生部と、
次のコンテンツのコンテンツデータを最初に受信した受信開始時刻を特定する時刻特定部と、
前記受信開始時刻に、各受信装置において同じ時間に設定されている遅延時間を加算して、次のコンテンツの再生開始時刻を設定する開始時刻設定部と、
再生開始時刻になったか否かを判断する時刻判断部と、
再生開始時刻になったと判断された場合、前記再生部に、現在再生中のコンテンツの再生を終了させ、再生開始時刻になった次のコンテンツのコンテンツデータの再生を開始させる再生制御部とを有する、コンテンツ再生システム。
【請求項2】
前記再生制御部が、再生開始時刻になったと判断された場合、前記再生部に、現在再生中のコンテンツのコンテンツデータを記憶領域から全て削除させ、再生開始時刻になった次のコンテンツのコンテンツデータを記憶領域に格納させることにより、再生開始時刻になった次のコンテンツのコンテンツデータを再生開始させる、請求項1に記載のコンテンツ再生システム。
【請求項3】
前記送信部が、コンテンツと共に、フェードアウトすることを示す情報、又は、フェードインすることを示す情報を送信し、
前記再生部が、前のコンテンツの末尾部分をフェードアウトさせ、次のコンテンツの先頭部分をフェードインさせるように合成して再生し、
前記開始時刻設定部が、前記受信開始時刻に前記遅延時間を加算し、次のコンテンツのコンテンツデータを最初に受信したときのバッファに蓄積されている残り再生時間を減算し、前記再生開始時刻を設定する、請求項1または2に記載のコンテンツ再生システム。
【請求項4】
前記各受信装置が、再生開始時刻になったと判断された時点の現在再生中のコンテンツの残り再生時間を前記送信装置に送信する残り再生時間送信部をさらに有し、
前記送信装置が、再生開始時刻になったと判断された時点の現在再生中のコンテンツの残り再生時間を前記各受信装置から受信する残り再生時間受信部と、
前記各受信装置から受信した残り再生時間の最大値を特定し前記遅延時間に加算して、新たな前記遅延時間を算出する遅延時間算出部と、
算出された新たな前記遅延時間を前記各受信装置に送信する遅延時間送信部とをさらに有し、
前記各受信装置が、算出された新たな前記遅延時間を受信する遅延時間受信部をさらに有し、
前記開始時刻設定部が、前記受信開始時刻に、算出された新たな前記遅延時間を加算して、次のコンテンツの再生開始時刻を設定する、請求項1〜3のいずれかに記載のコンテンツ再生システム。
【請求項5】
前記複数のコンテンツが連続した音声信号であって、
前記受信装置が、前記送信装置から受信する基準クロックと、前記受信装置内で管理するクロックとの差情報を前記送信装置に送信する差情報送信部をさらに有し、
前記送信装置が、前記受信装置から差情報を受信する差情報受信部と、
受信した差情報が所定値以上であり、かつ、音声信号のレベルが無音と判断される所定レベル未満である場合に、当該箇所で別のコンテンツとして分離するコンテンツ分離部とをさらに有する、請求項1〜4のいずれかに記載のコンテンツ再生システム。
【請求項6】
送信装置と、前記送信装置とネットワーク経由で接続可能な受信装置とを備え、複数のコンテンツを連続して再生するコンテンツ再生システムであって、
前記送信装置が、前記受信装置および前記送信装置自身に対して、同時刻に同じコンテンツの同じ再生位置のコンテンツデータを送信する送信部を有し、
前記受信装置及び前記送信装置が、
前記送信装置からコンテンツデータを受信する受信部と、
受信したコンテンツデータを再生する再生部と、
次のコンテンツのコンテンツデータを最初に受信した受信開始時刻を特定する時刻特定部と、
前記受信開始時刻に、前記受信装置および前記送信装置において同じ時間に設定されている遅延時間を加算して、新たなコンテンツの再生開始時刻を設定する開始時刻設定部と、
再生開始時刻になったか否かを判断する時刻判断部と、
再生開始時刻になったと判断された場合、前記再生部に、現在再生中のコンテンツの再生を終了させ、再生開始時刻になった次のコンテンツのコンテンツデータの再生を開始させる再生制御部とを有する、コンテンツ再生システム。
【請求項7】
請求項1〜6のいずれかに記載のコンテンツ再生システムにおける前記送信装置。
【請求項8】
請求項1〜6のいずれかに記載のコンテンツ再生システムにおける前記受信装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2013−110477(P2013−110477A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2011−252065(P2011−252065)
【出願日】平成23年11月17日(2011.11.17)
【出願人】(710014351)オンキヨー株式会社 (226)
【Fターム(参考)】