JP2005303927A - 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム - Google Patents

情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム Download PDF

Info

Publication number
JP2005303927A
JP2005303927A JP2004120716A JP2004120716A JP2005303927A JP 2005303927 A JP2005303927 A JP 2005303927A JP 2004120716 A JP2004120716 A JP 2004120716A JP 2004120716 A JP2004120716 A JP 2004120716A JP 2005303927 A JP2005303927 A JP 2005303927A
Authority
JP
Japan
Prior art keywords
information
unit
information processing
processing apparatus
transmission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004120716A
Other languages
English (en)
Inventor
Yosuke Tamura
陽介 田村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2004120716A priority Critical patent/JP2005303927A/ja
Priority to US11/090,127 priority patent/US20050234892A1/en
Publication of JP2005303927A publication Critical patent/JP2005303927A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17318Direct or substantially direct transmission and handling of requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4788Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet

Abstract

【課題】クライアントが任意の位置でコンテンツデータのストリーミング配信を受けることができるようにする。
【解決手段】 クライアント42は、第1の位置にいるとき、サーバ41−1に対してコンテンツデータのストリーミング配信の要求を出す。サーバ41−1は、コンテンツデータをクライアント42にストリーミング配信する。クライアント42は、サーバ41−1とのコネクション情報を自ら管理する。クライアント42は、第1の位置から第2の位置に移動したとき、それまでのサーバ41−1とのコネクション情報に基づいて、連続するコンテンツデータのストリーミング配信を他のサーバ41−2に要求する。サーバ41−1,41−2は、コンテンツデータを1GOPを1ユニットとするユニットに分割し、ユニットをさらにセグメントに分割してストリーミング配信する。本発明は、インターネットを介する情報処理システムに適用することが可能である。
【選択図】図3

Description

