(58)【調査した分野】(Int.Cl.,DB名)
前記映像データ及び音声データを分離する処理は、所定の再生時間分の複数の分割ファイルが蓄積されたときに、蓄積された前記所定の再生時間分の複数の分割ファイルの各々から映像データ及び音声データを分離することを含む、
請求項1のプログラム。
前記音声データを再生する処理は、前記分離された複数の音声データの接合部分を基準とした所定の時間的範囲の音声波形を補正することによってノイズを除去することを含む、
請求項1ないし3何れかのプログラム。
前記音声データを再生する処理は、前記所定の時間的範囲に含まれる音声データの中から設定された始点、終点、及び、1又は複数の制御点に基づく曲線補間によって音声波形を補正することを含む、
請求項4のプログラム。
【発明を実施するための形態】
【0011】
以下、図面を参照しながら、本発明の実施形態について説明する。
【0012】
図1は、本発明の一実施形態に係る動画配信システム1のネットワークの構成を概略的に示す構成図である。動画配信システム1は、図示するように、動画配信サーバ10と、当該動画配信サーバ10とインターネット等のネットワーク20を介して通信可能に接続されたユーザ端末30(クライアント)とを備える。
図1においては、1つのユーザ端末30のみが図示されているが、動画配信システム1は、複数のユーザ端末30を備える。動画配信サーバ10は、ユーザ端末30に動画コンテンツを配信する動画配信サービスを提供する。
【0013】
動画配信サーバ10は、一般的なコンピュータとして構成されており、
図1に示すように、CPU(コンピュータプロセッサ)11と、メインメモリ12と、ユーザI/F13と、通信I/F14と、ストレージ(記憶装置)15とを備え、これらの各構成要素が図示しないバス等を介して電気的に接続されている。
【0014】
CPU11は、ストレージ15等に記憶されている様々なプログラムをメインメモリ12に読み込んで、当該プログラムに含まれる各種の命令を実行する。メインメモリ12は、例えば、DRAM等によって構成される。
【0015】
ユーザI/F13は、ユーザとの間で情報をやり取りするための各種の入出力装置を含む。ユーザI/F13は、例えば、キーボード、ポインティングデバイス(例えば、マウス、タッチパネル等)等の情報入力装置、マイクロフォン(マイク)等の音声入力装置、カメラ等の画像入力装置を含む。また、ユーザI/F13は、ディスプレイ等の画像出力装置、スピーカー等の音声出力装置を含む。
【0016】
通信I/F14は、ネットワークアダプタ等のハードウェア、各種の通信用ソフトウェア、及びこれらの組み合わせとして実装され、ネットワーク20等を介した有線又は無線の通信を実現できるように構成されている。
【0017】
ストレージ15は、例えば磁気ディスク、フラッシュメモリ等によって構成される。ストレージ15は、オペレーティングシステムを含む様々なプログラム、及び各種データ等を記憶する。
【0018】
本実施形態において、動画配信サーバ10は、それぞれが上述したハードウェア構成を有する複数のコンピュータを用いて構成され得る。例えば、動画配信サーバ10は、1又は複数のサーバ装置によって構成され得る。
【0019】
このように構成された動画配信サーバ10は、ウェブサーバ及びアプリケーションサーバとしての機能を有し、ユーザ端末30にインストールされているウェブブラウザ及びその他のアプリケーション(例えば、動画配信サービス用のアプリケーション)からの要求に応答して各種の処理を実行し、当該処理の結果に応じた画面データ(例えば、HTMLデータ)及び制御データ等をユーザ端末30に送信する。ユーザ端末30では、受信したデータに基づくウェブページ又はその他の画面が表示される。
【0020】
ユーザ端末30は、一般的なコンピュータとして構成されており、
図1に示すように、CPU(コンピュータプロセッサ)31と、メインメモリ32と、ユーザI/F33と、通信I/F34と、ストレージ(記憶装置)35とを備え、これらの各構成要素が図示しないバス等を介して電気的に接続されている。
【0021】
CPU31は、ストレージ35等に記憶されている様々なプログラムをメインメモリ32に読み込んで、当該プログラムに含まれる各種の命令を実行する。メインメモリ32は、例えば、DRAM等によって構成される。
【0022】
ユーザI/F33は、ユーザとの間で情報をやり取りするための各種の入出力装置である。ユーザI/F33は、例えば、キーボード、ポインティングデバイス(例えば、マウス、タッチパネル等)等の情報入力装置、マイクロフォン(マイク)等の音声入力装置、カメラ等の画像入力装置を含む。また、ユーザI/F33は、ディスプレイ等の画像出力装置、スピーカー等の音声出力装置を含む。
【0023】
通信I/F34は、ネットワークアダプタ等のハードウェア、各種の通信用ソフトウェア、及びこれらの組み合わせとして実装され、ネットワーク20等を介した有線又は無線の通信を実現できるように構成されている。
【0024】
ストレージ35は、例えば磁気ディスク又はフラッシュメモリ等によって構成される。ストレージ35は、オペレーティングシステムを含む様々なプログラム及び各種データ等を記憶する。ストレージ35が記憶するプログラムは、アプリケーションマーケット等からダウンロードされてインストールされ得る。
【0025】
本実施形態において、ユーザ端末30は、スマートフォン、タブレット端末、ウェアラブルデバイス、パーソナルコンピュータ、及びゲーム専用端末等として構成され得る。
【0026】
このように構成されたユーザ端末30のユーザは、ストレージ35等にインストールされているウェブブラウザ又は動画配信サービス用のアプリケーションを介した動画配信サーバ10との通信を実行することによって、動画配信サーバ10が提供する動画配信サービスを利用することができる。ウェブブラウザによって実行されるプログラム(JavaScript(登録商標)ライブラリを含む。)及び動画配信サービス用のアプリケーションは、本発明のプログラムの一部又は全部を実装するプログラムの一例となり得る。
【0027】
次に、本実施形態の動画配信システム1が有する機能について説明する。
図2は、動画配信サーバ10及びユーザ端末30がそれぞれ有する機能を概略的に示すブロック図である。動画配信サーバ10は、図示するように、様々な情報を記憶及び管理する情報記憶管理部51と、動画の配信を制御する配信制御部53とを有する。これらの機能は、CPU11及びメインメモリ12等のハードウェア、並びに、ストレージ15等に記憶されている各種プログラムやデータ等が協働して動作することによって実現され、例えば、メインメモリ12に読み込まれたプログラムに含まれる命令をCPU11が実行することによって実現される。また、
図2に示す動画配信サーバ10の機能の一部又は全部は、動画配信サーバ10とユーザ端末30とが協働することによって実現され、又は、ユーザ端末30によって実現され得る。
【0028】
ユーザ端末30は、
図2に示すように、様々な情報を記憶及び管理する情報記憶管理部61と、動画の再生を制御する再生制御部63とを有する。これらの機能は、CPU31及びメインメモリ32等のハードウェア、並びに、ストレージ35等に記憶されている各種プログラムやデータ等が協働して動作することによって実現され、例えば、メインメモリ32に読み込まれたプログラムに含まれる命令をCPU31が実行することによって実現される。また、
図2に示すユーザ端末30の機能の一部又は全部は、サーバ10とユーザ端末30とが協働することによって実現され、又は、サーバ10によって実現され得る。
【0029】
動画配信サーバ10の情報記憶管理部51は、ストレージ15等において様々な情報を記憶及び管理する。例えば、情報記憶管理部51は、動画コンテンツが分割(断片化)されたファイルである分割ファイル、及び、当該分割ファイルが再生順に記述されたインデックスファイル(プレイリスト)を記憶する。
【0030】
動画配信サーバ10の配信制御部53は、動画の配信の制御に関する様々な処理を実行する。例えば、配信制御部53は、インデックスファイルを参照するユーザ端末30からの要求に応答して、当該ユーザ端末30に対して分割ファイルを順に送信する。
【0031】
ユーザ端末30の情報記憶管理部61は、ストレージ35等において様々な情報を記憶及び管理する。ユーザ端末30の再生制御部63は、動画コンテンツの再生の制御に関する様々な処理を実行する。本実施形態において、再生制御部63は、動画配信サーバ10から送信される分割ファイルを順に受信し、当該受信した分割ファイルをストレージ35等に蓄積するように構成されている。例えば、再生制御部63は、ユーザによって特定された動画コンテンツに対応するインデックスファイルをサーバ10から取得し、当該取得したインデックスファイルに記述されている分割ファイルの送信をその再生順序に従ってサーバ10に要求し、サーバ10から送信される分割ファイルを順に受信して蓄積する。
【0032】
また、再生制御部63は、蓄積された複数の分割ファイルの各々から映像データ及び音声データを分離(demux)し、分離された複数の映像データを1つの映像データに結合して再生する一方、分離された複数の音声データを順に再生するように構成されている。映像データ及び音声データは、分割ファイルに含まれるタイムスタンプ等に基づいて同期して再生される。また、再生制御部63は、分離された複数の音声データを順に再生する際に、当該複数の音声データの接合部分におけるノイズを除去するように構成されている。
【0033】
このように、本実施形態における動画配信システム1は、ユーザ端末30において、映像データについては、複数の分割ファイルから分離した複数の映像データを1つの映像データに結合して再生するから、分割ファイルのデータサイズが小さい場合であっても、映像データを再生する処理の頻度を少なくすることができる。この結果、ネットワーク及びクライアントにおける遅延が低減される。また、分離した複数の音声データを順に再生すると、音声データの接合部分においてノイズが発生しやすくなるが、当該接合部分におけるノイズを除去して音声データが再生されるから、動画コンテンツの再生時における音声ノイズの発生が抑制される。
【0034】
本実施形態において、再生制御部63は、所定の再生時間分の複数の分割ファイルが蓄積されたときに、蓄積された所定の再生時間分の複数の分割ファイルの各々から映像データ及び音声データを分離するように構成され得る。つまり、再生制御部63は、2以上の特定の数の分割ファイルが蓄積されてその再生時間の合計が所定の再生時間以上となると、当該特定の数の分割ファイルの各々から映像データ及び音声データを分離し、分離された特定の数の映像データを1つの映像データに結合して再生する一方、分離された特定の数の音声データを順に再生するように構成され得る。また、再生制御部63は、再生時間の合計にかかわらず、2以上の所定数の分割ファイルが蓄積されたときに、蓄積された所定数の分割ファイルの各々から映像データ及び音声データを分離するように構成され得る。
【0035】
本実施形態において、分割ファイルは、第1の形式(例えば、MPEG−TS)を有するコンテナファイルとして構成することができ、この場合、再生制御部63は、結合後の1つの映像データを、第1の形式とは異なる第2の形式(例えば、MP4)を有するコンテナファイルに格納して再生するように構成され得る。こうした構成は、ユーザ端末30において、分割ファイルの形式とは異なる形式を有するコンテナファイルを介した映像データの再生を可能とする。
【0036】
本実施形態において、複数の音声データの接合部分におけるノイズの除去は、様々な方法を用いて実現され得る。例えば、再生制御部63は、分離された複数の音声データの接合部分を基準とした所定の時間的範囲の音声波形を補正することによってノイズを除去するように構成され得る。所定の時間的範囲は、例えば、上記接合部分から所定時間前の時点(所定数前の音声データ(サンプル))から同じく接合部分から所定時間後の時点(所定数後の音声データ(サンプル))までの範囲である。例えば、再生制御部63は、所定の時間的範囲に含まれる音声データの中から始点、終点、及び、1又は複数の制御点を設定し、設定した始点、終点、及び制御点に基づく曲線補間(ベジェ補間、又は、スプライン補間等が含まれる。)によって音声波形を補正するように構成され得る。なお、音声波形の補正は、線形補間によっても実現され得る。
【0037】
次に、このような機能を有する本実施形態の動画配信システム1の具体例について説明する。この具体例における動画配信サービスでは、動画コンテンツを配信する配信者のユーザ端末30から送信されるライブ動画が、動画配信サーバ10を介して、視聴者のユーザ端末30に配信される。配信者のユーザ端末30は、ライブ動画を生成して送信するための機能を有する。ライブ動画は、例えば、配信者のユーザ端末30の表示画面に対応する画像を含む画面動画であり、又は、配信者のユーザ端末30のカメラを介して入力(撮影)される映像を含む撮影動画である。これらのライブ動画は、ユーザ端末30のマイクを介して入力される音声が含まれる。
【0038】
図3に示すように、この例では、配信者のユーザ端末30と動画配信サーバ10との間のストリーミングのプロトコルとして、ストリーミング専用のプロトコルであるRTMPが用いられており、動画配信サーバ10は、配信者のユーザ端末30から送信されるライブ動画の動画データを受信する。また、この例では、動画配信サーバ10と視聴者のユーザ端末30との間のストリーミングのプロトコルとして、HLSが用いられている。なお、動画配信サーバ10と視聴者のユーザ端末30との間にCDN(コンテンツ・デリバリ・ネットワーク)におけるエッジサーバが介在するようにしても良い。
【0039】
動画配信サーバ10は、配信者のユーザ端末30から受信する動画データに基づいてTSファイル(分割ファイル)の作成、及び、m3u8ファイル(インデックスファイル)の更新を行う。TSファイルは、MPEG−TS形式のコンテナファイルである。動画配信サーバ10は、具体的には、配信者のユーザ端末30から受信する動画データを、予め設定されているキーフレームの間隔に従ってTSファイルに分割及び変換し、蓄積されたTSファイルが再生順に記述されるようにm3u8ファイルを適宜に更新する。
【0040】
ライブ動画の視聴者のユーザ端末30は、ウェブブラウザを介して、動画配信サーバ10に記憶されているm3u8ファイルを参照し、当該m3u8ファイルに記述されているTSファイルを再生順に取得する。
図4は、視聴者のユーザ端末30において実行される、TSファイルに対する処理を例示するフロー図である。これらの処理は、JavaScript(登録商標)ライブラリとして実装され、ユーザ端末30のウェブブラウザを介して実行される。
【0041】
ユーザ端末30は、まず、
図4に示すように、サーバ10から受信して蓄積されているTSファイルの再生時間の合計が、3秒以上となるのを待機する(ステップS100)。各TSファイルの再生時間(ts duration)は、m3u8ファイルに記述されており、ユーザ端末30は、m3u8ファイルに記述されている各TSファイルの再生時間に基づいて、蓄積されているTSファイルの再生時間の合計が3秒以上となるのを判定することができる。この例において、上述したキーフレームの間隔は1秒に設定されており、1つのTSファイルの再生時間は、通常、0.9〜1.4秒となる。従って、再生時間の合計が3秒以上となるTSファイルの数は、通常、3〜4個となる。
【0042】
3秒分以上のTSファイルが蓄積すると(ステップS100においてYES)、ユーザ端末30は、次に、蓄積された複数のTSファイルの各々を映像ストリームと音声ストリームとに分離(demux)する(ステップS110)。TSファイルは、上述したように、MPEG−TSファイルとして構成されており、この例では、TSファイルに含まれる映像ストリームのコーデックはH.264であり、同じくTSファイルに含まれる音声ストリームのコーデックはAACである。例えば、
図5に示すように、3秒分以上の3つのTSファイルを分離すると、それぞれ3つの映像ストリーム及び音声ストリームが得られる。
【0043】
そして、ユーザ端末30は、TSファイルの分離によって得られた映像ストリーム及び音声ストリームを個別に処理して再生する(ステップS120)。このように、蓄積された3秒分以上のTSファイルを分離し、得られた映像ストリーム及び音声ストリームを個別に処理して再生する処理が、ライブ動画の配信が終了するまでの間(ステップS130)、繰り返し行われる。
【0044】
図6は、映像ストリーム及び音声ストリームを個別に処理して再生する方法を模式的に示す図である。映像ストリームに関して、ユーザ端末30は、TSファイルの分離によって得られた複数の映像ストリームをバイナリ結合し、当該バイナリ結合によって得られた1つの映像ストリームをMP4ファイルに格納(多重化)する。また、音声ストリームに関して、ユーザ端末30は、複数の音声ストリームの各々を順にPCMデータに変換する。そして、ユーザ端末30は、1つに結合された映像ストリームを格納するMP4ファイルと、複数の音声ストリームに対応する複数のPCMデータとを同期して再生する。映像ストリームを格納するMP4ファイルは、例えば、HTML5における<video>タグ等を用いて再生される。
【0045】
ここで、複数の音声ストリームに対応する複数のPCMデータを再生する際には、PCMデータの接合部分におけるノイズを除去する処理が行われる。
図7は、当該ノイズを除去する処理を説明するための図である。
図7(A)は、PCMデータの接合部分が含まれる音声波形の一例であって、ノイズが除去される前の状態を示している。また、
図7(B)は、
図7(A)の音声波形に対してノイズが除去された後の状態を示している。
図7(A)に示すように、PCMデータの接合部分における音声波形は、後側のPCMデータの先頭部分に相当する波形が乱れる傾向にあり、具体的には、その振幅(ゲイン)が0付近となる傾向にある。こうした音声波形を有するPCMデータをそのまま再生すると、各PCMデータの先頭部分においてノイズが発生してしまう。
【0046】
そこで、この例では、ベジェ補間を用いた音声波形の補正を行うことにより、当該ノイズが除去される。具体的には、
図7(B)に示すように、PCMデータの接合部分に対応する時点t1から所定時間(所定のサンプル数、例えば、34サンプル)前の時点である時点t0と、同じく接合部分に対応する時点t1から所定時間後の時点である時点t2との間に含まれる音声波形(時点t0から時点t2までの時間的範囲に含まれる音声波形)を対象に、ベジェ補間を用いた補正を行う。なお、上記所定時間(つまり、音声波形の補正の対象範囲)は、情報量と処理効率とのバランスを考慮して設定される。例えば、サーバ側においてゲイン処理等の処理が施される場合には、こうした処理が施された範囲が含まれるように上記所定時間を設定するのが好ましい。
【0047】
ベジェ補間は、具体的には、上記時間的範囲の先頭の時点t0に対応するPCMデータのサンプルP0を始点とし、上記時間的範囲の最後の時点t2に対応するサンプルP2を終点とし、PCMデータの接合部分に対応する時点t1に対応するサンプルP1(前側のPCMデータの最後のサンプル)を制御点とするベジェ曲線を生成し、生成したベジェ曲線で音声波形を上書きすることによって行われる。このように補正された音声波形は、PCMデータの先頭部分における波形が滑らかとなり、当該先頭部分におけるノイズの発生が抑制される。
【0048】
上述した例において、ユーザ端末30におけるOS及びブラウザの組合せに応じて、TSファイルに対する処理を変更する(言い換えると、レンダラーを変更する)ようにしても良い。
【0049】
以上説明した本実施形態の動画配信システム1は、ユーザ端末30において、映像データについては、複数の分割ファイル(例えば、TSファイル)から分離した複数の映像データを1つの映像データに結合して再生するから、分割ファイルのデータサイズが小さい場合であっても、映像データを再生する処理の頻度を少なくすることができる。この結果、ネットワーク及びクライアントにおける遅延が低減される。また、分離した複数の音声データを順に再生すると、音声データの接合部分においてノイズが発生しやすくなるが、当該接合部分におけるノイズを除去して音声データが再生されるから、動画コンテンツの再生時における音声ノイズの発生が抑制される。
【0050】
また、本発明の実施形態は、
図4のフロー図に例示したような分割ファイルに対する処理を、ブラウザを介して実行可能なJavaScript(登録商標)ライブラリ等のソフトウェアとして実装することができるため、ハードウェアデコーダー等のハードウェアに依存して処理する場合(従来、リアルタイム性が要求されるストリーミングサービスでは、多くの場合、ハードウェアデコーダーが用いられている)と比較して、動画コンテンツに対する追加の処理(例えば、人の顔にアバター画像を重ねる処理、BGMを追加する処理等)を容易に実現することができる。このように、本発明の実施形態は、リアルタイム性(遅延の低減)が要求される動画コンテンツのストリーミング配信サービスにおいて、良好なユーザ体験を担保すると共にサービス性を向上させることができる。
【0051】
本明細書で説明された処理及び手順は、明示的に説明されたもの以外にも、ソフトウェア、ハードウェアまたはこれらの任意の組み合わせによって実現される。例えば、本明細書で説明される処理及び手順は、集積回路、揮発性メモリ、不揮発性メモリ、磁気ディスク等の媒体に、当該処理及び手順に相当するロジックを実装することによって実現される。また、本明細書で説明された処理及び手順は、当該処理・手順に相当するコンピュータプログラムとして実装し、各種のコンピュータに実行させることが可能である。
【0052】
本明細書中で説明された処理及び手順が単一の装置、ソフトウェア、コンポーネント、モジュールによって実行される旨が説明されたとしても、そのような処理または手順は複数の装置、複数のソフトウェア、複数のコンポーネント、及び/又は複数のモジュールによって実行され得る。また、本明細書において説明されたソフトウェアおよびハードウェアの要素は、それらをより少ない構成要素に統合して、またはより多い構成要素に分解することによって実現することも可能である。
【0053】
本明細書において、発明の構成要素が単数もしくは複数のいずれか一方として説明された場合、又は、単数もしくは複数のいずれとも限定せずに説明された場合であっても、文脈上別に解すべき場合を除き、当該構成要素は単数又は複数のいずれであってもよい。
本発明の一実施形態に係る動画配信システム1は、ユーザ端末30と、当該ユーザ端末30に動画を配信する動画配信サービスを提供する動画配信サーバ10とを備える。動画配信システム1は、ユーザ端末30において、映像データについては、複数の分割ファイルから分離した複数の映像データを1つの映像データに結合して再生するから、分割ファイルのデータサイズが小さい場合であっても、映像データを再生する処理の頻度を少なくすることができる。