(57)【要約】  再生バッファにストリーミングメディアをバッファリングするためのフリーバッファチャンクがないか否かを判断し、フリーバッファチャンクがない場合、ダウンロードを停止し、フリーバッファチャンクがある場合、ネットワークからダウンロードしたストリーミングメディアを再生バッファにバッファリングする。再生バッファにバッファリングされているストリーミングメディアの再生時刻が再生速度に従って当該ストリーミングメディアを再生すべき時刻より遅いか否かを判断し、遅い場合再生を停止し、遅くない場合再生する。ストリーミングメディアのダウンロードと再生を制御することで、速度の不一致によるストリーミングメディアの上書き又は再生の不連続の問題を回避できる。ストリーミングメディアのバッファリング及び再生プロセスにおいてエラーが発生しないことが確保でき、ストリーミングメディアの再生品質が確保できる。
2008526057.tif 000002
【特許請求の範囲】
【請求項１】
ストリーミングメディアをバッファリングする方法であって、
バッファにフリーバッファチャンクがある場合において、ストリーミングメディアをダウンロードし、前記ストリーミングメディアを前記フリーバッファチャンクにバッファリングするステップと、
バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できる場合において、バッファチャンクにバッファリングされているストリーミングメディアを再生し、前記バッファチャンクを解放してフリーバッファチャンクにするステップと、
を含むことを特徴とする方法。
【請求項２】
フリーバッファチャンクがない場合において、ストリーミングメディアのダウンロードを停止し、
バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できない場合において、ストリーミングメディアの再生を停止することを更に含む、
ことを特徴とする請求項１に記載の方法。
【請求項３】
再生バッファにおけるストリーミングメディアの受信側において、
再生バッファはダウンロード速度に従って、ネットワークを通じて１つのチャンクのストリーミングメディアをダウンロードするステップａと、
再生バッファにフリーバッファチャンクがないか否かを判断し、再生バッファにフリーバッファチャンクがない場合、再生バッファは、ネットワークを通じてストリーミングメディアをダウンロードすることを停止し、本ステップに戻り、再生バッファにフリーバッファチャンクが出現するまで繰り返し、再生バッファにフリーバッファチャンクがある場合、再生バッファから１つのフリーバッファチャンクを取り出し、ステップｃを実行するステップｂと、
前記ステップａにおいてダウンロードされたストリーミングメディアを前記ステップｂにおいて取り出されたフリーバッファチャンクに保存し、前記ストリーミングメディアがバッファリングされているバッファチャンクを再生バッファに返し、そして、ステップａに戻り、ストリーミングメディアのダウンロードが完了するまで、繰り返すステップｃとを実行し、
再生バッファにおけるストリーミングメディアの再生側において、
再生バッファにおいてストリーミングメディアがバッファリングされているバッファチャンク数が、ストリーミングメディアが再生バッファにバッファリングされている必要がある時間に対応する所定のバッファチャンク数より小さいか否かを判断し、小さい場合、再生バッファはバッファチャンクにおけるストリーミングメディアの再生を停止し、本ステップに戻り、再生バッファにおいてストリーミングメディアがバッファリングされているバッファチャンク数が、前記所定のバッファチャンク数以上となるまで、繰り返し、小さくない場合、ステップＢを実行するステップＡと、
再生速度に従って、再生バッファから１つのバッファチャンクを順番に取り出し、前記バッファチャンクに保存されているストリーミングメディアを再生し、再生した後、前記再生したストリーミングメディアが保存されているフリーバッファチャンクを返し、そして、ステップＡに戻り、ストリーミングメディアの再生が完了するまで、繰り返すステップＢとを実行することを含む、
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記バッファは、全部のフリーバッファチャンクを管理するフリーバッファキューと、ストリーミングメディアがバッファリングされている全部のバッファチャンクを管理するメディアバッファキューとを含み、
前記ステップｂは、
前記フリーバッファキューに対してフリーバッファチャンクの取り出し操作を実行し、当該操作の戻り値がナルであるか否かを判断し、ナルである場合、再生バッファにフリーバッファチャンクがないと判断し、再生バッファはネットワークからストリーミングメディアチャンクのダウンロードを停止し、そして、ステップｂに戻り、ナルでない場合、ストリーミングメディアを前記ステップｂにおいて取り出されたフリーバッファチャンクに再生バッファにフリーバッファチャンクがあると判断し、再生バッファから１つのフリーバッファチャンクを取り出し、そして、ステップｃを実行することを含み、
前記ステップｃは、前記ステップａの保存し、そして、メディアバッファキューに対してバッファチャンクの保存操作を実行することにより、前記ストリーミングメディアが保存されているバッファチャンクを再生バッファのメディアバッファキューに返し、そして、ステップａに戻り、ストリーミングメディアのダウンロードが完了するまで、繰り返すことを含み、
前記ステップＡは、
メディアバッファキュー内のバッファチャンク数が、ストリーミングメディアが再生バッファにバッファされている必要がある時間に対応するバッファチャンク数より小さいか否かを判断し、小さい場合、再生バッファはバッファチャンクに保存されているストリーミングメディアを再生することを停止し、そして、本ステップに戻り、メディアバッファキュー内のバッファチャンク数が、ストリーミングメディアが再生バッファにバッファリングされている必要がある時間に対応するバッファチャンク数以上となるまで、繰り返し、小さくない場合、ステップＡ２を実行するステップＡ１と、
再生バッファは再生速度に従って、メディアバッファキューから取り出したバッファチャンクにおけるストリーミングメディアを再生し、そして、フリーバッファキューに対してフリーバッファチャンクの保存操作を実行し、再生したストリーミングメディアが保存されているフリーバッファチャンクを再生バッファのフリーバッファキューに返し、ステップＡ１に戻り、ストリーミングメディアの再生が完了するまで、繰り返すステップＡ２とを含む、
ことを特徴とする請求項３に記載の方法。
【請求項５】
ネットワークからダウンロードされたストリーミングメディアによって、再生バッファに取り出されていないストリーミングメディアが上書きされることができない１つのダウンロードバッファを予め設定し、
前記ステップａは、
ダウンロードバッファはネットワークを通じてストリーミングサーバからストリーミングメディアを取得し、再生バッファは当該ダウンロードバッファからストリーミングメディアを取得することを含み、
前記ステップｂは、
再生バッファはダウンロードバッファからストリーミングメディアチャンクの取得を停止し、ダウンロードバッファは、その中のストリーミングメディアが取り出されておらず、且つ新たにダウンロードされたストリーミングメディアによって上書きされるべきではないため、ネットワークを通じてストリーミングサーバからストリーミングメディアのダウンロードを停止することを含む、
ことを特徴とする請求項３又は請求項４に記載の方法。
【請求項６】
ストリーミングメディアが再生前にバッファリングされている必要がある全時間長をバッファチャンク時間長で予め除算し、除算結果を前記所定のバッファチャンク数とすることを更に含む、
ことを特徴とする請求項３に記載の方法。
【請求項７】
ストリーミングメディアをバッファリングする装置であって、
ダウンロードされたストリーミングメディアをバッファリングするバッファリングモジュールと、
前記バッファリングモジュールにフリーバッファチャンクがある場合、ストリーミングメディアをダウンロードし、ダウンロードしたストリーミングメディアをフリーバッファチャンクにバッファリングするダウンロードモジュールと、
前記バッファリングモジュールにおいて、現在バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できる場合、バッファリングモジュール内のストリーミングメディアを再生し、前記ストリーミングメディアがバッファリングされているバッファチャンクを解放してフリーバッファチャンクにする再生モジュールと、
を含むことを特徴とする装置。
【請求項８】
前記バッファリングモジュールは、
前記バッファリングモジュール内のフリーバッファチャンクを管理するフリーバッファキューと、
前記バッファリングモジュール内の、ストリーミングメディアがバッファリングされているバッファチャンクを管理するメディアバッファキューと、
を含むことを特徴とする請求項７に記載の装置。
【請求項９】
前記ダウンロードモジュールは、更に、前記バッファリングモジュールにフリーバッファチャンクがない場合、ストリーミングメディアのダウンロードを停止し、
前記再生モジュールは、更に、前記バッファリングモジュールにおいて、現在バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できない場合、ストリーミングメディアの再生を停止する、
ことを特徴とする請求項７又は請求項８に記載の装置。
【請求項１０】
前記ダウンロードモジュールは、
ストリーミングメディアをダウンロードし、ダウンロードしたストリーミングメディアを当該サブモジュールのダウンロードバッファにバッファリングするダウンロードサブモジュールと、
前記ダウンロードバッファからストリーミングメディアを取得し、前記バッファリングモジュールにフリーバッファチャンクがある場合、前記ストリーミングメディアを前記バッファリングモジュールにバッファリングし、前記バッファリングモジュールにフリーバッファチャンクがない場合、ストリーミングメディアのダウンロードを停止するメディアの取り出しサブモジュールと、
を更に含むことを特徴とする請求項９に記載の装置。
【請求項１１】
前記ダウンロードバッファは、
前記ダウンロードしたストリーミングメディアによって、取り出されていないストリーミングメディアが上書きされることができないように予め設定される、
ことを特徴とする請求項１０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメディア通信技術分野に関し、特に、ストリーミングメディアをバッファリングする方法及び装置に関する。
【背景技術】
【０００２】
現在、ストリーミングメディアが既にネットワークで広く使用され、人々は、ストリーミングメディアを通じてネットワークでリアルタイムに番組を見たり聞いたりすることができる。ストリーミングメディアによっては、閲覧者がストリーミングメディアファイル全体のダウンロードが完了するまで待たされることなく、ストリーミングメディアファイルをダウンロードしながら当該ファイルを再生することが許可されることにより、使用者のダウンロード時間が大きく節約されている。ストリーミングメディア技術は、ストリーミングメディアのダウンロード及び再生を実現するプロセスにおいて、具体的にストリーミングメディアの収集と、圧縮と、伝送と、バッファリングと再生などの多種の技術に関する。本発明は、ストリーミングメディアのバッファリング技術に関するものである。
【０００３】
従来の技術において、ストリーミングメディアプレーヤーはネットワークからストリーミングメディアをダウンロードし、当該ストリーミングメディアをそれ自身の再生バッファにバッファリングし、当該再生バッファを通じて、ダウンロードしたストリーミングメディアを再生する。このプロセスは、ネットワーク状況によって決定されるストリーミングメディアのダウンロード速度と、ストリーミングメディアプレーヤー自身によって決定されるストリーミングメディアのローカル再生速度との２つの速度に関する。ストリーミングメディアの再生速度がネットワーク状況と関係がないため、ストリーミングメディアのダウンロード速度と再生速度との間に差異がある。具体的に、下記のような２つの場合が含まれる。
【０００４】
１、ストリーミングメディアのダウンロード速度が再生速度より速い。
この場合では、再生バッファ内のストリーミングメディアがまだ再生されていないが、新たにダウンロードされたストリーミングメディアが既に再生バッファに到達することになる。従って、再生バッファ内のまだ再生されていないストリーミングメディアの一部が新たにダウンロードされたストリーミングメディアにより上書きされ、これによって、ストリーミングメディアのロスが発生し、再生エラーとなる。
【０００５】
２、ストリーミングメディアのダウンロード速度が再生速度より遅い。
この場合では、再生バッファにバッファリングされた全部のストリーミングメディアの再生が既に完了したが、新たなストリーミングメディアがまだ再生バッファに到達していないことになる。従って、ストリーミングメディアの再生の不連続をもたらし、再生の品質に影響を及ぼす。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ストリーミングメディアのダウンロード速度及び再生速度が、それぞれ異なる要素によって決定されるため、この２つの速度を等しくすることは不可能である。これにより、上記の速度の不一致による問題も生じる。
【０００７】
本発明は、上記問題点に鑑みてなされたものであって、ダウンロード速度及び再生速度が一致しない場合において、ストリーミングメディアのダウンロード及び再生をそれぞれ制御することによって、速度の不一致により発生する再生バッファ内のストリーミングメディアの上書き及びストリーミングメディアの再生の不連続の問題を回避する、ストリーミングメディアをバッファリングする方法及び装置を提供することを主な目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明はストリーミングメディアをバッファリングする方法を提供し、当該方法は、
バッファにフリーバッファチャンクがある場合において、ストリーミングメディアをダウンロードし、前記ストリーミングメディアを前記フリーバッファチャンクにバッファリングするステップと、
バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できる場合において、バッファチャンクにバッファリングされているストリーミングメディアを再生し、前記バッファチャンクを解放してフリーバッファチャンクにするステップとを含む。
【０００９】
当該方法は、
フリーバッファチャンクがない場合において、ストリーミングメディアのダウンロードを停止し、
バッファリングされたストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できない場合において、ストリーミングメディアの再生を停止することを更に含む。
【００１０】
当該方法は、
再生バッファにおけるストリーミングメディアの受信側において、
再生バッファはダウンロード速度に従って、ネットワークを通じて１つのチャンクのストリーミングメディアをダウンロードするステップａと、
再生バッファにフリーバッファチャンクがないか否かを判断し、再生バッファにフリーバッファチャンクがない場合、再生バッファは、ネットワークを通じてストリーミングメディアをダウンロードすることを停止し、本ステップに戻り、再生バッファにフリーバッファチャンクが出現するまで繰り返し、再生バッファにフリーバッファチャンクがある場合、再生バッファから１つのフリーバッファチャンクを取り出し、ステップｃを実行するステップｂと、
前記ステップａにおいてダウンロードされたストリーミングメディアを前記ステップｂにおいて取り出されたフリーバッファチャンクに保存し、前記ストリーミングメディアがバッファリングされているバッファチャンクを再生バッファに返し、そして、ステップａに戻り、ストリーミングメディアのダウンロードが完了するまで、繰り返すステップｃとを実行し、
再生バッファにおけるストリーミングメディアの再生側において、
再生バッファにおいてストリーミングメディアがバッファリングされているバッファチャンク数が、ストリーミングメディアが再生バッファにバッファリングされている所要の時間に対応する所定のバッファチャンク数より小さいか否かを判断し、小さい場合、再生バッファはバッファチャンクにおけるストリーミングメディアの再生を停止し、本ステップに戻り、再生バッファにおいてストリーミングメディアがバッファリングされているバッファチャンク数が、前記所定のバッファチャンク数以上となるまで、繰り返し、小さくない場合、ステップＢを実行するステップＡと、
再生速度に従って、再生バッファから１つのバッファチャンクを順番に取り出し、前記バッファチャンクに保存されているストリーミングメディアを再生し、再生した後、フリーバッファチャンクとなる前記再生されたストリーミングメディアが保存されているバッファチャンクを返し、そして、ステップＡに戻り、ストリーミングメディアの再生が完了するまで、繰り返すステップＢとを実行することを含む。
【００１１】
前記バッファは、全部のフリーバッファチャンクを管理するフリーバッファキューと、ストリーミングメディアがバッファリングされている全部のバッファチャンクを管理するメディアバッファキューとを含む。
【００１２】
前記ステップｂは、
前記フリーバッファキューに対してフリーバッファチャンクのゲット操作を実行し、当該操作の戻り値がナルであるか否かを判断し、ナルである場合、再生バッファにフリーバッファチャンクがないと判断し、再生バッファはネットワークからストリーミングメディアチャンクのダウンロードを停止し、そして、ステップｂに戻り、ナルでない場合、再生バッファにフリーバッファチャンクがあると判断し、再生バッファから１つのフリーバッファチャンクを取り出し、そして、ステップｃを実行することを含む。
【００１３】
前記ステップｃは、
前記ステップａのストリーミングメディアを前記ステップｂにおいて取り出されたフリーバッファチャンクに保存し、そして、メディアバッファキューに対するバッファチャンクのプット操作を実行することにより、前記ストリーミングメディアが保存されているバッファチャンクを再生バッファのメディアバッファキューに返し、そして、ステップａに戻り、ストリーミングメディアのダウンロードが完了するまで、繰り返すことを含む。
【００１４】
前記ステップＡは、
メディアバッファキュー内のバッファチャンク数が、ストリーミングメディアが再生バッファにバッファされている所要の時間に対応するバッファチャンク数より小さいか否かを判断し、小さい場合、再生バッファはバッファチャンクに保存されているストリーミングメディアを再生することを停止し、そして、本ステップに戻り、メディアバッファキュー内のバッファチャンク数が、ストリーミングメディアが再生バッファにバッファリングされている所要の時間に対応するバッファチャンク数以上となるまで、繰り返し、小さくない場合、ステップＡ２を実行するステップＡ１と、
再生バッファは再生速度に従って、メディアバッファキューから取り出したバッファチャンクを再生し、そして、フリーバッファキューに対してフリーバッファチャンクのプット操作を実行し、フリーバッファチャンクとなる再生されたストリーミングメディアが保存されているバッファチャンクを再生バッファのフリーバッファキューに返し、ステップＡ１に戻り、ストリーミングメディアの再生が完了するまで、繰り返すステップＡ２とを含む。
【００１５】
ネットワークからダウンロードされたストリーミングメディアによって、再生バッファに取り出されていないストリーミングメディアが上書きされることができない１つのダウンロードバッファを予め設定し、
前記ステップａは、
ダウンロードバッファはネットワークを通じてストリーミングサーバからストリーミングメディアを取得し、再生バッファは当該ダウンロードバッファからストリーミングメディアを取得することを含み、
前記ステップｂは、
再生バッファはダウンロードバッファからストリーミングメディアチャンクの取得を停止し、ダウンロードバッファは、その中のストリーミングメディアが取り出されておらず、且つ新たにダウンロードされたストリーミングメディアによって上書きされるべきではないため、ネットワークを通じてストリーミングサーバからストリーミングメディアのダウンロードを停止することを含む。
【００１６】
当該方法は、
ストリーミングメディアが再生される前にバッファリングされる所要の全時間長をバッファチャンク時間長で予め除算し、除算結果を前記所定のバッファチャンク数とすることを更に含む。
【００１７】
ストリーミングメディアをバッファリングする装置であって、
ダウンロードされたストリーミングメディアをバッファリングするバッファリングモジュールと、
前記バッファリングモジュールにフリーバッファチャンクがある場合、ストリーミングメディアをダウンロードし、ダウンロードしたストリーミングメディアをフリーバッファチャンクにバッファリングするダウンロードモジュールと、
前記バッファリングモジュールにおいて、現在バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できる場合、バッファリングモジュール内のストリーミングメディアを再生し、前記ストリーミングメディアがバッファリングされているバッファチャンクを解放してフリーバッファチャンクにする再生モジュールとを含む。
【００１８】
前記バッファリングモジュールは、
前記バッファリングモジュール内のフリーバッファチャンクを管理するフリーバッファキューと、
前記バッファリングモジュールにおいてストリーミングメディアがバッファリングされているバッファチャンクを管理するメディアバッファキューとを含む。
前記ダウンロードモジュールは、前記バッファリングモジュールにフリーバッファチャンクがない場合、ストリーミングメディアのダウンロードを停止することに更に用いられ、
前記再生モジュールは、前記バッファリングモジュールにおいて、現在バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できない場合、ストリーミングメディアの再生を停止することに更に用いられる。
前記ダウンロードモジュールは、
ストリーミングメディアをダウンロードし、ダウンロードしたストリーミングメディアを当該サブモジュールのダウンロードバッファにバッファリングするダウンロードサブモジュールと、
前記ダウンロードバッファからストリーミングメディアを取得し、前記バッファリングモジュールにフリーバッファチャンクがある場合、前記ストリーミングメディアを前記バッファリングモジュールにバッファリングし、前記バッファリングモジュールにフリーバッファチャンクがない場合、ストリーミングメディアのダウンロードを停止するメディアの取り出しサブモジュールとを更に含む。
【００１９】
前記ダウンロードバッファは、
前記ダウンロードしたストリーミングメディアによって、取り出されていないストリーミングメディアが上書きされることができないように予め設定される。
【発明の効果】
【００２０】
上記からわかるように、本発明において、現在ダウンロードしているストリーミングメディアをバッファリングするためのフリーバッファチャンクが再生バッファに現在ないか否かをリアルタイムに判断することを通じて、現在、ダウンロード速度が再生速度より大きいことによりストリーミングメディアが上書きされる問題をもたらすか否かを判断し、且つ当該問題をもたらすと判断する場合、現在のストリーミングメディアのダウンロードを一時停止し、これによって、ストリーミングメディアが上書きされる問題を回避する。本発明において、現在、再生バッファにバッファリングされているストリーミングメディアのバッファリングした後の再生時刻が、再生速度に従って当該ストリーミングメディアを再生すべき時刻より遅いか否かをリアルタイムに判断することを通じて、現在、再生速度がダウンロード速度より大きいことが、再生の不連続の問題をもたらすか否かを判断し、且つ当該問題をもたらすと判断する場合、現在のストリーミングメディアに対する再生を一時停止し、これによって、ストリーミングメディアの再生の不連続の問題を回避する。従って、ストリーミングメディアのバッファリングと再生プロセスにおいてエラーが発生しないことが確保でき、且つストリーミングメディアの再生品質が確保できる。
【発明を実施するための最良の形態】
【００２１】
本発明はストリーミングメディアをバッファリングする方法及び装置を提供して、ストリーミングメディアのダウンロード及び再生の速度を制御し、これによって、速度の不一致による再生バッファ内のストリーミングメディアの上書きの問題とストリーミングメディアの再生の不連続の問題とを回避する。
【００２２】
本発明の核心的発明構想は、再生バッファが、ダウンロード速度に従ってストリーミングメディアをダウンロードし、ダウンロードしたストリーミングメディアをフリーバッファチャンクにバッファリングし、再生速度に従ってバッファリングしたストリーミングメディアを再生し、且つ前記ストリーミングメディアを再生した後、再生したストリーミングメディアが保存されているバッファチャンクを解放してフリーバッファチャンクにする。当該方法には、上記動作を行うとともに下記の判断をリアルタイムに実行することが更に含まれる。
【００２３】
現在ダウンロードされているストリーミングメディアをバッファリングするためのフリーバッファチャンクが再生バッファに現在ないか否かをリアルタイムに判断し、フリーバッファチャンクがない場合、現在のストリーミングメディアをダウンロードするステップの実行を停止し、本ステップに戻って判断を継続し、フリーバッファチャンクがある場合、前記ストリーミングメディアをダウンロードし、ダウンロードしたストリーミングメディアをフリーバッファチャンクにバッファリングするステップを実行する。
【００２４】
再生バッファに現在バッファリングされているストリーミングメディアのバッファリングした後の再生時刻が、再生速度に従って当該ストリーミングメディアを再生すべき時刻より遅いか否かをリアルタイムに判断し、遅い場合、現在のストリーミングメディアを再生するステップの実行を停止し、本ステップに戻って判断を継続し、遅くない場合、前記ストリーミングメディアを再生するステップ及びバッファチャンクを解放してフリーバッファチャンクにするステップを実行する。
【００２５】
以下に、まず本発明によって提供される方法について詳しく説明する。
【００２６】
本発明の実施形態におけるバッファは、例えばストリーミングメディアプレーヤー内の再生バッファなどの多種のバッファであってもよい。本発明の実施形態において、バッファチャンクを使用してストリーミングメディアをバッファリングするため、本発明の実現には下記のステップの実行が必要である。
【００２７】
再生バッファにおけるストリーミングメディアの受信側において、下記のステップを実行する。
【００２８】
ステップａで、再生バッファはダウンロード速度に従って、ネットワークを通じて１つのチャンクのストリーミングメディアをダウンロードする。
【００２９】
ステップｂで、現在、再生バッファにフリーバッファチャンクがまだあるか否かを判断し、フリーバッファチャンクがある場合、再生バッファから１つのフリーバッファチャンクを取り出し、フリーバッファチャンクがない場合、再生バッファは、ネットワークを通じてストリーミングメディアチャンクをダウンロードすることを停止し、本ステップに戻り、再生バッファにフリーバッファチャンクが出現するまで、繰り返す。
【００３０】
ステップｃで、ステップａにおける前記ストリーミングメディアをステップｂにおいて取り出したフリーバッファチャンクに保存し、且つストリーミングメディアが保存されている当該バッファチャンクを再生バッファに返す。そして、ステップａに戻り、ストリーミングメディアのダウンロードが完了するまで、繰り返す。
【００３１】
再生バッファにおけるストリーミングメディアの再生側において、下記のステップを実行する。
【００３２】
ステップＡで、再生バッファにおいてストリーミングメディアが保存されているバッファチャンク数が、ストリーミングメディアが再生バッファにバッファリングされている必要がある時間に対応するバッファチャンク数以上であるか否かを判断する。以上である場合、ステップＢを実行する。以上でない場合、再生バッファは、バッファチャンクの再生を停止し、本ステップに戻り、再生バッファにおいてストリーミングメディアが保存されているバッファチャンク数が、ストリーミングメディアが再生バッファにバッファリングされている必要がある時間に対応するバッファチャンク数以上となるまで、繰り返す。
【００３３】
ステップＢで、再生速度に従って、再生バッファから順番にストリーミングメディアが保存されている１つのバッファチャンクを取り出し且つ再生し、再生した後、前記再生したストリーミングメディアが保存されているフリーバッファチャンクを再生バッファに返す。そして、ステップＡに戻り、ストリーミングメディアの再生が完了するまで、繰り返す。
【００３４】
以下、本発明について、具体的な実施形態と図面を参照して詳しく説明する。
【００３５】
具体的に説明する前に、まず、本発明の実施形態に関する幾つかの変数について説明する。
【００３６】
再生バッファのバッファチャンクの総数ＣｈｕｎｋＮｕｍは、ストリーミングメディアプレーヤーにおいてストリーミングメディアをバッファリングするためのバッファチャンクの総数を表す。
【００３７】
バッファチャンク時間長ＣｈｕｎｋＤｕｒａｔｉｏｎは、各ストリーミングメディアが１つのバッファチャンクにバッファリングされている時間を表す。
【００３８】
バッファ全時間長ＢｕｆｆｅｒＴｉｍｅは、各ストリーミングメディアが再生バッファにバッファリングされている全時間長を表す。ストリーミングメディアが再生バッファにバッファリングされている時間が当該バッファ全時間長に達した場合にのみ、当該ストリーミングメディアを再生バッファから実際に再生することが許可される。
【００３９】
上記３つの変数は実際のテスト（ｔｅｓｔ）において調整して最適値を選択することができる。製品の実際のテストにおいて、ＣｈｕｎｋＮｕｍを１０とし、ＣｈｕｎｋＤｕｒａｔｉｏｎを２秒とし、ＢｕｆｆｅｒＴｉｍｅを６秒とするように選択することができ、実際の要求に基づいて、以上の３つの変数のそれぞれに他の値を選択してもよい。それが本発明の実現に影響を及ぼさない。
【００４０】
本発明の実施形態において、ダウンロード速度及び再生速度に対する制御を実現するため、再生バッファにフリーバッファキューとメディアバッファキューとを導入する。そのうち、フリーバッファキューは再生バッファにおいてストリーミングメディアによって占用されていない全部のフリーバッファチャンクを管理し、メディアバッファキューは再生バッファにおいてストリーミングメディアによって占用されており且つ実際的な再生を待っている全部のバッファチャンクを管理する。この２つのバッファキューに対して、ストリーミングメディアのファーストインファーストアウト（ＦＩＦＯ：Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）の原則に従って、各自の操作をそれぞれ設計する。
【００４１】
そのうち、フリーバッファキューに対する操作は、フリーバッファチャンクの取り出し（ＧｅｔＦｒｅｅＢｕｆｆｅｒ）操作と、フリーバッファチャンクの保存（ＰｕｔＦｒｅｅＢｕｆｆｅｒ）操作とを含む。
【００４２】
フリーバッファチャンクの取り出し操作において、フリーバッファキューから１つのバッファチャンクを取り出すとともに、フリーバッファキューの現在バッファチャンク数を１減算する。当該操作を実行するとき、フリーバッファキューにフリーバッファチャンクがなければ、当該操作はナル（ｎｕｌｌ）を返す。
【００４３】
フリーバッファチャンクの保存操作において、再生バッファ内の１つのフリーバッファチャンクをフリーバッファキューに返すとともに、フリーバッファキューの現在バッファチャンク数を１加算する。
【００４４】
メディアバッファキューに対する操作は、メディアバッファチャンクの取り出し（ＧｅｔＭｅｄｉａＢｕｆｆｅｒ）操作と、メディアバッファチャンクの保存（ＰｕｔＭｅｄｉａＢｕｆｆｅｒ）操作とを含む。
【００４５】
メディアバッファチャンクの取り出し操作において、メディアバッファキューからストリーミングメディアが保存されている１つのバッファチャンクを、当該バッファチャンク内のストリーミングメディアが再生バッファから実際的に再生されることができるように取り出すとともに、メディアバッファキューの現在バッファチャンク数を１減算する。当該操作を実行するとき、メディアバッファキューにバッファチャンクがなければ、当該操作はナルを返す。
【００４６】
メディアバッファチャンクの保存操作において、ストリーミングメディアが保存されている１つのバッファチャンクを、実際に当該ストリーミングメディアが再生されることを待つようにメディアバッファキューに保存するとともに、メディアバッファキューの現在バッファチャンク数を１加算する。
【００４７】
ここで、ストリーミングメディアをバッファリングする前に、再生バッファ内の全部のバッファチャンクがフリーバッファキューに保存されており、つまり、フリーバッファキューのバッファチャンク数がＣｈｕｎｋＮｕｍと等しく、メディアバッファキューのバッファチャンク数が０と等しい。
【００４８】
上記のように設定した後、本発明において、下記のステップを通じて上記の本発明の実施形態の各ステップを実現することができる。
【００４９】
１、図１を参照して、再生バッファにおけるストリーミングメディアの受信側において、下記のステップを実行する。
【００５０】
ステップ１０１で、ストリーミングメディアのダウンロードが既に完了したか否かを判断し、完了した場合、本プロセスを終了し、完了していない場合、ステップ１０２を実行する。
【００５１】
ステップ１０２で、再生バッファがネットワークから１つのチャンクのストリーミングメディアをダウンロードする。ここで、本発明の実施形態において、便利に実現するために、ネットワークからダウンロードされたストリーミングメディアを受信し且つバッファリングするための１つのダウンロードバッファが設置されている。当該ダウンロードバッファはネットワークを通じてストリーミングサーバからストリーミングメディアを取得し、再生バッファはまた当該ダウンロードバッファからストリーミングメディアを得る。ここで、前記ダウンロードバッファに対して以下のように制限する、即ち、ネットワークからダウンロードされたストリーミングメディアを用いて、再生バッファによって取り出されていないストリーミングメディアを上書きしてはいけない。当該制限及び後続の具体的なプロセスにより、ダウンロード速度に対する制御を図る。
【００５２】
本発明の他の実施形態において、再生バッファは直接にネットワークを通じてストリーミングサーバからストリーミングメディアチャンクを取得することもできる。それが本発明の実現に影響を及ぼさない。
【００５３】
ステップ１０３〜ステップ１０４で、フリーバッファキューに対してフリーバッファチャンクの取り出し操作を実行し、当該操作の戻り値がナルであるか否かを判断する。ナルである場合、フリーバッファキューに現在フリーバッファチャンクがないことを表し、相応的に、再生バッファ内の各バッファチャンクに現在全部ストリーミングメディアが保存されていることを表し、現在ネットワークから取得されたストリーミングメディアによって再生バッファ内のまだ再生されていないストリーミングメディアが上書きされることを回避するため、ステップ１０５を実行する。ナルでない場合、再生バッファに、受信されたストリーミングメディアを保存できるフリーバッファチャンクがまだあることを表し、ステップ１０６を実行する。
【００５４】
ステップ１０５で、再生バッファがネットワークからストリーミングメディアのダウンロードを停止する。そして、ステップ１０３に戻り、フリーバッファキューに対して実行したフリーバッファチャンクの取り出し操作の戻り値がナル以外となるまで、繰り返す。
【００５５】
ここで、本発明の実施形態において、再生バッファがダウンロードバッファからストリーミングメディアを取得することを停止し、上記ダウンロードバッファに対する制限に基づいて、再生バッファがダウンロードバッファからストリーミングメディアを取得することを停止した後、ダウンロードバッファは、その中のストリーミングメディアがまだ取り出されておらず且つ新たにダウンロードしたストリーミングメディアによって上書きされるべきではないため、ネットワークを通じてストリーミングサーバからストリーミングメディアをダウンロードすることを停止し、これによって、ダウンロード速度を制御する目的に達することができる。
【００５６】
本発明の他の実施形態において、再生バッファは直接にネットワークを通じてストリーミングサーバからストリーミングメディアのダウンロードを停止することもでき、これによって、ダウンロード速度を制御する。この方式を採用しても本発明の実現に影響を及ぼさない。
【００５７】
ステップ１０６〜ステップ１０７で、ステップ１０２においてダウンロードされたストリーミングメディアをステップ１０３において取り出されたフリーバッファチャンクに保存し、そして、メディアバッファキューに対してメディアバッファチャンクの保存操作を実行することで、当該ストリーミングメディアが保存されているバッファチャンクを再生バッファのメディアバッファキューに返す。そして、ステップ１０１に戻り、ストリーミングメディアのダウンロードが完了するまで、繰り返す。
【００５８】
２、図２を参照して、再生バッファにおけるストリーミングメディアの再生側において、下記のステップを実行する。
【００５９】
ステップ２０１で、再生バッファはストリーミングメディアの再生が既に完了したか否かを判断し、完了した場合、本プロセスを終了し、完了していない場合、ステップ２０２を実行する。
【００６０】
ステップ２０２で、再生バッファは、メディアバッファキュー内のバッファチャンク数が、ストリーミングメディアが再生バッファにバッファリングされている必要がある時間に対応するバッファチャンク数以上であるか否かを判断する。以上である場合、ステップ２０３を実行する。以上でない場合、再生バッファはバッファチャンクに保存されているストリーミングメディアを再生することを停止し、そして、本ステップに戻り、メディアバッファキュー内のバッファチャンク数が、ストリーミングメディアが再生バッファにバッファリングされている必要がある時間に対応するバッファチャンク数以上となるまで、繰り返す。
【００６１】
ここで、当該方法において、ストリーミングメディアをバッファリングする前に、前記ストリーミングメディアが再生バッファにバッファリングされている必要がある時間に対応するバッファチャンク数を予め算出する。当該バッファチャンク数はＢｕｆｆｅｒＴｉｍｅ／ＣｈｕｎｋＤｕｒａｔｉｏｎと等しい。
【００６２】
ステップ２０３で、再生バッファは再生速度に従って、その中のメディアバッファキューに対してメディアバッファチャンクの取り出し操作を実行する。
【００６３】
ステップ２０４〜ステップ２０５で、ストリーミングメディアの再生を実現するように、メディアバッファキューから取り出されたバッファチャンクにおけるストリーミングメディアを再生し、そして、フリーバッファキューに対してフリーバッファチャンクの保存操作を実行し、再生した後、前記再生したストリーミングメディアが保存されているフリーバッファチャンクを再生バッファのフリーバッファキューに返し、ステップ２０１に戻り、ストリーミングメディアの再生が完了するまで、繰り返す。
【００６４】
以下、本発明によって提供される装置について、図面を参照して詳しく説明する。
【００６５】
図３を参照して、本発明によって提供される装置は、ストリーミングメディアをダウンロードするダウンロードモジュール３０１と、ダウンロードされたストリーミングメディアを再生する再生モジュール３０２と、ダウンロードされたストリーミングメディアをバッファリングするバッファリングモジュール３０３とを含む。
【００６６】
ストリーミングメディアのダウンロード及び再生のプロセスにおいて、ダウンロードモジュール３０１は、バッファリングモジュール３０２にフリーバッファチャンクがあるか否かを判断し、且つフリーバッファチャンクがない場合、ストリーミングメディアのダウンロードを停止する。
【００６７】
再生モジュール３０２は、バッファリングモジュール３０３に現在バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できるか否かを判断し、満足できる場合、バッファリングモジュール３０３内のストリーミングメディアを再生し、且つ当該ストリーミングメディアが保存されているバッファチャンクを解放してフリーバッファチャンクにし、満足できない場合、ストリーミングメディアの再生を停止する。
【００６８】
図４を参照して、本発明の実施形態において、バッファリングモジュール３０３は、バッファリングモジュール３０３内のフリーバッファチャンクを管理するフリーバッファキューと、バッファリングモジュール３０３内の既にストリーミングメディアによって占用されているバッファチャンクを管理するメディアバッファキューとを含む。
【００６９】
ダウンロードモジュール３０１は、ストリーミングメディアをダウンロードするプロセスにおいて、ダウンロードしたストリーミングメディアをバッファリングするための１つのバッファチャンクをフリーバッファキューから取り出すように、前記フリーバッファキューに対してフリーバッファチャンクの取り出し操作を実行し、ストリーミングメディアをバッファリングする操作を実行するとともに、ストリーミングメディアがバッファリングされているバッファチャンクをメディアバッファチャンクとしてメディアバッファキューに入れるように、メディアバッファキューに対してメディアバッファチャンクの保存操作を実行する。当該操作を実行するとき、フリーバッファキューにフリーバッファチャンクがなければ、当該操作はナルを返し、ダウンロードモジュール３０１は当該返された結果に基づいてバッファリングモジュール３０３に現在フリーバッファチャンクがないことを判断できる。
【００７０】
再生モジュール３０２は、ストリーミングメディアを再生するプロセスにおいて、メディアバッファキューにおいてストリーミングメディアがバッファリングされているバッファチャンク数が、ストリーミングメディアを連続再生する要求を満足できるか否かを判断する。満足できる場合、当該再生モジュール３０２は前記フリーバッファキューに対してメディアバッファチャンクの取り出し操作を実行し、取り出したメディアバッファチャンク内のストリーミングメディアを再生し且つ当該メディアバッファチャンクを解放してフリーバッファチャンクにする。満足できない場合、再生モジュール３０２は再生を停止する。ストリーミングメディアの再生を実行するとともに、再生モジュール３０２は、解放して得たフリーバッファチャンクをフリーバッファキューに返すように、フリーバッファキューに対してフリーバッファチャンクの保存操作を実行する。
【００７１】
図４に示す本発明の実施形態において、ダウンロードモジュールは、ダウンロードサブモジュールと、メディアの取り出しサブモジュールとを含む。
【００７２】
ダウンロードサブモジュールは、ストリーミングメディアをダウンロードし、且つダウンロードしたストリーミングメディアを当該サブモジュールのダウンロードバッファにバッファリングする。
【００７３】
メディアの取り出しサブモジュールは、前記ダウンロードバッファからストリーミングメディアを取得して当該ストリーミングメディアを前記バッファリングモジュールにバッファリングし、且つバッファリングモジュールにフリーバッファチャンクがあるか否かを判断し、フリーバッファチャンクがない場合、ストリーミングメディアのダウンロードを停止する。本発明の好ましい実施形態において、ダウンロードサブモジュール内のダウンロードバッファに対して予め設定し、ネットワークからダウンロードしたストリーミングメディアを用いてメディアの取り出しサブモジュールによって取り出されていないストリーミングメディアを上書きしてはいけないと規定する。これによって、ダウンロードモジュールは、バッファリングモジュールにフリーバッファチャンクがない場合において、ストリーミングメディアのダウンロードを自動的に停止することができる。本発明の他の実施形態において、他の方式を採用してストリーミングメディアのダウンロードの停止に対する制御を実現してもよい。それが本発明の実現に影響を及ぼさない。
【００７４】
上記説明されたものは、本発明の好ましい実施形態にすぎず、本発明の保護範囲を限定するものではない。本発明の精神と原則内で行われる種々の修正、均等切替、改善などは全て本発明の保護範囲内に含まれるべきである。
【図面の簡単な説明】
【００７５】
【図１】本発明の実施形態において、再生バッファにおけるストリーミングメディアの受信側で実行されるステップのフローチャートである。
【図２】本発明の実施形態において、再生バッファにおけるストリーミングメディアの再生側で実行されるステップのフローチャートである。
【図３】本発明によって提供される装置を示す図である。
【図４】本発明の実施形態において提供される装置を示す図である。
【符号の説明】
【００７６】
３０１  ダウンロードモジュール
３０２  再生モジュール
３０３  バッファリングモジュール
【図１】
2008526057.tif 000003
【図２】
2008526057.tif 000004
【図３】
2008526057.tif 000005
【図４】
2008526057.tif 000006
【手続補正書】
【提出日】平成19年6月25日(2007.6.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストリーミングメディアをバッファリングする方法であって、
バッファにフリーバッファチャンクがある場合において、ストリーミングメディアをダウンロードし、前記ストリーミングメディアを前記フリーバッファチャンクにバッファリングするステップと、
バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できる場合において、バッファチャンクにバッファリングされているストリーミングメディアを再生し、前記バッファチャンクを解放してフリーバッファチャンクにするステップと、
を含むことを特徴とする方法。
【請求項２】
フリーバッファチャンクがない場合において、ストリーミングメディアのダウンロードを停止し、
バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できない場合において、ストリーミングメディアの再生を停止することを更に含む、
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記ストリーミングメディアを連続再生する要求は、
バッファにおいてストリーミングメディアがバッファリングされているバッファチャンク数が、ストリーミングメディアがバッファにバッファリングされている必要がある時間に対応する所定のバッファチャンク数以上である、
ことを特徴とする請求項１に記載の方法。
【請求項４】
前記バッファは、全部のフリーバッファチャンクを管理するフリーバッファキューと、ストリーミングメディアがバッファリングされている全部のバッファチャンクを管理するメディアバッファキューとを含む、
ことを特徴とする請求項２に記載の方法。
【請求項５】
前記ストリーミングメディアのダウンロード及びダウンロードの停止は、
前記フリーバッファキューからフリーバッファチャンクを取り出し、戻り値がナルである場合、ストリーミングメディアのダウンロードを停止し、戻り値がナルでない場合、ストリーミングメディアをダウンロードすることを含む、
ことを特徴とする請求項４に記載の方法。
【請求項６】
前記ストリーミングメディアを前記フリーバッファチャンクにバッファリングした後、メディアバッファキューに対してバッファチャンクの保存操作を実行することにより、前記ストリーミングメディアがバッファリングされているバッファチャンクをメディアバッファキューに返すことを更に含む、
ことを特徴とする請求項４に記載の方法。
【請求項７】
前記ストリーミングメディアの再生及び再生の停止は、
バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できる場合、メディアバッファキューからバッファチャンクを取り出し、当該バッファチャンクにおけるストリーミングメディアを再生し、
バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できない場合、ストリーミングメディアの再生を停止することを含む、
ことを特徴とする請求項４に記載の方法。
【請求項８】
バッファチャンクにおけるストリーミングメディアを再生した後、フリーバッファキューに対してフリーバッファチャンクの保存操作を実行することにより、前記再生したストリーミングメディアがバッファリングされているフリーバッファチャンクをフリーバッファキューに返すことを更に含む、
ことを特徴とする請求項４に記載の方法。
【請求項９】
ストリーミングメディアが再生前にバッファリングされている必要がある全時間長をバッファチャンク時間長で予め除算し、除算結果を前記所定のバッファチャンク数とすることを更に含む、
ことを特徴とする請求項３に記載の方法。
【請求項１０】
ストリーミングメディアをバッファリングする装置であって、
ダウンロードされたストリーミングメディアをバッファリングするバッファリングモジュールと、
前記バッファリングモジュールにフリーバッファチャンクがある場合、ストリーミングメディアをダウンロードし、ダウンロードしたストリーミングメディアをフリーバッファチャンクにバッファリングするダウンロードモジュールと、
前記バッファリングモジュールにおいて、現在バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できる場合、バッファリングモジュール内のストリーミングメディアを再生し、前記ストリーミングメディアがバッファリングされているバッファチャンクを解放してフリーバッファチャンクにする再生モジュールと、
を含むことを特徴とする装置。
【請求項１１】
前記バッファリングモジュールは、
前記バッファリングモジュール内のフリーバッファチャンクを管理するフリーバッファキューと、
前記バッファリングモジュール内の、ストリーミングメディアがバッファリングされているバッファチャンクを管理するメディアバッファキューと、
を含むことを特徴とする請求項１０に記載の装置。
【請求項１２】
前記ダウンロードモジュールは、更に、前記バッファリングモジュールにフリーバッファチャンクがない場合、ストリーミングメディアのダウンロードを停止し、
前記再生モジュールは、更に、前記バッファリングモジュールにおいて、現在バッファリングされているストリーミングメディアの量が、ストリーミングメディアを連続再生する要求を満足できない場合、ストリーミングメディアの再生を停止する、
ことを特徴とする請求項１０に記載の装置。
【請求項１３】
前記ダウンロードモジュールは、
ストリーミングメディアをダウンロードし、ダウンロードしたストリーミングメディアを当該サブモジュールのダウンロードバッファにバッファリングするダウンロードサブモジュールと、
前記ダウンロードバッファからストリーミングメディアを取得し、前記バッファリングモジュールにフリーバッファチャンクがある場合、前記ストリーミングメディアを前記バッファリングモジュールにバッファリングし、前記バッファリングモジュールにフリーバッファチャンクがない場合、ストリーミングメディアのダウンロードを停止するメディアの取り出しサブモジュールと、
を更に含むことを特徴とする請求項１１に記載の装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】削除
【補正の内容】
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】削除
【補正の内容】
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】削除
【補正の内容】
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】削除
【補正の内容】
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】削除
【補正の内容】
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】削除
【補正の内容】
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】削除
【補正の内容】
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】削除
【補正の内容】
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】削除
【補正の内容】
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】変更
【補正の内容】
【００６６】
ストリーミングメディアのダウンロード及び再生のプロセスにおいて、ダウンロードモジュール３０１は、バッファリングモジュール３０３にフリーバッファチャンクがあるか否かを判断し、且つフリーバッファチャンクがない場合、ストリーミングメディアのダウンロードを停止する。
【国際調査報告】
2008526057.tif 000007
2008526057.tif 000008
2008526057.tif 000009
2008526057.tif 000010