本発明は、情報処理システム、情報処理装置および方法、記録媒体、並びにプログラムに関し、特に、位置を移動しても、同一のコンテンツのストリーミング配信を続けて受けることができるようにした情報処理システム、情報処理装置および方法、記録媒体、並びにプログラムに関する。
最近、インターネットが普及し、サーバからクライアントに対してインターネットを介して各種のコンテンツが提供されるようになってきた。コンテンツを提供する形式に、プッシュ型とプル型とがある。また、コンテンツは、ファイルとして提供される場合と、ストリーミングとして提供される場合とがある。一般的に、ファイル単位でコンテンツを提供する場合、HTTP(Hyper Text Transfer Protocol)が利用され、ストリーミング配信を行う場合、Real-Time Protocol (RCT)(非特許文献1)が利用される。
コンテンツがファイルとして提供される場合、クライアントはそのファイルを構成する全てのデータを受信し、記憶してからそれを再生することができる。従って、そのファイルのサイズが大きい場合には、受信を開始してから再生を開始するまでの時間が比較的長くなることになる。
これに対して、ストリーミング配信の場合は、受信したデータをその範囲で再生することが可能であるため、リアルタイムでコンテンツを再生することが可能となる。
また、プッシュ型では、サーバがコンテンツ提供の状態を管理する。これに対してプル型では、クライアントが、コンテンツの受信状態を管理し、サーバはクライアントからの要求に基づいてデータを配信する。
プッシュ型でストリーミング配信を行う場合、例えば、図1に示されるような手順となる。すなわち、サーバ11とクライアント12との間でコネクションに関してコントロールが行われ、サーバ11からクライアント12に対して、コンテンツデータがストリーミング配信される。サーバ11は、クライアント12からストリーミング配信に関するフィードバック情報を得て、コネクション情報を管理する。コネクション情報に基づいて、クライアント12に対して、何らかの理由によりコンテンツが受信されていないことが判明した場合、サーバ11は、再度コンテンツを配信するなどの処理を行う。
H. Schulzrinne, S. Casner, R. Frederick, and V. Jacobson. RTP: A Transport Protocol for Real-Time Applications. RFC 1889, January 1996
しかしながら、プッシュ型でストリーミング配信を行うと、サーバが、コンテンツをどこまで送信したかを管理しなければならず、サーバにかかる負荷が大きくなるという課題がある。また、クライアント12が任意の位置に移動した結果、それまでのサーバからストリーミング配信を続けることが困難になることがある。このような場合、クライアントは、異なるサーバからそのコンテンツの提供を受ける必要があるが、そのためには、元のサーバから新しいサーバに、コネクション状態の管理を移行する必要がある。しかしながら、このような管理の移行は、事実上困難をともなうことが多く、結果的に、クライアントは、任意の位置に移動した場合、ストリーミング配信を受けることが困難になる課題がある。
本発明は、このような状況に鑑みてなされたものであり、クライアントが任意の位置に移動した場合にも、連続してストリーミング配信を受けることができるようにするものである。
請求項1の情報処理システムは、ネットワークを介して第1の情報処理装置から第2の情報処理装置に情報を提供する情報処理システムにおいて、前記第1の情報処理装置は、前記第2の情報処理装置から情報の提供の要求を受信する受信手段と、提供する前記情報としての1つのファイルを、単独で復号可能な処理単位に分割して、前記第2の情報処理装置に送信する送信手段とを備え、前記第2の情報処理装置は、前記第1の情報処理装置から送信されてきた前記情報を保持する保持手段と、前記保持手段に保持された前記情報を管理し、その保持量に応じて、1つの前記処理単位を構成する続く前記情報の提供を前記第1の情報処理装置に要求する要求手段と、前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生手段とを備えることを特徴とする。
前記送信手段は、処理単位をさらに伝送単位に分割して、伝送単位で情報を送信し、第2の情報処理装置は、伝送単位で伝送されてきた情報を一時的に記憶する一時記憶手段をさらに備え、保持手段は、一時記憶手段に記憶された伝送単位が処理単位に達したとき、一時記憶手段に記憶された処理単位の転送を受け、保持するようにすることができる。
前記処理単位は、ユニットであり、伝送単位は、セグメントであるようにすることができる。
前記セグメントは、ネットワークで伝送の単位として使用されるパケットに収まる大きさであるようにすることができる。
請求項5の情報処理方法は、ネットワークを介して第1の情報処理装置から第2の情報処理装置に情報を提供する情報処理システムの情報処理方法において、前記第1の情報処理装置の情報処理方法は、前記第2の情報処理装置から情報の提供の要求を受信する受信ステップと、提供する前記情報としての1つのファイルを、単独で復号可能な処理単位に分割して、前記第2の情報処理装置に送信する送信ステップとを含み、前記第2の情報処理装置の情報処理方法は、前記第1の情報処理装置から送信されてきた前記情報を保持する保持ステップと、保持された前記情報の保持量に応じて、1つの前記処理単位を構成する続く前記情報の提供を前記第1の情報処理装置に要求する要求ステップと、前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生ステップとを含むことを特徴とする。
請求項6の情報処理装置は、ネットワークを介して他の情報処理装置から情報の提供の要求を受け、前記他の情報処理装置に情報を提供する情報処理装置において、前記他の情報処理装置から、前記情報としての1つのファイルの、単独で復号可能な処理単位毎の提供の要求を受信する受信手段と、前記処理単位をさらに伝送単位に分割して、前記伝送単位で前記情報を前記他の情報処理装置に送信する送信手段と、前記処理単位を構成する全ての前記伝送単位が送信されたか否かを判定し、前記処理単位を構成する全ての前記伝送単位が送信されたとき、前記処理単位の送信を終了させ、前記受信手段により新たな前記処理単位の要求が受信されたとき、前記送信手段に、新たな前記処理単位を前記伝送単位で伝送させる判定手段とを備えることを特徴とする。
前記処理単位は、ユニットであり、伝送単位は、セグメントであるようにすることができる。
前記セグメントは、ネットワークで伝送の単位として使用されるパケットに収まる大きさであるようにすることができる。
前記送信手段は、処理単位の送信の先頭のタイミングで、実質的に情報を含まない空のセグメントを送信するようにすることができる。
請求項10の情報処理方法は、ネットワークを介して他の情報処理装置から情報の提供の要求を受け、前記他の情報処理装置に情報を提供する情報処理装置の情報処理方法において、前記他の情報処理装置から、前記情報としての1つのファイルの、単独で復号可能な処理単位毎の提供の要求を受信する受信ステップと、前記処理単位をさらに伝送単位に分割して、前記伝送単位で前記情報を前記他の情報処理装置に送信する送信ステップと、前記処理単位を構成する全ての前記伝送単位が送信されたか否かを判定し、前記処理単位を構成する全ての前記伝送単位が送信されたとき、前記処理単位の送信を終了させ、前記受信ステップの処理により新たな前記処理単位の要求が受信されたとき、前記送信ステップの処理に、新たな前記処理単位を前記伝送単位で伝送させる判定ステップとを含むことを特徴とする。
請求項11の記録媒体のプログラムは、ネットワークを介して他の情報処理装置から情報の提供の要求を受け、前記他の情報処理装置に情報を提供する情報処理装置のプログラムであって、前記他の情報処理装置から、前記情報としての1つのファイルの、単独で復号可能な処理単位毎の提供の要求を受信する受信ステップと、前記処理単位をさらに伝送単位に分割して、前記伝送単位で前記情報を前記他の情報処理装置に送信する送信ステップと、前記処理単位を構成する全ての前記伝送単位が送信されたか否かを判定し、前記処理単位を構成する全ての前記伝送単位が送信されたとき、前記処理単位の送信を終了させ、前記受信ステップの処理により新たな前記処理単位の要求が受信されたとき、前記送信ステップの処理に、新たな前記処理単位を前記伝送単位で伝送させる判定ステップとを含むことを特徴とする。
請求項12のプログラムは、ネットワークを介して他の情報処理装置から情報の提供の要求を受け、前記他の情報処理装置に情報を提供する情報処理装置のプログラムであって、前記他の情報処理装置から、前記情報としての1つのファイルの、単独で復号可能な処理単位毎の提供の要求を受信する受信ステップと、前記処理単位をさらに伝送単位に分割して、前記伝送単位で前記情報を前記他の情報処理装置に送信する送信ステップと、前記処理単位を構成する全ての前記伝送単位が送信されたか否かを判定し、前記処理単位を構成する全ての前記伝送単位が送信されたとき、前記処理単位の送信を終了させ、前記受信ステップの処理により新たな前記処理単位の要求が受信されたとき、前記送信ステップの処理に、新たな前記処理単位を前記伝送単位で伝送させる判定ステップとをコンピュータに実行させることを特徴とする。
請求項13の情報処理装置は、ネットワークを介して他の情報処理装置に情報の提供を要求し、前記他の情報処理装置から前記情報の提供を受ける情報処理装置において、前記他の情報処理装置が、前記情報としての1つのファイルを、単独で復号可能な処理単位に分割し、前記処理単位を、さらに前記ネットワークの伝送単位毎に分割して送信してきた前記情報を、前記処理単位で保持する保持手段と、前記保持手段に保持されている前記処理単位の保持量を判定する判定手段と、前記判定手段による判定結果に基づいて、続く前記処理単位の提供を前記他の情報処理装置に要求する要求手段と、前記他の情報処理装置に対する要求を管理する管理手段と、前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生手段とを備えることを特徴とする。
前記管理手段は、他の情報処理装置の識別情報、処理単位の提供を他の情報処理装置に要求した時刻、および保持手段に保持する予定の保持量を管理するようにすることができる。
前記要求手段は、保持手段に保持する予定の保持量を他の情報処理装置に通知し、情報処理装置は、他の情報処理装置に通知した保持量に基づいて、保持手段における保持量の予約量を更新する更新手段をさらに備えるようにすることができる。
前記処理単位は、ユニットであり、伝送単位は、セグメントであるようにすることができる。
前記セグメントは、ネットワークで伝送の単位として使用されるパケットに収まる大きさであるようにすることができる。
前記処理単位の送信の先頭のタイミングで、実質的に情報を含まない空のセグメントを受信したとき、処理単位の提供を他の情報処理装置に要求してから処理単位を受信するまでの時間を演算する演算手段をさらに備えるようにすることができる。
1つの処理単位を構成する全ての伝送単位が受信されるまで、伝送単位を一時的に保持する一時記憶手段と、1つの処理単位を構成する全ての伝送単位が一時記憶手段に記憶されたとき、1つの処理単位を構成する全ての伝送単位を、一時記憶手段から保持手段に転送する転送手段とをさらに備えるようにすることができる。
請求項20の情報処理方法は、ネットワークを介して他の情報処理装置に情報の提供を要求し、前記他の情報処理装置から前記情報の提供を受ける情報処理装置の情報処理方法において、前記他の情報処理装置が、前記情報としての1つのファイルを、単独で復号可能な処理単位に分割し、前記処理単位を、さらに前記ネットワークの伝送単位毎に分割して送信してきた前記情報を、前記処理単位で保持する保持ステップと、前記保持ステップの処理により保持されている前記処理単位の保持量を判定する判定ステップと、前記判定ステップの処理による判定結果に基づいて、続く前記処理単位の提供を前記他の情報処理装置に要求する要求ステップと、前記他の情報処理装置に対する要求を管理する管理ステップと、前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生ステップとを含むことを特徴とする。
請求項21の記録媒体のプログラムは、ネットワークを介して他の情報処理装置に情報の提供を要求し、前記他の情報処理装置から前記情報の提供を受ける情報処理装置のプログラムであって、前記他の情報処理装置が、前記情報としての1つのファイルを、単独で復号可能な処理単位に分割し、前記処理単位を、さらに前記ネットワークの伝送単位毎に分割して送信してきた前記情報を、前記処理単位で保持する保持ステップと、前記保持ステップの処理により保持されている前記処理単位の保持量を判定する判定ステップと、前記判定ステップの処理による判定結果に基づいて、続く前記処理単位の提供を前記他の情報処理装置に要求する要求ステップと、前記他の情報処理装置に対する要求を管理する管理ステップと、前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生ステップとを含むことを特徴とする。
請求項22のプログラムは、ネットワークを介して他の情報処理装置に情報の提供を要求し、前記他の情報処理装置から前記情報の提供を受ける情報処理装置のプログラムであって、前記他の情報処理装置が、前記情報としての1つのファイルを、単独で復号可能な処理単位に分割し、前記処理単位を、さらに前記ネットワークの伝送単位毎に分割して送信してきた前記情報を、前記処理単位で保持する保持ステップと、前記保持ステップの処理により保持されている前記処理単位の保持量を判定する判定ステップと、前記判定ステップの処理による判定結果に基づいて、続く前記処理単位の提供を前記他の情報処理装置に要求する要求ステップと、前記他の情報処理装置に対する要求を管理する管理ステップと、前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生ステップとをコンピュータに実行させることを特徴とする。
本発明の情報処理システムおよび方法においては、第1の情報処理装置が1つのファイルを単独で復号可能な処理単位に分割して、第2の情報処理装置に送信する。第2の情報処理装置は、第1の情報処理装置から送信されてきた情報を保持し、保持された情報を管理して、その保持量に応じて、続く情報の提供を第1の情報処理装置に要求する。第2の情報処理装置は、保持量が基準値より大きくなったとき、情報を処理単位で再生する。
本発明の情報処理装置および方法、記録媒体、並びにプログラムにおいては、他の情報処理装置から1つのファイルの単独で復号可能な処理単位毎の提供の要求が受信されたとき、処理単位の情報が、さらに伝送単位に分割され、伝送単位で他の処理装置に送信される。処理単位を構成する全ての伝送単位が送信されたとき、処理単位の送信が終了される。
本発明の他の情報処理装置および方法、記録媒体、並びにプログラムにおいては、伝送単位に分割して送信されてきた処理単位の情報が、処理単位で保持される。処理単位の保持量に基づいて、続く処理単位の提供が要求される。保持量が予め設定されている基準値より大きくなったとき、処理単位で再生が行われる。
本発明によれば、第1の情報処理装置から第2の情報処理装置に対して、情報をストリーミング配信することができる。特に、第2の情報処理装置が任意の位置に移動した場合においても、プル型で情報を確実にストリーミング配信することができる。
また、本発明によれば、他の情報処理装置に対して、情報をストリーミング配信することができる。特に、任意の位置に移動した他の情報処理装置に対して、簡単かつ確実にストリーミング配信を行うことが可能となる。
さらに、本発明によれば、他の情報処理装置からストリーミング配信を受けることが可能となる。特に、他の情報処理装置に大きな不可をかけることなく、任意の位置に移動した場合においても、移動前に受けていた情報と連続する情報のストリーミング配信を受けることが可能となる。
以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
請求項1の情報処理システムは、ネットワーク(例えば、図5のインターネット61)を介して第1の情報処理装置(例えば、図5のサーバ41-1)から第2の情報処理装置(例えば、図5のクライアント42)に情報を提供する情報処理システム(例えば、図5の情報処理システム40)において、前記第1の情報処理装置は、前記第2の情報処理装置から情報の提供の要求を受信する受信手段(例えば、図18のステップS71の処理を実行する図17の取得部411)と、提供する前記情報としての1つのファイルを、単独で復号可能な処理単位(例えば、ユニット)に分割して、前記第2の情報処理装置に送信する送信手段(例えば、図18のステップS81の処理を実行する図17の送信部415)とを備え、前記第2の情報処理装置は、前記第1の情報処理装置から送信されてきた前記情報を保持する保持手段(例えば、図21のステップS124の処理を実行する図11と図20の遅延バッファ301)と、前記保持手段に保持された前記情報を管理し、その保持量に応じて、1つの前記処理単位を構成する続く前記情報の提供を前記第1の情報処理装置に要求する要求手段(例えば、図16のステップS31の判定結果に基づいて、ステップS37の処理を実行する図14の送信部337)と、前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき(例えば、図23のステップS151で遅延バッファの占有率が50%に達したと判定されたとき)、前記情報を前記処理単位で再生する再生手段(例えば、図23のステップS152の処理を実行する図22の再生部372)とを備えることを特徴とする。
前記送信手段は、処理単位をさらに伝送単位(例えば、セグメント)に分割して、伝送単位で情報を送信し、第2の情報処理装置は、伝送単位で伝送されてきた情報を一時的に記憶する一時記憶手段(例えば、図20の一時記憶部366)をさらに備え、管理手段は、一時記憶手段に記憶された伝送単位が処理単位に達したとき(例えば、図21のステップS118で、ユニットが完成したと判定されたとき)、一時記憶手段に記憶された処理単位の転送を受け、保持する(例えば、図21のステップS124の処理)。
請求項5の情報処理方法は、ネットワーク(例えば、図5のインターネット61)を介して第1の情報処理装置(例えば、図5のサーバ41-1)から第2の情報処理装置(例えば、図5のクライアント42)に情報を提供する情報処理システム(例えば、図5の情報処理システム40)の情報処理方法において、前記第1の情報処理装置の情報処理方法は、前記第2の情報処理装置から情報の提供の要求を受信する受信ステップ(例えば、図18のステップS71)と、提供する前記情報としての1つのファイルを、単独で復号可能な処理単位(例えば、ユニット)に分割して、前記第2の情報処理装置に送信する送信ステップ(例えば、図18のステップS81)とを含み、前記第2の情報処理装置の情報処理方法は、前記第1の情報処理装置から送信されてきた前記情報を保持する保持ステップ(例えば、図21のステップS124)と、保持された前記情報の保持量に応じて、1つの前記処理単位を構成する続く前記情報の提供を前記第1の情報処理装置に要求する要求ステップ(例えば、図16のステップS37)と、前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき(例えば、図23のステップS151で遅延バッファの占有率が50%に達したと判定されたとき)、前記情報を前記処理単位で再生する再生ステップ(例えば、図23のステップS152)とを含むことを特徴とする。
請求項6の情報処理装置は、ネットワーク(例えば、図5のインターネット61)を介して他の情報処理装置(例えば、図5のクライアント42)から情報の提供の要求を受け、前記他の情報処理装置に情報を提供する情報処理装置(例えば、図5のサーバ41-1)において、前記他の情報処理装置から、前記情報としての1つのファイルの、単独で復号可能な処理単位(例えば、ユニット)毎の提供の要求を受信する受信手段(例えば、図18のステップS71の処理を実行する図16の取得部411)と、前記処理単位をさらに伝送単位(例えば、セグメント)に分割して、前記伝送単位で前記情報を前記他の情報処理装置に送信する送信手段(例えば、図18のステップS81の処理を実行する図17の送信部415)と、前記処理単位を構成する全ての前記伝送単位が送信されたか否かを判定し、前記処理単位を構成する全ての前記伝送単位が送信されたとき、前記処理単位の送信を終了させ、前記受信手段により新たな前記処理単位の要求が受信されたとき、前記送信手段に、新たな前記処理単位を前記伝送単位で伝送させる判定手段(例えば、図18のステップS82の処理を実行する図17の判定部413)とを備えることを特徴とする。
前記送信手段は、処理単位の送信の先頭のタイミングで、実質的に情報を含まない空のセグメントを送信する(例えば、図18のステップS79,S81の処理)。
請求項10の情報処理方法、請求項11の記録媒体のプログラム、請求項12のプログラムは、ネットワーク(例えば、図5のインターネット61)を介して他の情報処理装置(例えば、図5のクライアント42)から情報の提供の要求を受け、前記他の情報処理装置に情報を提供する情報処理装置(例えば、図5のサーバ41-1)の情報処理方法において、前記他の情報処理装置から、前記情報としての1つのファイルの、単独で復号可能な処理単位(例えば、ユニット)毎の提供の要求を受信する受信ステップ(例えば、図18のステップS71)と、前記処理単位をさらに伝送単位(例えば、セグメント)に分割して、前記伝送単位で前記情報を前記他の情報処理装置に送信する送信ステップ(例えば、図18のステップS81)と、前記処理単位を構成する全ての前記伝送単位が送信されたか否かを判定し、前記処理単位を構成する全ての前記伝送単位が送信されたとき、前記処理単位の送信を終了させ、前記受信ステップの処理により新たな前記処理単位の要求が受信されたとき、前記送信ステップの処理に、新たな前記処理単位を前記伝送単位で伝送させる判定ステップ(例えば、図18のステップS82)とを含むことを特徴とする。
請求項13の情報処理装置は、ネットワーク(例えば、図5のインターネット61)を介して他の情報処理装置(例えば、図5のサーバ41-1)に情報の提供を要求し、前記他の情報処理装置から前記情報の提供を受ける情報処理装置(例えば、図5のクライアント42)において、前記他の情報処理装置が、前記情報としての1つのファイルを、単独で復号可能な処理単位(例えば、ユニット)に分割し、前記処理単位を、さらに前記ネットワークの伝送単位(例えば、セグメント)毎に分割して送信してきた前記情報を、前記処理単位で保持する保持手段(例えば、図21のステップS124の処理を実行する図11と図20の遅延バッファ301)と、前記保持手段に保持されている前記処理単位の保持量を判定する判定手段(例えば、図16のステップS31の処理を実行する図14の判定部332)と、前記判定手段による判定結果に基づいて、続く前記処理単位の提供を前記他の情報処理装置に要求する要求手段(例えば、図16のステップS37の処理を実行する図14の送信部337)と、前記他の情報処理装置に対する要求を管理する管理手段(例えば、図16のステップS35の処理を実行する図14の保存部335)と、前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき(例えば、図23のステップS151で遅延バッファの占有率が50%に達したと判定されたとき)、前記情報を前記処理単位で再生する再生手段(例えば、図23のステップS152の処理を実行する図22の再生部372)とを備えることを特徴とする。
前記管理手段は、他の情報処理装置の識別情報(例えば、サーバ41-1のID)、処理単位の提供を他の情報処理装置に要求した時刻(例えば、ヘッダhdr_tstmpに記述するタイムスタンプ)、および保持手段に保持する予定の保持量(例えば、ヘッダhdr_abufに記述する通知バッファサイズ)を管理する。
前記要求手段は、保持手段に保持する予定の保持量(例えば、式(1)と式(2)の演算結果のうちの小さい方を)を他の情報処理装置に通知し(例えば、図16のステップS34の処理)、前記情報処理装置は、他の情報処理装置に通知した保持量に基づいて、保持手段における保持量の予約量(例えば、変数gcb_rsvbufの予約済みのバッファサイズ)を更新する更新手段(例えば、図16のステップS36の処理を実行する図14の更新部336)をさらに備える。
前記処理単位の送信の先頭のタイミングで、実質的に情報を含まない空のセグメントを受信したとき(例えば、図21のステップS111で、hdr_typeがINITSEGであると判定されたとき)、処理単位の提供を他の情報処理装置に要求してから処理単位を受信するまでの時間(例えば、ラウンドトリップタイムRTT)を演算する演算手段(例えば、図21のステップS114の処理を実行する図20の更新部363)をさらに備える。
1つの前記処理単位を構成する全ての伝送単位が受信されるまで、伝送単位を一時的に保持する一時記憶手段(例えば、図20の一時記憶部366)と、1つの処理単位を構成する全ての伝送単位が一時記憶手段に記憶されたとき(例えば、図21のステップS118で、ユニットが完成したと判定されたとき)、1つの処理単位を構成する全ての伝送単位を、一時記憶手段から保持手段に転送する転送手段(例えば、図21のステップS124の処理を実行する図20の格納部364)とをさらに備える。
請求項20の情報処理方法、請求項21の記録媒体のプログラム、並びに請求項22のプログラムは、ネットワーク(例えば、図5のインターネット61)を介して他の情報処理装置(例えば、図5のサーバ41-1)に情報の提供を要求し、前記他の情報処理装置から前記情報の提供を受ける情報処理装置(例えば、図5のクライアント42)の情報処理方法において、前記他の情報処理装置が、前記情報としての1つのファイルを、単独で復号可能な処理単位(例えば、ユニット)に分割し、前記処理単位を、さらに前記ネットワークの伝送単位(例えば、セグメント)毎に分割して送信してきた前記情報を、前記処理単位で保持する保持ステップ(例えば、図21のステップS124)と、前記保持ステップの処理により保持されている前記処理単位の保持量を判定する判定ステップ(例えば、図16のステップS31)と、前記判定ステップの処理による判定結果に基づいて、続く前記処理単位の提供を前記他の情報処理装置に要求する要求ステップ(例えば、図16のステップS37)と、前記他の情報処理装置に対する要求を管理する管理ステップ(例えば、図16のステップS35)と、前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき(例えば、図23のステップS151で遅延バッファの占有率が50%に達したと判定されたとき)、前記情報を前記処理単位で再生する再生ステップ(例えば、図23のステップS152)とを含むことを特徴とする。
以下、本発明の実施の形態について説明する。図2は、本発明を適用した情報処理システムの構成例を表している。この情報処理システム40は、サーバ41とクライアント42により構成されている。クライアント42は、サーバ41に対して、コンテンツデータのストリーミング配信の要求を送信し、サーバ41は、この要求に応じてコンテンツデータをクライアント42に対してストリーミング配信する。
すなわち、本発明においては、プル型のストリーミング配信が行われる。その結果、図3に示されるように、クライアント42は、図中左側に示される第1の位置において、サーバ41−1からコンテンツデータのストリーミング配信を受けている状態から、図中右側に示される第2の位置に移動した場合においても、クライアント42は、同一のコンテンツを有する異なるサーバ42−2から、それまでのコンテンツデータに続くコンテンツデータのストリーミング配信を受けることが可能となる。
図4には、この様子が、拡張して示されている。すなわち、本発明においては、図4に示されるように、サーバ41−1乃至41−5のいずれからも、クライアント42はコンテンツデータのストリーミング配信を受けることが可能な、マルチホームのマルチサーバシステムが実現される。
具体的には、本発明においては、図5に示されるように、情報処理システムが構成される。すなわち、情報処理システム40は、インターネット61に接続されているサーバ41−1乃至41−3と、インターネット61に接続されているクライアント42とにより構成される。図5に示されるように、クライアント42は、必要に応じて、任意の位置に移動可能である。そして、クライアント42は、任意の位置で、サーバ41−1乃至41−3のいずれかから連続して、ストリーミング配信を受けることができる。換言すれば、サーバ41−1乃至41−3(以下、これらを個々に区別する必要がない場合、単にサーバ41と称する)は、同一のコンテンツをプル型でストリーミング配信する機能を有している。
図6は、サーバ41の構成例を表している。
図6において、CPU(Central Processing Unit)121は、ROM(Read Only Memory)122に記憶されているプログラム、または記憶部128からRAM(Random Access Memory)123にロードされたプログラムに従って各種の処理を実行する。RAM123にはまた、CPU121が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU121、ROM122、およびRAM123は、バス124を介して相互に接続されている。このバス124にはまた、入出力インタフェース125も接続されている。
入出力インタフェース125には、キーボード、マウスなどよりなる入力部126、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部127、ハードディスクなどより構成される記憶部128、モデムなどより構成される通信部129が接続されている。通信部129は、インターネット61を含むネットワークを介しての通信処理を行う。
入出力インタフェース125にはまた、必要に応じてドライブ130が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア131が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部128にインストールされる。
サーバ41の記憶部128には、図7に示されるようなマッピング情報が予め記憶されている。このマッピング情報は、オリジナルコンテンツC0を、異なるビットレートでエンコードしたエンコードコンテンツと、それに付随する情報とにより構成されている。図7の例においては、オリジナルコンテンツC0を32kbpsでエンコードしたエンコードコンテンツC1、64kbpsでエンコードしたエンコードコンテンツC2、128kbpsでエンコードしたエンコードコンテンツC3、並びに256kbpsでエンコードしたエンコードコンテンツC4の4種類のエンコードコンテンツがマッピング情報とされている。
各エンコードコンテンツC1乃至C4は、単独でデコード(復号)可能な処理単位(ユニット)に分割されて保持される。このユニットは、コンテンツが、例えば、Motion-JPEG(Joint Photographic Experts Group)でエンコードされている場合、フレームとすることができる。M-JPEG方式の場合、フレーム単位でエンコードが行われるため、フレーム単位でデコードが可能であるからである。
また、MPEG(Moving Picture Experts Group)でエンコードされている場合、1GOP(Group of Pictures)を1ユニットとすることができる。MPEG方式でエンコードされている場合、GOPを単位としてエンコードが行われているため、GOPを単位として復号が可能であるからである。
すなわち、図8に示されるように、GOPは、Iピクチャ、Pピクチャ、およびBピクチャの3種類の方式でエンコードされたフレームで構成される。Iピクチャは、他のフレームとの相関に基づかずにエンコードが行われたフレームであり、そのフレーム自体でデコードが可能である。これに対して、Pピクチャは、時間的に前のIピクチャまたはPピクチャを参照してエンコードされたフレームであり、参照先のIピクチャまたはPピクチャが先にデコードされないと、そのフレームをデコードすることができない。さらに、Bピクチャは、時間的に前のフレームと後のフレームとを参照してエンコードがなされたフレームであり、それぞれ参照された時間的に前、または時間的に後のフレームのデコードが行われた後でないと、そのフレームのデコードを行うことができない。
メインプロファイル形式の場合、図8に示されるように、IピクチャまたはPピクチャの間に2個のBピクチャが配置されている。
図9は、MPEG4の方式でエンコードされた1GOPのフレームの構成例を表している。この構成例においては、13フレームで1GOPが構成され、1GOPの中には、2枚のIピクチャ、3枚のPピクチャ、および8枚のBピクチャが含まれている。
図10は、クライアント42の構成例を表している。その基本的構成は、図6におけるサーバ41と同様である。すなわち、クライアント42も、CPU221乃至リムーバブルメディア231により構成され、これらは、サーバ41におけるCPU121乃至リムーバブルメディア131と同様の機能と構成を有している。すなわち、図10における各部は、図6における同一の名称の各部と同一の機能を有している。
クライアント42のRAM223には、図11に示される遅延バッファ301が形成される。クライアント42は、この遅延バッファ301に、理想的に10個のユニットのデータが格納されるものとして、コンテンツデータの管理を行う。
RAM223にはまた、コンテンツデータの授受の管理を行うためのステータス情報として、図12に示される変数が記憶される。
変数ucb_***(***は、任意の文字列を意味する)は、ユニット数単位で保持される変数(Per-Unit Variables)であり、変数scb_***は、サーバ数単位で保持される変数(Per-Server Variables)であり、変数gcb_***は、グローバルな変数(Unique Variables)を表す。
変数ucb_sidには、ユニット要求パケットを送信するサーバを識別するサーバIDが記述される。変数ucb_timeには、要求パケットを送信した時刻が記述される。変数ucb_rbufには、予約済みの通知バッファサイズが記述される。変数ucb_initには、初期セグメントの受信時刻が記述される。変数ucb_recvには、対象ユニットの、それまでに受信されたセグメントの全受信データ量が記述され、変数ucb_nsegには、そのユニットの全セグメント数が記述される。変数ucb_csegには、対象ユニットの、それまでに受信されたセグメントの全受信セグメント数が記述される。変数ucb_sampleは、初期セグメントが最初に届いたか否かを表すフラグである。このフラグは、そのユニットに基づいて、後述するラウンドトリップタイム(RTT)を計算するか否か(サンプリングの可否)を表すフラグともなる。
変数scb_rttには、予測ラウンドトリップタイムが記述され、変数scb_bandには、ボトルネックリンクの予測帯域幅が記述される。変数scb_lossには、予測ロス率が、変数scb_lackには、BUFLACKタイプのセグメントの受信数が、それぞれ記述される。
変数gcb_curbufには、所定のタイミングにおける(現在の)バッファサイズが記述され、変数gcb_rsvbufには、予約済みのバッファサイズが記述される。変数gcb_playunitには、再生ユニットの番号が、そして変数gcb_requnitには、要求ユニットが複数個ある場合には、そのうちの最大の番号が(従って、1個の場合はその番号が)、それぞれ記述される。
図13は、このクライアント42とサーバ41との間で受信されるパケットのヘッダに記述される情報を表している。ヘッダhdr_typeは、パケットの種類を表し、REQUEST,INITSEG,DATASEG,またはBUFLACKのいずれかが記述される。REQUESTは、そのパケットがデータを要求する要求パケットであることを表す。INITSEGは、そのパケットが初期セグメントのパケットであることを表す。DATASEGは、そのパケットがデータセグメントのパケットであることを表す。BUFLACKは、そのパケットが、遅延バッファ301に記憶されるデータが、不足する結果となるおそれがあるデータ量のパケットであることを通知する。
ヘッダhdr_cidには、コンテンツを識別するコンテンツIDが記述され、ヘッダhdr_uidには、ユニットを識別するユニットIDが記述される。ヘッダhdr_tstmpには、そのセグメントの送信時刻を表すタイムスタンプが記述され、ヘッダhdr_segnoには、そのパケットで要求するセグメントの連続番号が記述される。ヘッダhdr_nsegには、そのユニットを構成するセグメントの数が記述され、ヘッダhdr_abufには、通知バッファサイズがバイト数で記述される。そして、ヘッダhdr_lenには、そのパケットで要求するセグメントのデータ長がバイト数で記述される。
本発明が提供するプロトコルである3SP(Stateless Server Streaming Protocol)では、各クライアント自らが取得したいコンテンツを有するサーバのリストを予め保持している。そして、クライアントは、そのサーバに対して、コンテンツIDでコンテンツを指定し、ユニットIDでユニットを指定し、そのユニットの要求パケットを送信する。リスト中にサーバが複数ある場合、各クライアントはプルーブパケットをサーバに送信し、その返答から遅延を測定し、遅延の小さなサーバを選択して、そのサーバに対してユニット要求パケットを送信する。
クライアント42は、サーバ41に対して、所定時間毎にユニットを要求するパケットを送信する。この処理、および後述する図16のフローチャートに示されるユニット要求パケット送信処理を実行するために、クライアント42は、図14に示されるような機能的構成を有している。すなわち、クライアント42は、計時部331、判定部332、設定部333、生成部334、保存部335、更新部336、送信部337、開放部338、および初期化部339を有している。
計時部331は、計時動作を行う。判定部332は、一定時間計時されたか否か、終了がユーザより指示されたか否かといった判定のほか、遅延バッファ301の利用率や、再送すべきユニット番号が存在するか否かといった判定処理を行う。
設定部333は、変数に各種の値を設定する。生成部334は、ユニット要求パケットのヘッダを作成する。保存部335は、サーバ41とのコネクションの情報を保存する。更新部336は予約バッファ量や予測ロス率の更新をする。送信部337は、ユニット要求パケットを送信する処理を行う。開放部338は、予約領域を開放する処理を行う。初期化部339は、ステータス情報のうち、ユニット数単位で保持される変数に関する情報の初期化処理を行う。
次に、図15のフローチャートを参照して、クライアント42が実行する送信タイマ処理を説明する。この処理は、クライアント42のユーザが、入力部226を操作することでサーバ41にアクセスし、コンテンツのストリーミング配信の受信を指令したとき、開始される。
ステップS11において、計時部331は、計時動作を開始する。ステップS12において、判定部332は、一定時間計時したか否かを判定する。すなわち判定部332は、ステップS11で計時動作を開始してから予め設定してある一定時間が経過したか否かを判定し、一定の時間が経過するまで待機する。この一定の時間は、例えば、500ミリ秒とされる。この一定の時間は、ストリーミング配信を受けるコンテンツの1ユニットの再生時間より充分短い時間とされる。本実施の形態においては、MPEG4の1GOPが1ユニットとされる。この1GOPの典型的な最小値は、約1秒であるので、一定時間を500ミリ秒とすれば、それに比べて充分短い時間となる。
ステップS12において、一定時間が経過したと判定された場合、ステップS13において、判定部332は、送信タイミング信号を出力する。この送信タイミング信号が出力される毎に、後述する図16のユニット要求パケット送信処理が実行される。従って、本実施の形態の場合、500ミリ秒毎に、後述する図16のユニット要求パケット送信処理が実行されることになる。
ステップS14において、判定部332は、ユーザより終了が指示されたか否かを判定し、終了が指示されていない場合には、処理はステップS11に戻り、それ以降の処理が繰り返し実行される。ステップS14において、終了が指示されたと判定された場合、送信タイマ処理が終了される。
次に、図16のフローチャートを参照して、クライアント42が実行するユニット要求パケット送信処理について説明する。この処理は、図15のステップS13で送信タイミング信号が出力されたタイミング毎に、繰り返し実行される。
ステップS31において、判定部332は、遅延バッファの利用率が90%以下か否かを判定する。利用率は、遅延バッファ301の最大値Bmaxに対する予約量Brsvと現在の容量Bcurとの和の割合((Brsv+Bcur)/Bmax)を意味する。
現在のバッファ量Bcurは、後述する図21のステップS124において、変数gcb_curbufに設定されている値に対応するものであり、その時点において遅延バッファ301に保存されているデータ量を表す。
予約量Brsvは、図21のステップS123において、変数gcb_rsvbufに設定される値に対応し、前回の要求パケットで要求したユニットのデータ量を表す。この予約量Brsvは、前回、下記式(1)で演算された通知バッファ量Badvに対応する。換言すれば、新たな通知バッファサイズ量Badvがサーバ41に通知されると、前回の通知バッファ量サイズBadvが、予約量Brsvとされる(後述する図16のステップS35)。
Figure 2005303927
ステップS31において、遅延バッファ301の利用率が90%以下ではないと判定された場合、処理は終了される、すなわち、この場合には、遅延バッファ301に充分なコンテンツデータが保存されているので、さらなるコンテンツデータの要求は行われない。そして、次の500ミリ秒後のタイミングまで、処理は中断されることになる。
ステップS31において、遅延バッファ301の利用率が90%以下であると判定された場合、ユニット要求パケットを送信する処理が次のように行われる。すなわち、この場合には、ステップS32において、判定部332は、TCP(Transmission Control Protocol)のラウンドタイムアウト(Round Timeout(RTO))が経過している再送すべきユニット番号iが存在するか否かを判定する。すなわち、過去にユニット番号iの送信を、後述するステップS37の処理で要求しているにも関わらず、まだ受信していないユニットが存在するか否かが判定される。
具体的には、タイムアウト値RTOは、変数scb_rttに記述されている予測ラウンドトリップタイムの4倍の値が利用される。ユニット番号iに関して、変数ucb_timeに計時されている要求パケット送信時刻と、現在時刻との差から経過時間が演算され、この経過時間がタイムアウト値RTOより大きければ、そのユニット番号iが存在すると判定される。
ただし、ユニット番号iの値は、変数gcb_playunitの値より小さい必要がある。すなわち、変数gcb_playunitには、後述する図23のステップS152で再送すべき再生ユニットの番号が記述されており、その再生ユニットの番号よりユニット番号iが大きければ、最早、そのユニットは、再生する機会がない。そこで、そのようなユニット番号iは、存在しないものと判定される(無視される)。これにより、ユニットの送信要求が無駄に行われることが防止される。
再送すべきユニット番号iが存在しない場合には、ステップS33において、設定部333は、要求ユニット番号nに変数gcb_requnitを設定する。変数gcb_requnitには、要求ユニットの最大の番号が設定されているため、この最大の番号が、要求ユニットnに設定されることになる。従って、要求すべきユニットが複数個存在する場合には、より時間的に新しいユニットが優先的に要求される、これにより、最新のユニットの欠落による画像の途切れが防止される。
次に、ステップS34において、生成部334は、ユニット要求パケットのヘッダを作成する。具体的には、要求するコンテンツのコンテンツIDが、ヘッダhdr_cidに格納され、要求するユニットのユニットIDが、ヘッダhdr_uidに格納される。このユニットIDは、変数gcb_requnitから取得される。また、計時部331が計時している現在時刻が、ヘッダhdr_tstmpにタイムスタンプとして格納される。
さらに、生成部334は、上述した式(1)に基づいて、通知バッファ量(Advertised buffer Size)Badvを演算するとともに、次の式(2)に基づいて、TFRを演算し、両者のうちの小さい方を選択し、ヘッダhdr_abufに設定する。
式(1)における時間Tintは、1ユニット分の再生時間を表し、時間Tprefは、遅延バッファ301が保持可能な全ユニットの再生時間を表す。本実施の形態の場合、遅延バッファ301には、10個分のユニットが保存されるものとされているため、時間Tprefは、時間Tintの10倍の値に設定される。従って、式(1)におけるTpref/Tintの値は、「10」となる。
値Cuntは、遅延バッファ301にその時点において保存されているユニットの数を表し、各図11の例の場合、6個(値Bcurは、それをデータ量(バイト)で表した値)である。また、値Crsvは、予約量Brsv(バイト)をユニットの数で表したものである。
従って、式(1)は、遅延バッファ301を理想的なユニット数(10個)に保つために、使われていない遅延バッファ301の領域(Bmax−Bcur− Brsv)を、足りないユニットの数(Tpref/Tint−(Cunt+Crsv))で割り算することによって求められる値である。
輻輳制御を行わない場合には、上述した式(1)に基づいて演算された値Badvがそのままヘッダhdr_abufに記述される。しかし、本発明においては、TCPの信頼性の高い輻輳制御のモデルとして、TCPフレンドリーレートコントロール(TCP Friendly Rate Control(TFRC))として知られているものが利用される。そこで、本発明においては、次の式(2)で表されるTFR(TCP Friendly Rate)が演算される。そして、式(1)と式(2)で表される値のうち、小さい方が通知バッファ量としてヘッダhdr_abufに記述される。
Figure 2005303927
なお、式(2)において、sはパケットサイズ(バイト)、RはRTT(秒)、pはロス率、TRTOは、TCPのタイムアウト値(秒)を意味する。ロス率pは、1ラウンド、すなわち、ユニット要求パケットを送信してから、そのユニットが受信されるまで毎に算出されたサンプルに基づいて、加重平均により導かれる値である。要求パケットのロスは、バックオフによる輻輳制御がされるため、ロス率には反映させない。
要求パケットの送信間隔でのTFRを利用しているのは、要求パケットの送信間隔内でボトルネックのリンクが処理できないということは、データ取得速度よりも、再生速度の方が速くなっていることを意味するからである。例え、遅延バッファ301により、再生時間に間に合ったとしても、データ時間が長くなるほど、バッファリングが追いつかなくなり、クライアント42の再生が途切れる可能性がある。そこで、本発明の3SPでは、基本的に、バッファリングをあてにした転送は行わない。
このように、TFRを考慮することで、インターネット61におけるトラフィックが混雑し、他の装置の通信が必要以上に影響を受けることが抑制される。
次に、ステップS35において、保存部335は、コネクションの情報を保存する処理を行う。すなわち、この実施の形態においては、プル型でストリーミング配信が行われるため、クライアント42は、サーバ41とのコネクションを自ら管理する。具体的には、クライアント42がアクセスしたサーバのIDが、変数ucb_sidに格納される。さらに、ヘッダhdr_tstmpに設定されているタイムスタンプ(ステップS34の処理で現在時刻が設定されている)が変数ucb_timeに格納され、ヘッダhdr_abufの値が変数ucb_rbufに保存される。これにより、ステップS34で、ヘッダhdr_abufに格納された通知バッファ量BadvまたはTFRが、変数ucb_rbufに格納される。
ステップS36において、更新部336は、予約バッファ量を更新する。具体的には、予約済みのバッファサイズを表す変数gcb_rsvbufの値に、予約済みの通知バッファサイズを表す変数ucb_rbufの値が累積加算される。
次に、ステップS37において、送信部337は、ステップS34で生成したユニット要求パケットをサーバ41に送信する。このユニット要求パケットは、インターネット61を介してサーバ41に送信される。
ステップS32において、ラウンドトリップタイムのタイムアウト値RTOが経過している再送すべきユニット番号iが存在すると判定された場合、ステップS38において、更新部336は、全受信セグメント数を表す変数ucb_csegと、全セグメント数を表す変数ucb_nsegを利用して、ロス率をサンプル計算する。また、更新部336は、加重平均により予測ロス率を表す変数scb_lossを更新する。
例えば、変数ucb_nseg[i]で表される全セグメント数が10個であるユニットの受信処理中に、変数ucb_cseg[i]で表されるセグメント数が8個である時点で、タイムアウトしたとする。この場合、変数ucb_sid[i]でそのIDが表される要求サーバのロス率のサンプルは、次式で表される。
(ucb_nseg[i]−ucb_cseg[i])/ucb_nseg[i]=(10-8)/10=0.2 ・・・(3)
変数scb_loss[ucb_sid[i]]で表されるロス率は、次式のように加重平均により更新される。
scb_loss[ucb_sid[i]]=scb_loss[ucb_sid[i]]×(1−α)+0.2×α ・・・(4)
なお、加重平均に利用される定数αは、0より大きく、1より小さい値、例えば、0.9とされるが、それ以外の値を用いることも、もちろん可能である。
ステップS39において、開放部338は、予約領域を開放する。具体的には、予約済みのバッファサイズを表す変数gcb_rsvbufから、予約済みの通知バッファサイズを表す変数ucb_rbufの値が減算される。すなわち、ステップS36の処理で加算された値の分だけここで減算が行われる。
次に、ステップS40において、初期化部339は、図12に示されるユニット数単位で保持される変数(Per-Unit Variables)を全て初期化する。すなわち、変数ucb_sid,ucb_time,ucb_rbuf,ucb_init, ucb_recv,ucb_nseg,ucb_cseg,ucb_sampleが全て初期化される(例えば、0とされる)。
ステップS41において、設定部333は、要求ユニット番号nにiを設定する。その後、ステップS34において、その要求ユニット番号nのヘッダが作成され、ステップS35において、コネクションの情報が保存され、ステップS36において、予約バッファ量の更新が行われ、ステップS37において、そのユニット要求パケットが送信される。
以上のようなクライアント42によるユニット要求パケットの送信処理に対応して、サーバ41は、ユニット要求パケット受信処理を実行する。この処理のため、サーバ41は、図17に示されるような機能的構成を有している。
すなわち、サーバ41は、取得部411、指定部412、判定部413、選択部414、送信部415、読み込み部416、および生成部417を有している。
取得部411は、クライアント42から送信されてきたユニット要求パケットを受信し、そこに含まれる必要なデータを取得する。また、取得部411は、マッピング情報から異なるビットレートのファイルポインタやユニット情報を取得したり、取得ファイルのユニットのサイズを取得したりする処理を実行する。指定部412は、比較ファイルに最大ビットレートのファイルを指定したり、ヘッダに各種のデータを指定したりする。
判定部413は、ユニットのサイズを判定したり、ファイルの有無を判定したり、ヘッダの値を判定する処理を実行する。選択部414は、異なるビットレートのファイルを選択する。送信部415は、セグメントを送信する処理を実行する。読み込み部416は、ユニットをファイルから読み込む処理を実行する。生成部417は、セグメントを生成する処理を実行する。
次に、図18のフローチャートを参照して、サーバ41が行うユニット要求パケット受信処理を説明する。この処理は、上述したクライアント42からのユニット要求パケットが送信されてきたとき、これに対応して実行される。
ステップS71において、取得部411は、クライアント42から送信されてきたユニット要求パケットを受信する。そして、取得部411は、そのユニット要求パケットのヘッダ内のhdr_cidに記述されているコンテンツIDに対応するマッピング情報を取得する。このヘッダhdr_cidは、図16のステップS34において作成されたものである。
ステップS72において、取得部411は、ステップS71の処理で取得したマッピング情報から、異なるビットレートのファイルポインタとユニット情報を取得する。マッピング情報としては、図7を参照して上述したように、4種類のビットレートのファイルが用意されているので、ファイルポインタとしては、この4つのファイルを指定するポインタが取得される。また、各ファイルは、ユニット毎に分割されているので、そのファイルのどのユニットを指示するのかのポインタも取得される。なお、ユニット要求パケットのヘッダから取得されるユニット情報とは、ヘッダhdr_uidに記述されているユニットID、ヘッダhdr_abufに記述されている通知バッファサイズなどである。
ステップS73において、指定部412は、比較ファイルとして最大ビットレートのファイルを指定する。この実施の形態においては、図7に示されるように、256kbpsのビットレートのエンコードコンテンツが、最大ビットレートのファイルであるので、これが比較ファイルとして指定される。
ステップS74において、取得部411は、ステップS73で指定された比較ファイルのユニットであって、ヘッダhdr_uidに記述されているユニットIDのユニットのサイズを取得する。このサイズは、サーバ41がこの最大ビットレートのエンコードコンテンツC4を生成するときに、予め同時に生成され、マッピング情報として記憶されているものである。
ステップS75において、判定部413は、ユニットのサイズはヘッダhdr_abuf以下か否かを判定する。すなわち、ステップS74で取得されたユニットのサイズが、ステップS72で取得されたヘッダhdr_abufに記述されている通知バッファサイズ以下であるか否かが判定される。ユニットのサイズがヘッダhdr_abufに記述されている通知バッファサイズ以下である場合には、そのユニットをクライアント42に送信しても、クライアント42がそれを遅延バッファ301に保持し、適正に処理することが可能である。従って、この場合、ステップS76において、読み込み部416は、ヘッダhdr_uidに記述されているユニットIDのユニットを、ファイルから読み込む処理を実行する。これにより、クライアント42から送信されてきたユニット要求パケットのヘッダに記述されていたユニットが、そのファイルから読み込まれる。そして、読み込み部416は、セグメントの連続番号を表すヘッダhdr_segnoに0を書き込む。
次に、ステップS77において、生成部417は、セグメントを生成する。具体的には、生成部417は、ユニットを複数のセグメントに分割する。もちろん、既に分割が行われている場合には、実質的に既に存在する複数のセグメントの中から、1つのセグメントを選択する処理が行われる。さらに生成部417は、ユニット要求パケットのヘッダhdr_nsegに、このユニットの全セグメントの数を設定する。また、生成部417は、ヘッダhdr_segnoに、生成部417は、セグメントの連続番号を記述する。いまの場合、ステップS76において、ヘッダhdr_segnoに0が初期設定されているため、0が記述される。さらに、生成部417は、ヘッダhdr_lenに、そのセグメントのデータ長を記述する。
ヘッダhdr_segnoの値が0である場合、送信されるセグメントは初期セグメントであるため、実質的にはデータは存在しない。すなわち、空のセグメントとなるので、ヘッダhdr_lenには0が設定される。これらの全セグメントの数、データ長なども、サーバ41が保持するマッピング情報に予め記述されているものである。
次に、ステップS78において、判定部413は、ヘッダhdr_segnoの値が0であるか否かを判定する。いまの場合、この値は0であるから、ステップS79において、指定部412は、ヘッダhdr_typeにINITSEGを指定する。すなわち、いま生成しているセグメントは、初期セグメントであることがヘッダに記述される、そして、ステップS81において、送信部415は、セグメントを送信する。このセグメントは、1つのパケットとして、送信される。
このようにして、図19に示されるように、クライアント42からサーバ41に対して、ユニット要求パケットが送信された場合、サーバ41からクライアント42に対して、初期セグメントS1が送信されることになる。
次に、ステップS82において、判定部413は、ヘッダhdr_segnoの値とヘッダhdr_nsegの値が等しいか否かを判定する。いまの場合、ヘッダhdr_segnoには0が設定されており、ヘッダhdr_nsegには、そのユニットを構成する全セグメントの数が記述されているので、両者は等しくない。そこで、ステップS83において、生成部417は、ヘッダhdr_segnoの値をインクリメントする。いまの場合、0の値が1に書き換えられる。そして、ステップS77において、生成部417は、再びセグメントを生成する処理を実行する。いまの場合、ヘッダhdr_nsegに、そのユニットを構成する全セグメントの数が記述されるとともに(この値は前回のセグメントの場合と同一である)、ヘッダhdr_segnoにセグメント内の順番として1が書き込まれ、ヘッダhdr_lenにデータ長として、そのセグメントのデータ長が格納される。
次に、ステップS78において、ヘッダhdr_segnoの値が0であるか否かが判定部413により判定される。いまの場合、ヘッダhdr_segnoには1が設定されているため、0ではない。そこで、ステップS80において、生成部417は、ヘッダhdr_typeにDATASEGを指定する。これは、そのセグメントは、データセグメントであることを表す。生成部417は、そしてそのセグメントのデータ部(ペイロード)に番号1のセグメントを格納する。ステップS81において、送信部415は、以上のようにして生成されたセグメントを、クライアント42に向けて送信する。
ステップS82において、ヘッダhdr_segnoに記述されているセグメントの連続番号が、ヘッダhdr_nsegに記述されているそのユニットの全セグメントの数に等しいか否かが判定される。いまの場合、セグメントの連続番号は1であり、まだ全セグメントの数に達していないので、ステップS83において、ヘッダhdr_segnoに設定されるセグメントの連続番号が、1から2にインクリメントされる。
以下、順次同様の処理が行われ、ユニットを構成する各セグメントが順次送信される。そして、ステップS82において、ヘッダhdr_segnoに記述されているセグメントの連続番号が、ヘッダhdr_nsegに記述されているそのユニットの全セグメントの数と等しいと判定された場合、そのユニットの送信処理は終了される。すなわち、これにより、再び新たなユニットの要求が受信されたとき、新たなユニットのセグメント単位での伝送が行われることになる。
一方、ステップS75において、ヘッダhdr_uidに記述されているユニットIDのユニットのサイズが、ヘッダhdr_abufに記述されている通知バッファサイズと等しいか、それより大きいと判定された場合、そのユニットのデータをそのままクライアント42に送信しても、クライアント42ではデータ量が多すぎて、リアルタイムでこれを処理することができないおそれがある。そこで、この場合には、ステップS84において、選択部414は、ステップS73で指定した比較ファイルのビットレートを、一段下げたファイルにする。具体的には、いま、設定されているのが256kbpsでエンコードされたエンコードコンテンツC4である場合には、128kbpsでエンコードされたエンコードコンテンツC3にそのファイルが変更される。
判定部413は、ステップS85において、ステップS84の処理で一段下げられたファイルが存在するか否かを判定部413は判定する。そのファイルが存在する場合には、ステップS74において、取得部411は、比較ファイルに記述されているファイルのユニットであって、ヘッダhdr_uidに記述されているユニットIDのユニットのサイズを取得する。そして、ステップS75において、ステップS74で取得されたユニットのサイズは、ヘッダhdr_abufの通知バッファサイズ以下か否かが判定される。ユニットのサイズがヘッダhdr_abufの通知バッファサイズと等しいか、それより大きい場合には、再びステップS84において、さらにビットレートを一段下げたファイルに変更される。
このようにして、エンコードコンテンツC3,C2,C1の順番に、比較ファイルのビットレートが変更される。そして、ステップS75において、いま選択されている比較ファイルのユニットのサイズが、ヘッダhdr_abufの通知バッファサイズ以下であると判定された場合には、ステップS76以降の処理が実行されて、そのユニットのデータがセグメント単位で順次クライアント42に送信される。
このように、クライアント42の転送許容量を考慮することで、最大の効率でデータをサーバ41からクライアント42に送信することができる。
これに対して、ステップS85において、ファイルが存在しないと判定された場合、すなわち、図7の例において、最もビットレートが低いエンコードコンテンツC1においても、ユニットのサイズがヘッダに記述されている通知バッファサイズより大きい場合には、結局、クライアント42の遅延バッファ301の容量が不足しており、サーバ41は、クライアント42に対して、そのクライアント42が連続的に再生可能なストリーミング配信ができないおそれがある(例えば、再生画像が途中で途切れるおそれがある)ことを意味する。そこで、この場合には、ステップS86において、指定部412は、ヘッダhdr_typeにBUFLACKを指定する。すなわち、これは、クライアント42の遅延バッファ301の容量が不足していることを表す。そして、ステップS87において、送信部415は、セグメントを送信する。この場合においては、コンテンツの実質的なデータはそのセグメントに配置されず、実質的にヘッダだけが送信される。
以上のようにして、図19に示されるように、初期セグメントS1が送信された後、第2のセグメントS2、第3のセグメントS3などが順次送信される。そして、そのユニットを構成する最後のセグメント(図19の例の場合、第5番目のセグメントS5)が送信されると、そのユニットの送信処理は終了される。
これにより、サーバ41からクライアント42に対して、クライアント42により指定されたユニットが、セグメントに分割されて送信される。
なお、このサーバ41が、クライアント42にデータを送信するとき、UDP(User Datagram Protocol)、TCP等のトランスポート層のプロトコルにより、パケットにデータが区分されて送信されることになる。そこで、このセグメントは、1つのパケットに納まるようにそのデータ量が予め設定される、これにより、1個のパケットにより1個のセグメントが送信される結果となり、インターネット61を介してのデータの送受信が容易となる。
次に、以上のようにして、サーバ41がクライアント42に送信したセグメントを受信する処理について説明する。この処理を実行するため、クライアント42は、図20に示されるような機能的構成を有している。すなわち、クライアント42は、判定部361、設定部362、更新部363、格納部364、開放部365、および一時記憶部366を、遅延バッファ301以外に有している。なお、この図20の構成は、図14の構成と実際には一体化されるものである。
従って、例えば、図14と図20の判定部332と判定部361、設定部333と設定部362、更新部336と更新部363、開放部338と開放部365などは、実際には共通化することが可能である。
判定部361は、ヘッダの内容を調べたり、初期セグメントが最初に届いたか否かを判定したり、ユニットが完成したかどうかを判定したりする処理を実行する。設定部362は、変数に所定の値を設定する。更新部363は、変数やヘッダの内容を更新する。格納部364は、データを適宜所定の位置に転送し、格納する処理を実行する。開放部365は、予約領域を開放する処理を行う。一時記憶部366は、1ユニット分のデータが収集されるまで、データセグメントを一時的に記憶する。
次に、図21のフローチャートを参照して、クライアント42のセグメント受信処理について説明する。この処理は、クライアント42が図16のユニット要求パケット送信処理を行った後、これに対応してサーバ41が図18のユニット要求パケット受信処理を行うので、さらにこれに対応して、クライアント42により実行される。
ステップS111において、判定部361は、サーバ41から送信されてきたパケットのヘッダhdr_typeを調べる。そして、その記述がINITSEGである場合には、処理はステップS112に進み、DATASEGである場合には、処理はステップS116に進み、BUFLACKである場合には、処理はステップS125に進む。
また、ステップS111において、判定部361は、ヘッダhdr_uidに記述されているユニットIDを変数nに設定し、ヘッダhdr_sidに記述されているサーバIDを、変数sに設定する。
ヘッダhdr_typeに記述されているのがINITSEGである場合、すなわち、いま受信されたセグメントが、初期セグメントである場合には、ステップS112において、判定部361は、初期セグメントが最初に届いたか否かを判定する。具体的には、変数ucb_recvに記述されている全受信データ量が0であるか否かが判定される。すなわち、上述したように、初期セグメントは、実質的にコンテンツデータを有していないが、それ以外のセグメントはコンテンツデータを含んでおり、そのデータ量が、後述するステップS117において、変数ucb_recvに累積加算される。従って、全受信データ量を表す変数ucb_recv の値が0であるということは、初期セグメントが最初に届いた(コンテンツデータを有するセグメントはまだ受信されていない)ということを意味する。この場合には、ステップS113において、設定部362は、変数ucb_sampleに1を設定する。この変数ucb_sampleは、初期セグメントが最初に届いたか否かを表すフラグであるとともに、ユニット受信完了時におけるネットワークの帯域検出のサンプリングの可否を表すフラグであり、この値が1である場合には、後述するステップS122において、ボトルネックの帯域を表す変数scb_bandを更新する処理が実行され、その値が1ではない場合には、この更新処理はスキップされる。
そこで、ステップS112において、初期セグメントが最初に届いていないと判定された場合には、ステップS113における変数ucb_sampleに1を設定する処理はスキップされ、処理はステップS114に進む。ステップS113の処理により、変数ucb_sample に1が設定された後、または、ステップS112において、初期セグメントが最初に届いていないと判定された場合、ステップS114において、更新部363、ヘッダhdr_tstmpと現在時刻からRTTを計算する処理を実行する。すなわち、ヘッダhdr_tstmp には、図16のステップS34において、そのユニットの要求パケットを送信するときの時刻が、タイムスタンプとして記述されている。従って、図19に示されるように、ユニット要求パケットを送信したときの時刻と、サーバ41から初期セグメントを受信した時の時刻(現在時刻)との差から、RTTが計算される。
更新部363は、さらに、加重平均により、予測ラウンドトリップタイムを表す変数scb_rtt を更新する。
例えば、ユニット要求パケットを送信した時刻であるヘッダhdr_tstmpに記述されているタイムスタンプの値(内部クロックの値)が1202300ミリ秒であり、初期セグメント到着時刻が、1203400ミリ秒である場合、RTTのサンプルは、1100ミリ秒(=1203400−1202300)と計算される。このとき、RTTは、次式によって加重平均される。
scb_rtt[s]=scb_rtt[s]×(1−α)+1100×α ・・・(5)
ステップS115において、格納部364は、変数ucb_init に現在時刻を格納する。すなわち、変数ucb_initに、初期セグメント受信時刻が記述されることになる。格納部364はまた、ヘッダhdr_nsegを変数ucb_nseg に格納する。すなわち、ヘッダhdr_nsegに記述されているそのユニットの全セグメントの数が、変数ucb_nseg に格納される。
変数ucb_nsegには、このようにして、そのユニットの全セグメント数が格納される。
一方、ステップS111において、ヘッダhdr_typeの値が、DATASEGであると判定された場合、ステップS116において、更新部363は、受信データのセグメント数を更新する処理を実行する。具体的には、全受信セグメント数を表す変数ucb_csegの値が、それまでの値に累積加算される。これにより、変数ucb_csegには、それまでに受信したセグメントの数が格納されることになる。
ステップS117において、更新部363は、全受信データを更新する。具体的には、全受信データ量を表す変数ucb_recvに、ヘッダhdr_lenの値が累積加算される。すなわち、ヘッダhdr_lenには、そのセグメントのデータ長が記述されているので、各セグメントのデータ長の累積和が変数ucb_recvに累積加算されることになる。
ステップS118において、判定部361は、ユニットが完成したか否かを判定する。具体的には、ステップS115の処理で格納した全セグメント数を表す変数ucb_nsegの値が、ステップS116の処理で更新された受信データのセグメント数を表す変数ucb_csegの値と等しいか否かが判定される。両者が等しくない場合には、ステップS119において、格納部364は、そのデータセグメントを、一時記憶部366に格納する。
この図21の処理が、セグメントを受信する度に行われるので、一時記憶部366には、データセグメントが順次記憶され、1ユニット分のデータセグメントが全て受信されたとき、ステップS118において、ユニットが完成したと判定される。すなわち、変数ucb_nsegの値が、変数ucb_csegの値と等しくなる。このとき、ステップS120において、更新部363は、ロス率0で加重平均により変数scb_lossを更新する。
例えば、ロス率が0で行われる加重平均は、次のようになる。
scb_loss[ucb_sid[i]]=scb_loss[ucb_sid[i]]×(1−α)+0.2×α ・・・(6)
ステップS121において、判定部361は、変数ucb_sampleの値が1か否かを判定する。初期セグメントが最初に届いた場合には、上述したように、ステップS113において、この変数に1が設定されている。この場合には、ステップS122において、更新部363は、変数ucb_initからの経過時間と、変数ucb_recvにより帯域を計算し、加重平均により変数scb_bandを更新する。
すなわち、変数ucb_init には、ステップS115の処理で、初期セグメントを受信した時刻が記述されており、その時刻を現在時刻から減算することで、その時点からの経過時間が演算される。また、変数ucb_recvには、ステップS117の処理で、それまでに受信された全データ量が記述されている。そこで、この変数ucb_recvの値を経過時間で割り算することで、遅延時間当たりのデータ受信量、すなわち、帯域を計算することができる。さらに、これを加重平均することで、ボトルネックリンクの予測帯域幅を表す変数scb_bandの値を更新する処理が実行される。
例えば、変数ucb_init[n]で表される初期セグメント到着時刻が、1203400ミリ秒で、変数ucb_recv[n]で表される受信したセグメントの総バイト数が5670000byteであり、ユニットが完成した時刻である現在時刻が、1205400ミリ秒であるとする。この場合、帯域は、次式により計算される。
5670000/((1205400−1203400)/1000)=2835000byte/秒 ・・・(7)
また、変数scb_band[s]の加重平均は、次式により計算される。
scb_band[s]=scb_band[s]×(1−α)+2835000×α ・・・(8)
この処理が実行された後、処理はステップS123に進む。ステップS121において、変数ucb_sampleが1ではないと判定された場合、すなわち、初期セグメントが最初に届かなかった場合、ステップS122の処理はスキップされ、処理はステップS123に進む。
ステップS123において、開放部365は、予約領域を開放する。具体的には、予約済みのバッファサイズを表す変数gcb_rsvbufの値から、予約済みの通知バッファサイズを表す変数ucb_rbufの値が減算される。すなわち、予約された帯域のユニットが全て受信されたので、その分の予約領域が開放される。
次に、ステップS124において、格納部364は、ユニットを一時、バッファから遅延バッファ301へ格納する処理を実行する。具体的には、一時記憶部366に記憶されているユニットが、遅延バッファ301に転送される。そして、現在のバッファサイズを表す変数gcb_curbufの値に、全受信データ量を表す変数ucb_recvの値が累積加算される。すなわち、これにより、図11に示される値Cuntが更新されることになる。あるいは、データ量Bcurの値が更新されることになる。
ステップS111で、ヘッダhdr_typeにBUFLACKが記述されていると判定された場合、ステップS125で、更新部363は、バッファ不足情報を更新する。具体的には、変数scb_lackの値が1だけインクリメントされる、このようにして、変数scb_lackには、それまでにそのサーバから受信したセグメントであって、BUFLACKタイプのセグメントの数が記憶される。
この値は、後述する図24のステップS224において、サーバを変更するか否かの判定の基準として用いられる。
以上の処理が、セグメントを受信する毎に実行される。送信を要求するコンテンツユニット、セグメントの管理は、すべてクライアント42により行われる。従って、クライアント42が、任意の位置に移動し、それまでとは異なるサーバからそれまでのユニットに続くユニットのストリーミング配信を受信することが可能となる。
クライアント42は、以上のようにして、遅延バッファ301にユニット単位で最大10個のユニットを蓄積するように管理し、所定量のデータが蓄積されると、順次その再生処理を実行し、リアルタイム性を実現する。このため、クライアント42は、例えば図22に示される機能的構成を有している。この構成も、実際には、図14および図20の構成と一体化されるものである。
図22の例においては、クライアント42は、判定部371、再生部372、および停止部373を有している。
判定部371は、遅延バッファの占有率の判定処理、遅延バッファにデータがなくなったどうかの判定処理、再生の終了が指示されたかどうかの判定処理などを行う。再生部372は、遅延バッファ301により蓄積が管理されているコンテンツデータの再生処理を行う。停止部373は、再生を停止する処理を実行する。
なお、遅延バッファ301には、Bmax,Cunt(Bcur),Brsv,Badv等の管理に必要なデータのみを蓄積し、コンテンツデータそのものは、RAM223の別の領域に蓄積するようにしてもよいが、説明を簡略化するため、以下においては、コンテンツデータも遅延バッファ301に蓄積されているものとする。
次に、図23のフローチャートを参照して、クライアント42が実行するユニットの再生処理について説明する。
ステップS151において、判定部371は、遅延バッファの占有率が50%に達したか否かを判定する。遅延バッファの占有率は、図11における遅延バッファ301の最大値Bmaxに対する現在のバッファ量Bcur(Cunt)の割合(Bcur/Bmax)を意味する。
ステップS151において、遅延バッファ301の占有率が50%に達していないと判定された場合、処理はステップS156に進み、判定部371は、再生を終了するか否かを判定する。すなわち、ユーザから、再生の終了が指令されたか否かが判定され、再生の終了が指令されていない場合には、処理はステップS151に戻り、それ以降の処理が繰り返し実行される。
ステップS151において、遅延バッファ301の占有率が50%に達したと判定された場合、処理はステップS152に進み、再生部372は、遅延バッファ301に蓄積されたコンテンツデータをユニット単位で再生する。すなわち、1ユニットは、1GOPで構成されているため、1ユニットのデータがあれば、それを構成する全フレームのデータをデコードすることが可能である。このようにして、再生部372により、再生(デコード)されたデータは、入出力インタフェース225を介して出力部227に出力され、再生画像としてユーザに呈示される。
ステップS153において、判定部371は、遅延バッファにデータがなくなったか否かを判定する。遅延バッファ301にデータがなくなっていない場合には、ステップS154において、判定部371は、再生を終了するか否かを判定する。ユーザから再生の終了が指令されていない場合には、ステップS152に戻り、ステップS152,S153,S154の処理が繰り返し実行される。
ステップS153において、遅延バッファ301にデータがなくなったと判定された場合、ステップS155において、停止部373は再生を停止させる。
次に、ステップS156において、判定部371は、再生の終了が指示されたか否かを判定する。終了が指示されていなければ、処理はステップS151に戻り、それ以降の処理が繰り返し実行される。ステップS156、またはステップS154において、再生の終了が指示されたと判定された場合、処理は終了される。
以上のようにして、クライアント42からの要求に応じてサーバ41はファイルをユニット単位に分割し、さらに、各ユニットをセグメントに分割してクライアント42に送信する。クライアント42は、1ファイル分のデータが全て受信される前に、所定の数量のデータが受信された段階で、再生を開始する。このようにして、リアルタイムでストリーミング配信が実現される。
本発明の実施の形態においては、クライアント42は、プル型方式でサーバ41からコンテンツデータのストリーミング配信を受ける。クライアント42は、上述したように、サーバ41からコンテンツデータのストリーミング配信を受けるのに必要な管理データを自ら管理している。そこで、クライアント42は、任意の位置に移動した場合にも、それまでに受信していたコンテンツの所定のユニットに続くユニットを他のサーバ41から受信して、画像を途切れさせることなく、連続して再生することが可能である。このため、クライアント42は、サーバを選択する必要がある。
次に、このサーバの選択処理について、図24のフローチャートを参照して説明する。この処理は、上述した図16と図21の処理と並行して実行される。
ステップS221において、クライアント42の設定部333は、1つのサーバを選択する。例えば、図5の例においては、サーバ41−1乃至41−3が存在する。設定部333は、これらのサーバの中から、ストリーミング配信を希望するコンテンツを有するサーバを1つ選択する。上述したように、この発明においては、各クライアント42は、どのサーバがどのコンテンツを有しているのかといったサーバを選択するための情報を、予め保持している。上述した式(2)で表されるTFRの値が、既に分っている場合には、その値が最大となるサーバを、ここで選択することも可能である。あるいは、クライアント42は、サーバ41が複数ある場合、プルーブパケットをサーバ41に送信し、その返答からRTTを測定し、RTTの小さなサーバを選択して、ユニット要求パケットを送信するようにしてもよい。
すなわち、各サーバのRTTが既知である場合には、図25のフローチャートに示されるようにして、1つのサーバを選択することができる。
この場合においては、ステップS251において、設定部333は、ユニット要求をする現在のサーバのサーバIDを、変数nに設定する。ステップS252において、判定部332は、scb_rtt[i]<scb_rtt[n]を満たすサーバIDであるiが存在するか否かを判定する。すなわち、現在ユニット要求を行っているサーバ以外のサーバの中から、現在のサーバよりRTTが小さいサーバが存在するか否かが判定される。このようなサーバが存在する場合には、ステップS253において、設定部333は、ユニット要求サーバIDに変数iを設定する。これにより、ユニット要求が送信されるサーバが、RTTが現在のサーバより小さいサーバに変更される。これにより、ヘッダhdr_typeが、BUFLACKタイプのセグメントを受信する可能性が低くなり、クライアントがより確実にセグメントを受信することが可能となる。
ステップS252において、現在のサーバよりRTTが小さいサーバが存在しないと判定された場合には、ステップS253の処理はスキップされる。
以上のようにして、1つのサーバが選択された後、図24に戻って、ステップS222において、送信部337は、ステップS221で選択した1つのサーバ41に対して、ユニット要求パケットを送信する。このユニット要求パケットの送信処理は、実際には、図16のステップS37における送信処理として行われる。
次に、ステップS223において、判定部332は、サーバからフィードバックがあったか否かを判定する。ステップS222で、ユニット要求パケットを送信したにも関わらず、サーバ41から所定の時間が経過しても何のフィードバックもない場合には、そのサーバ41は、何らかの原因により故障しているか、通信経路上に何らかの障害が存在するなどが予想される。そこで、予め設定してある一定の時間が経過しても、サーバ41から何のフィードバックもない場合には、ステップS221において、設定部333は、別のサーバを選択する。そして、ステップS222において、送信部337は、その新たに選択されたサーバに、ユニット要求パケットを送信する。ステップS223において、判定部332は、新たにユニット要求パケットを送信したサーバからのフィードバックがあったか否かを判定する。
以上のようにして、何らかのフィードバックがあるサーバが選択される。
サーバから何らかのフィードバックがあった場合には、ステップS224において、判定部332は、バッファ欠乏通知の数が基準値を越えたか否かを判定する。具体的には、上述した図21のステップS125で更新された変数scb_lackの値(そのサーバから受信したセグメントのうち、BUFLACKタイプであったセグメントの総数)が、基準値を超えたか否かが判定される。ステップS224において、バッファ欠乏通知の数(変数scb_lackの値)が、基準値を越えていないと判定された場合には、ステップS225において、判定部332は、終了が指示されたか否かを判定する。ユーザから終了が指示されていなければ、処理はステップS224に戻り、それ以降の処理が繰り返し実行される。ステップS224において、バッファ欠乏通知の数が基準値を越えたと判定された場合、処理はステップS221に戻り、設定部333は、再び、新たなサーバを選択する処理を実行する。そして、新たに選択されたサーバに対して、上述した場合と同様に、それ以降の処理が繰り返し実行される。
ステップS225において、終了が指示されたと判定された場合、サーバ選択処理は終了される。
本発明が提案するプロトコルである3SPは、ネットワークプロトコルの階層におけるトランスポート層とアプリケーション層の中間に位置する。このことは、Real Time Protocol(RTP)と同様である。トランスポート層としては、UDP(User Datagram Protocol)の利用が推奨されるが、TCPを利用することも可能である。この3SPが提供する主な機能は、次の4つである。
(1)遅延バッファリングを考慮したデータ再送要求送信(例えば、図16のステップS32の処理)
(2)TCPフレンドリを考慮したデータ転送許容量の推定(例えば、図16のステップS34において、式(2)で演算した値を通知バッファサイズとする処理)
(3)通信品質に基づいたユニット要求パケットの送信(例えば、図25のステップS253の処理)
(4)受信側から指定された転送許容量をベースとしたデータ配信(例えば、図18のステップS84の処理)
次に、シミュレーションの結果について説明する。発明者らは、Frank H. P. Fitzekなどが公開しているMPEG-4のトレースファイル( MPEG-4 and H. 263 Video Traces for
Network Performance Evaluation. http://www-tkn.ee.tu-berlin.de/research/trace/
simulation.html.)の最初の2分間をシミュレーションのトラフィックデータとして利用した。サーバには、16kbps,64 kbps,256 kbpsのビットレートでエンコードしたデータがユニットに分割され、保持された。2Mbps,10msのリンクを、20本のフローが共用する場合の3通りのシミュレーションが行われた。1つは、20本のTCP(図26)、1つは、19本のTCPと1本の輻輳制御機能を有しない3SP(図27)、他の1つは、19本のTCPと1本の輻輳機能を有する3SP(図28)である。
これらのシミュレーションの結果を表す図26乃至図28は、フローの帯域占有量を1秒毎に集計した結果を表している。
これらの図においては、本来、20本のフローの特性曲線が示されるべきであるが、図が複雑になるので、2本のフローのみが示されている。
図26の曲線A(TCP)と曲線B(TCP)のフローで示されるように、曲線Aは、34秒前後において、また、曲線Bは、72秒前後において、それぞれ帯域を大きく占有している。従って、TCPは長い時間でみると、各フローが公平に帯域を利用しているが、短い時間でみると、平等のプロトコルではないことがわかる。
これに対して、図27に示されるように、輻輳制御が行われないと、曲線C(3SP)は、曲線D(TCP)より帯域を大きく占有している結果となっている。これは、100kbps(=2Mbps/20)が公平な帯域であるリンクであるにも関わらず、3SP(曲線C)が自らの遅延バッファ量に基づいて256 kbpsの最もクオリティが高いデータをいつも受信しているからである。なお、輻輳制御を行わないということは、式(2)のTFRを計算せずに、式(1)の遅延バッファ量の許容量のみをユニット要求パケットに格納することを意味する。
このように、輻輳制御の仕組みを取り入れず、他のフローの存在を考慮しない通信は、そのフローが多くの帯域を占有してしまう危険性がある。
図28は、輻輳制御を行った曲線E(3SP)と、曲線F(TCP)を示している。この図から明らかなように、輻輳制御を行った3SP(曲線E)は、一時的な過度の帯域占有はあるものの、図27と比較すると、明らかに利用帯域が少なくなっており、TCP(曲線F)も帯域を充分利用できていることがわかる。
以上のように、本発明により、連続メディアを配信するサーバが、クライアントとの一切の通信状態を保持する必要のない通信方式が提案される。連続メディアは、ユニットと呼ばれるデータのかたまりに区切られ、ユニットの粒度でクライアントに配信される。クライアントがユニットを取得するタイミングを適切にスケジューリングすることで、ユニットを連続メディアとして再構成することができる。また、クライアントは要求パケットに輻輳情報を含めることで、サーバは、ユニットの粒度でコンテンツのビットレートの最適化を実現することができる。従来のサーバ主体のプッシュ型連続メディア配送モデルとは異なり、本発明のモデルでは、クライアントがコネクションに関する全ての情報を保持しているため、クライアントの状況に合わせてユニットを取得するサーバを柔軟に変更することが可能となる。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
この記録媒体は、図6と図10に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フロッピディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア131,231により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM122,222や、記憶部128,228に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
本発明は、コンテンツデータをインターネットを介してパーソナルコンピュータにストリーミング配信する情報処理システムに適用することが可能である。
従来のプッシュ型の情報処理システムを説明する図である。 本発明のプル型の情報処理システムを説明する図である。 クライアントの移動を説明する図である。 クライアントの移動を説明する図である。 本発明を適用した情報処理システムの構成例を示すブロック図である。 図5のサーバの構成例を示すブロック図である マッピング情報を説明する図である GOPを説明する図である GOPの構成例を説明する図である 図5のクライアントの構成例を示すブロック図である 遅延バッファを説明する図である ステータス情報を説明する図である パケットのヘッダ情報を説明する図である クライアントの送信時の機能的構成例を示すブロック図である クライアントの送信タイマ処理を説明するフローチャートである クライアントのユニット要求パケット送信処理を説明するフローチャートである サーバの機能的構成例を示すブロック図である サーバのユニット要求パケット受信処理を説明するフローチャートである ラウンドトリップタイムの計算を説明する図である 受信時のクライアントの機能的構成を示すブロック図である。 クライアントのセグメント受信処理を説明するフローチャートである。 ユニット再生時のクライアントの機能的構成例を示すブロック図である。 クライアントのユニットの再生処理を説明するフローチャートである。 クライアントのサーバ選択処理を説明するフローチャートである。 1つのサーバを選択する処理を説明するフローチャートである。 シミュレーションの結果を示す図である。 シミュレーションの結果を示す図である。 シミュレーションの結果を示す図である。
符号の説明
40 情報処理システム, 41−1乃至41−3 サーバ, 42 クライアント, 61 インターネット, 301 遅延バッファ, 331 計時部, 332 判定部, 335 保存部, 336 更新部, 337 送信部, 363 更新部, 364 格納部, 365 開放部, 366 一時記憶部, 372 再生部, 411 取得部, 413 判定部, 415 送信部

Claims (22)

  1. ネットワークを介して第1の情報処理装置から第2の情報処理装置に情報を提供する情報処理システムにおいて、
    前記第1の情報処理装置は、
    前記第2の情報処理装置から情報の提供の要求を受信する受信手段と、
    提供する前記情報としての1つのファイルを、単独で復号可能な処理単位に分割して、前記第2の情報処理装置に送信する送信手段と
    を備え、
    前記第2の情報処理装置は、
    前記第1の情報処理装置から送信されてきた前記情報を保持する保持手段と、
    前記保持手段に保持された前記情報を管理し、その保持量に応じて、1つの前記処理単位を構成する続く前記情報の提供を前記第1の情報処理装置に要求する要求手段と、
    前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生手段と
    を備えることを特徴とする情報処理システム。
  2. 前記送信手段は、前記処理単位をさらに伝送単位に分割して、前記伝送単位で前記情報を送信し、
    前記第2の情報処理装置は、前記伝送単位で伝送されてきた前記情報を一時的に記憶する一時記憶手段をさらに備え、
    前記保持手段は、前記一時記憶手段に記憶された前記伝送単位が前記処理単位に達したとき、前記一時記憶手段に記憶された前記処理単位の転送を受け、保持する
    ことを特徴とする請求項1に記載の情報処理システム。
  3. 前記処理単位は、ユニットであり、
    前記伝送単位は、セグメントである
    ことを特徴とする請求項2に記載の情報処理システム。
  4. 前記セグメントは、前記ネットワークで伝送の単位として使用されるパケットに収まる大きさである
    ことを特徴とする請求項3に記載の情報処理システム。
  5. ネットワークを介して第1の情報処理装置から第2の情報処理装置に情報を提供する情報処理システムの情報処理方法において、
    前記第1の情報処理装置の情報処理方法は、
    前記第2の情報処理装置から情報の提供の要求を受信する受信ステップと、
    提供する前記情報としての1つのファイルを、単独で復号可能な処理単位に分割して、前記第2の情報処理装置に送信する送信ステップと
    を含み、
    前記第2の情報処理装置の情報処理方法は、
    前記第1の情報処理装置から送信されてきた前記情報を保持する保持ステップと、
    保持された前記情報の保持量に応じて、1つの前記処理単位を構成する続く前記情報の提供を前記第1の情報処理装置に要求する要求ステップと、
    前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生ステップと
    を含むことを特徴とする情報処理方法。
  6. ネットワークを介して他の情報処理装置から情報の提供の要求を受け、前記他の情報処理装置に情報を提供する情報処理装置において、
    前記他の情報処理装置から、前記情報としての1つのファイルの、単独で復号可能な処理単位毎の提供の要求を受信する受信手段と、
    前記処理単位をさらに伝送単位に分割して、前記伝送単位で前記情報を前記他の情報処理装置に送信する送信手段と、
    前記処理単位を構成する全ての前記伝送単位が送信されたか否かを判定し、前記処理単位を構成する全ての前記伝送単位が送信されたとき、前記処理単位の送信を終了させ、前記受信手段により新たな前記処理単位の要求が受信されたとき、前記送信手段に、新たな前記処理単位を前記伝送単位で伝送させる判定手段と
    を備えることを特徴とする情報処理装置。
  7. 前記処理単位は、ユニットであり、
    前記伝送単位は、セグメントである
    ことを特徴とする請求項6に記載の情報処理装置。
  8. 前記セグメントは、前記ネットワークで伝送の単位として使用されるパケットに収まる大きさである
    ことを特徴とする請求項7に記載の情報処理装置。
  9. 前記送信手段は、前記処理単位の送信の先頭のタイミングで、実質的に前記情報を含まない空の前記セグメントを送信する
    ことを特徴とする請求項7に記載の情報処理装置。
  10. ネットワークを介して他の情報処理装置から情報の提供の要求を受け、前記他の情報処理装置に情報を提供する情報処理装置の情報処理方法において、
    前記他の情報処理装置から、前記情報としての1つのファイルの、単独で復号可能な処理単位毎の提供の要求を受信する受信ステップと、
    前記処理単位をさらに伝送単位に分割して、前記伝送単位で前記情報を前記他の情報処理装置に送信する送信ステップと、
    前記処理単位を構成する全ての前記伝送単位が送信されたか否かを判定し、前記処理単位を構成する全ての前記伝送単位が送信されたとき、前記処理単位の送信を終了させ、前記受信ステップの処理により新たな前記処理単位の要求が受信されたとき、前記送信ステップの処理に、新たな前記処理単位を前記伝送単位で伝送させる判定ステップと
    を含むことを特徴とする情報処理方法。
  11. ネットワークを介して他の情報処理装置から情報の提供の要求を受け、前記他の情報処理装置に情報を提供する情報処理装置のプログラムであって、
    前記他の情報処理装置から、前記情報としての1つのファイルの、単独で復号可能な処理単位毎の提供の要求を受信する受信ステップと、
    前記処理単位をさらに伝送単位に分割して、前記伝送単位で前記情報を前記他の情報処理装置に送信する送信ステップと、
    前記処理単位を構成する全ての前記伝送単位が送信されたか否かを判定し、前記処理単位を構成する全ての前記伝送単位が送信されたとき、前記処理単位の送信を終了させ、前記受信ステップの処理により新たな前記処理単位の要求が受信されたとき、前記送信ステップの処理に、新たな前記処理単位を前記伝送単位で伝送させる判定ステップと
    を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
  12. ネットワークを介して他の情報処理装置から情報の提供の要求を受け、前記他の情報処理装置に情報を提供する情報処理装置のプログラムであって、
    前記他の情報処理装置から、前記情報としての1つのファイルの、単独で復号可能な処理単位毎の提供の要求を受信する受信ステップと、
    前記処理単位をさらに伝送単位に分割して、前記伝送単位で前記情報を前記他の情報処理装置に送信する送信ステップと、
    前記処理単位を構成する全ての前記伝送単位が送信されたか否かを判定し、前記処理単位を構成する全ての前記伝送単位が送信されたとき、前記処理単位の送信を終了させ、前記受信ステップの処理により新たな前記処理単位の要求が受信されたとき、前記送信ステップの処理に、新たな前記処理単位を前記伝送単位で伝送させる判定ステップと
    をコンピュータに実行させることを特徴とするプログラム。
  13. ネットワークを介して他の情報処理装置に情報の提供を要求し、前記他の情報処理装置から前記情報の提供を受ける情報処理装置において、
    前記他の情報処理装置が、前記情報としての1つのファイルを、単独で復号可能な処理単位に分割し、前記処理単位を、さらに前記ネットワークの伝送単位毎に分割して送信してきた前記情報を、前記処理単位で保持する保持手段と、
    前記保持手段に保持されている前記処理単位の保持量を判定する判定手段と、
    前記判定手段による判定結果に基づいて、続く前記処理単位の提供を前記他の情報処理装置に要求する要求手段と、
    前記他の情報処理装置に対する要求を管理する管理手段と、
    前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生手段と
    を備えることを特徴とする情報処理装置。
  14. 前記管理手段は、前記他の情報処理装置の識別情報、前記処理単位の提供を前記他の情報処理装置に要求した時刻、および前記保持手段に保持する予定の保持量を管理する
    ことを特徴とする請求項13に記載の情報処理装置。
  15. 前記要求手段は、前記保持手段に保持する予定の保持量を前記他の情報処理装置に通知し、
    前記情報処理装置は、前記他の情報処理装置に通知した保持量に基づいて、前記保持手段における前記保持量の予約量を更新する更新手段
    をさらに備えることを特徴とする請求項14に記載の情報処理装置。
  16. 前記処理単位は、ユニットであり、
    前記伝送単位は、セグメントである
    ことを特徴とする請求項13に記載の情報処理装置。
  17. 前記セグメントは、前記ネットワークで伝送の単位として使用されるパケットに収まる大きさである
    ことを特徴とする請求項16に記載の情報処理装置。
  18. 前記処理単位の送信の先頭のタイミングで、実質的に前記情報を含まない空の前記セグメントを受信したとき、前記処理単位の提供を前記他の情報処理装置に要求してから前記処理単位を受信するまでの時間を演算する演算手段を
    さらに備えることを特徴とする請求項13に記載の情報処理装置。
  19. 1つの前記処理単位を構成する全ての前記伝送単位が受信されるまで、前記伝送単位を一時的に保持する一時記憶手段と、
    1つの前記処理単位を構成する全ての前記伝送単位が前記一時記憶手段に記憶されたとき、1つの前記処理単位を構成する全ての前記伝送単位を、前記一時記憶手段から前記保持手段に転送する転送手段と
    をさらに備えることを特徴とする請求項13に記載の情報処理装置。
  20. ネットワークを介して他の情報処理装置に情報の提供を要求し、前記他の情報処理装置から前記情報の提供を受ける情報処理装置の情報処理方法において、
    前記他の情報処理装置が、前記情報としての1つのファイルを、単独で復号可能な処理単位に分割し、前記処理単位を、さらに前記ネットワークの伝送単位毎に分割して送信してきた前記情報を、前記処理単位で保持する保持ステップと、
    前記保持ステップの処理により保持されている前記処理単位の保持量を判定する判定ステップと、
    前記判定ステップの処理による判定結果に基づいて、続く前記処理単位の提供を前記他の情報処理装置に要求する要求ステップと、
    前記他の情報処理装置に対する要求を管理する管理ステップと、
    前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生ステップと
    を含むことを特徴とする情報処理方法。
  21. ネットワークを介して他の情報処理装置に情報の提供を要求し、前記他の情報処理装置から前記情報の提供を受ける情報処理装置のプログラムであって、
    前記他の情報処理装置が、前記情報としての1つのファイルを、単独で復号可能な処理単位に分割し、前記処理単位を、さらに前記ネットワークの伝送単位毎に分割して送信してきた前記情報を、前記処理単位で保持する保持ステップと、
    前記保持ステップの処理により保持されている前記処理単位の保持量を判定する判定ステップと、
    前記判定ステップの処理による判定結果に基づいて、続く前記処理単位の提供を前記他の情報処理装置に要求する要求ステップと、
    前記他の情報処理装置に対する要求を管理する管理ステップと、
    前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生ステップと
    を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
  22. ネットワークを介して他の情報処理装置に情報の提供を要求し、前記他の情報処理装置から前記情報の提供を受ける情報処理装置のプログラムであって、
    前記他の情報処理装置が、前記情報としての1つのファイルを、単独で復号可能な処理単位に分割し、前記処理単位を、さらに前記ネットワークの伝送単位毎に分割して送信してきた前記情報を、前記処理単位で保持する保持ステップと、
    前記保持ステップの処理により保持されている前記処理単位の保持量を判定する判定ステップと、
    前記判定ステップの処理による判定結果に基づいて、続く前記処理単位の提供を前記他の情報処理装置に要求する要求ステップと、
    前記他の情報処理装置に対する要求を管理する管理ステップと、
    前記ファイルを構成する全ての前記処理単位が受信される前に、前記保持量が予め設定されている基準値より大きくなったとき、前記情報を前記処理単位で再生する再生ステップと
    をコンピュータに実行させることを特徴とするプログラム。
JP2004120716A 2004-04-15 2004-04-15 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム Pending JP2005303927A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004120716A JP2005303927A (ja) 2004-04-15 2004-04-15 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム
US11/090,127 US20050234892A1 (en) 2004-04-15 2005-03-28 Information-processing system, information-processing apparatus, information-recording method, recording medium and computer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004120716A JP2005303927A (ja) 2004-04-15 2004-04-15 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム

Publications (1)

Publication Number Publication Date
JP2005303927A true JP2005303927A (ja) 2005-10-27

Family

ID=35097523

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004120716A Pending JP2005303927A (ja) 2004-04-15 2004-04-15 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム

Country Status (2)

Country Link
US (1) US20050234892A1 (ja)
JP (1) JP2005303927A (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010057084A (ja) * 2008-08-29 2010-03-11 Canon Inc 映像送信装置、その制御方法、および制御方法を実行するプログラム
WO2011062133A1 (ja) * 2009-11-17 2011-05-26 日本電気株式会社 コンテンツ再生方法、コンテンツ再生装置及びプログラム
JP2013511196A (ja) * 2009-11-13 2013-03-28 サムスン エレクトロニクス カンパニー リミテッド 部分化を利用した適応的なストリーミング方法及びその装置
JP2013110760A (ja) * 2013-02-04 2013-06-06 Canon Inc 映像送信装置、その制御方法、および制御方法を実行するプログラム
JPWO2012011450A1 (ja) * 2010-07-20 2013-09-09 シャープ株式会社 コンテンツ配信装置、コンテンツ再生装置、コンテンツ配信装置の制御方法、および、コンテンツ再生装置の制御方法
JP2014505295A (ja) * 2011-01-04 2014-02-27 トムソン ライセンシング ライブメディアコンテンツを送信する装置及び方法
US9197689B2 (en) 2010-03-19 2015-11-24 Samsung Electronics Co., Ltd. Method and apparatus for adaptively streaming content including plurality of chapters
US9277252B2 (en) 2010-06-04 2016-03-01 Samsung Electronics Co., Ltd. Method and apparatus for adaptive streaming based on plurality of elements for determining quality of content
US9699486B2 (en) 2010-02-23 2017-07-04 Samsung Electronics Co., Ltd. Method and apparatus for transmitting and receiving data
US9756364B2 (en) 2009-12-07 2017-09-05 Samsung Electronics Co., Ltd. Streaming method and apparatus operating by inserting other content into main content
US9860573B2 (en) 2009-11-13 2018-01-02 Samsung Electronics Co., Ltd. Method and apparatus for providing and receiving data
US9967598B2 (en) 2009-11-13 2018-05-08 Samsung Electronics Co., Ltd. Adaptive streaming method and apparatus
USRE48360E1 (en) 2009-11-13 2020-12-15 Samsung Electronics Co., Ltd. Method and apparatus for providing trick play service

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090178091A1 (en) * 2008-01-08 2009-07-09 Hiroki Miyamoto Contents distribution method and receiving device
US8909806B2 (en) * 2009-03-16 2014-12-09 Microsoft Corporation Delivering cacheable streaming media presentations
US9237387B2 (en) 2009-10-06 2016-01-12 Microsoft Technology Licensing, Llc Low latency cacheable media streaming
JP6238255B2 (ja) 2016-05-25 2017-11-29 株式会社Nexpoint 監視カメラシステムによる監視方法及び動画分割装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10112852A (ja) * 1996-10-04 1998-04-28 Nippon Telegr & Teleph Corp <Ntt> 映像データ伝送装置及び映像データ伝送方法
WO1998038798A1 (en) * 1997-02-26 1998-09-03 Mitsubishi Denki Kabushiki Kaisha Device, system, and method for distributing video data
JP2002064562A (ja) * 2000-06-07 2002-02-28 Nippon Telegr & Teleph Corp <Ntt> 通信コネクション確立方法
JP2003143582A (ja) * 2001-11-07 2003-05-16 Nippon Telegr & Teleph Corp <Ntt> ストリーム映像受信制御方法、およびストリーム映像配信システム、およびストリーム映像受信装置
JP2003169040A (ja) * 2001-12-04 2003-06-13 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
JP2003244676A (ja) * 2002-02-19 2003-08-29 Sony Corp 動画配信システム、動画配信装置および方法、記録媒体、並びにプログラム
JP2003319012A (ja) * 2002-04-19 2003-11-07 Matsushita Electric Ind Co Ltd データ受信装置及びデータ配信システム
JP2004007327A (ja) * 2001-06-29 2004-01-08 Matsushita Electric Ind Co Ltd データ再生装置及びデータ中継装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279029B1 (en) * 1993-10-12 2001-08-21 Intel Corporation Server/client architecture and method for multicasting on a computer network
US5928330A (en) * 1996-09-06 1999-07-27 Motorola, Inc. System, device, and method for streaming a multimedia file
US7143177B1 (en) * 1997-03-31 2006-11-28 West Corporation Providing a presentation on a network having a plurality of synchronized media types
US6446192B1 (en) * 1999-06-04 2002-09-03 Embrace Networks, Inc. Remote monitoring and control of equipment over computer networks using a single web interfacing chip
US7213075B2 (en) * 2000-12-15 2007-05-01 International Business Machines Corporation Application server and streaming server streaming multimedia file in a client specific format
WO2002056181A2 (en) * 2001-01-11 2002-07-18 Force Communications Inc Z File switch and switched file system
US20050066048A1 (en) * 2003-08-22 2005-03-24 Bruce Young Web-based music distribution system and method therefor

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10112852A (ja) * 1996-10-04 1998-04-28 Nippon Telegr & Teleph Corp <Ntt> 映像データ伝送装置及び映像データ伝送方法
WO1998038798A1 (en) * 1997-02-26 1998-09-03 Mitsubishi Denki Kabushiki Kaisha Device, system, and method for distributing video data
JP2002064562A (ja) * 2000-06-07 2002-02-28 Nippon Telegr & Teleph Corp <Ntt> 通信コネクション確立方法
JP2004007327A (ja) * 2001-06-29 2004-01-08 Matsushita Electric Ind Co Ltd データ再生装置及びデータ中継装置
JP2003143582A (ja) * 2001-11-07 2003-05-16 Nippon Telegr & Teleph Corp <Ntt> ストリーム映像受信制御方法、およびストリーム映像配信システム、およびストリーム映像受信装置
JP2003169040A (ja) * 2001-12-04 2003-06-13 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
JP2003244676A (ja) * 2002-02-19 2003-08-29 Sony Corp 動画配信システム、動画配信装置および方法、記録媒体、並びにプログラム
JP2003319012A (ja) * 2002-04-19 2003-11-07 Matsushita Electric Ind Co Ltd データ受信装置及びデータ配信システム

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010057084A (ja) * 2008-08-29 2010-03-11 Canon Inc 映像送信装置、その制御方法、および制御方法を実行するプログラム
US9860573B2 (en) 2009-11-13 2018-01-02 Samsung Electronics Co., Ltd. Method and apparatus for providing and receiving data
JP2013511196A (ja) * 2009-11-13 2013-03-28 サムスン エレクトロニクス カンパニー リミテッド 部分化を利用した適応的なストリーミング方法及びその装置
USRE48360E1 (en) 2009-11-13 2020-12-15 Samsung Electronics Co., Ltd. Method and apparatus for providing trick play service
US10425666B2 (en) 2009-11-13 2019-09-24 Samsung Electronics Co., Ltd. Method and apparatus for adaptive streaming using segmentation
US9967598B2 (en) 2009-11-13 2018-05-08 Samsung Electronics Co., Ltd. Adaptive streaming method and apparatus
JP2016007026A (ja) * 2009-11-13 2016-01-14 サムスン エレクトロニクス カンパニー リミテッド 部分化を利用した適応的なストリーミング方法及びその装置
WO2011062133A1 (ja) * 2009-11-17 2011-05-26 日本電気株式会社 コンテンツ再生方法、コンテンツ再生装置及びプログラム
US9756364B2 (en) 2009-12-07 2017-09-05 Samsung Electronics Co., Ltd. Streaming method and apparatus operating by inserting other content into main content
US9699486B2 (en) 2010-02-23 2017-07-04 Samsung Electronics Co., Ltd. Method and apparatus for transmitting and receiving data
US9197689B2 (en) 2010-03-19 2015-11-24 Samsung Electronics Co., Ltd. Method and apparatus for adaptively streaming content including plurality of chapters
US9277252B2 (en) 2010-06-04 2016-03-01 Samsung Electronics Co., Ltd. Method and apparatus for adaptive streaming based on plurality of elements for determining quality of content
JPWO2012011450A1 (ja) * 2010-07-20 2013-09-09 シャープ株式会社 コンテンツ配信装置、コンテンツ再生装置、コンテンツ配信装置の制御方法、および、コンテンツ再生装置の制御方法
JP2014505295A (ja) * 2011-01-04 2014-02-27 トムソン ライセンシング ライブメディアコンテンツを送信する装置及び方法
US10069887B2 (en) 2011-01-04 2018-09-04 Thomson Licensing Dtv Apparatus and method for transmitting live media content
JP2013110760A (ja) * 2013-02-04 2013-06-06 Canon Inc 映像送信装置、その制御方法、および制御方法を実行するプログラム

Also Published As

Publication number Publication date
US20050234892A1 (en) 2005-10-20

Similar Documents

Publication Publication Date Title
US20050234892A1 (en) Information-processing system, information-processing apparatus, information-recording method, recording medium and computer program
CN111586480B (zh) 低延迟流媒体
Akhshabi et al. An experimental evaluation of rate-adaptation algorithms in adaptive streaming over HTTP
CN105075276B (zh) 在广播通信网络中操作客户端设备和服务器设备的技术
US10110507B2 (en) Push-based transmission of resources and correlated network quality estimation
JP6308718B2 (ja) マルチパス環境におけるアダプティブストリーミングのためのシステムと方法
JP5780684B2 (ja) コンテンツ再生情報推定装置及び方法及びプログラム
US7886071B2 (en) Communication processing device, communication control method, and computer program
KR20120140670A (ko) 병렬 스트리밍
JP7307211B2 (ja) クライアント、サーバ、受信方法及び送信方法
JP2011523298A (ja) クライアント側ストリームスイッチング
TW201026064A (en) Method for audio and video control response and bandwidth adaptation based on network streaming application and server using the same
TWI573450B (zh) 伺服器內所儲存視聽節目表之接收方法和裝置
JP6021385B2 (ja) ストリーミングメディア再生装置、ストリーミングメディア再生方法、及びプログラム
US20090319682A1 (en) Method and device for transmiting data
JP5252347B2 (ja) ネットワークシステム及び通信計画サーバ
WO2022123066A1 (en) Method for playing on a player of a client device a content streamed in a network
JP2011061533A (ja) コンテンツ配信システム、体感品質推定装置、方法、及び、プログラム
US20160050243A1 (en) Methods and devices for transmission of media content
Hayes et al. Adaptive bitrate video delivery using http/2 over mptcp architecture
GB2543840A (en) Method and server for managing the transmission of packets over a plurality of paths
JP6099715B2 (ja) ストリーミングメディア再生装置、ストリーミングメディア再生方法、及びプログラム
Ahsan et al. DASHing towards hollywood
Arthur et al. The effects of packet reordering in a wireless multimedia environment
Laine et al. Network Capacity Estimators Predicting QoE in HTTP Adaptive Streaming

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090702

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100121