JP7167194B2 - リアルタイム適応ビットレートトランスコーディングおよびトランスコードされたメディアの伝送のためのシステムおよび方法 - Google Patents

リアルタイム適応ビットレートトランスコーディングおよびトランスコードされたメディアの伝送のためのシステムおよび方法 Download PDF

Info

Publication number
JP7167194B2
JP7167194B2 JP2020571698A JP2020571698A JP7167194B2 JP 7167194 B2 JP7167194 B2 JP 7167194B2 JP 2020571698 A JP2020571698 A JP 2020571698A JP 2020571698 A JP2020571698 A JP 2020571698A JP 7167194 B2 JP7167194 B2 JP 7167194B2
Authority
JP
Japan
Prior art keywords
transcoded
request
portions
time
data
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.)
Active
Application number
JP2020571698A
Other languages
English (en)
Other versions
JP2022503419A (ja
Inventor
スティーブン メイヒュー,
マチェイ ドブルジンスキ,
ジョナサン オリバー,
Original Assignee
ロヴィ ガイズ, インコーポレイテッド
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 ロヴィ ガイズ, インコーポレイテッド filed Critical ロヴィ ガイズ, インコーポレイテッド
Publication of JP2022503419A publication Critical patent/JP2022503419A/ja
Application granted granted Critical
Publication of JP7167194B2 publication Critical patent/JP7167194B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • 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/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4621Controlling the complexity of the content stream or additional data, e.g. lowering the resolution or bit-rate of the video stream for a mobile client with a small screen
    • 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/75Media network packet handling
    • 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/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • 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/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • 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/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • 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/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440236Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by media transcoding, e.g. video is transformed into a slideshow of still pictures, audio is converted into text
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

ネットワークを経由してメディアを配信するストリーミングメディアシステムは、多くの場合、適応ビットレートアルゴリズムを使用し、ユーザに可能な限り最も高いメディア品質(例えば、ビットレート)を提供することと、転送速度が、再生速度と比較して遅すぎる、再生失速を最小限にすることと、必要なときのみビットレートを切り替えることによって安定性を最大限にすることとの間のバランスを最適化する。殆どのビデオシステムは、メディア転送の観察されるネットワーク帯域幅に最も密接に合致するビットレートを選択する。しかしながら、メディアのリアルタイムのオンザフライトランスコーディングでは、ビットレートが、変更されるときに、またはユーザが、シークコマンドを入力するときにトランスコーダによって導入される、ネットワーク帯域幅から独立する付加的待ち時間が、存在する。従来のシステムは、本待ち時間を考慮することができず、多くの場合、最適以下のビットレートを選択する、またはさらには、2つの最適以下のビットレートの間を行き来する。加えて、従来のシステムは、サーバからセグメントを要求するとき、リアルタイムエンコードされたメディアアセットと事前エンコードされたメディアアセットとを区別し得ない。したがって、従来のシステムは、付加的セグメントを積極的に要求し、最適以下のビットレートにおいて受信されるセグメントの数を増加させ得る。まだエンコードされていないセグメントを不当に要求することはまた、より低く測定される帯域幅につながり、システムが可能な限り最も高いビットレートにおいて暗号化することを妨害し得る。
故に、トランスコーダによって導入される付加的待ち時間を考慮する、メディアアセットのリアルタイム適応ビットレートトランスコーディングおよび再生のためのクライアントデバイスへのトランスコードされたメディアの伝送のためのシステムおよび方法が、本明細書に説明される。サーバデバイスが、メディアアセットを複数の部分に分割してもよい。部分は、数秒のオーディオおよび/またはビデオデータを備えるメディアアセットの「セグメント」であってもよく、クライアントデバイスによって再生され得る最小量のデータであってもよい。代替として、部分は、上記に定義されるようなセグメントの「チャンク」であってもよく、これは、他のチャンクと組み合わせられると、再生のための完全なセグメントを形成する少量のデータを含有する。例えば、サーバデバイスは、メディアアセットを、それぞれ、数秒のメディアコンテンツを表す、複数のセグメントに分割してもよい。サーバデバイスはさらに、各セグメントを、それぞれ、所与のセグメントからの少量のデータを備える、複数のチャンクに分割してもよい。サーバデバイスは、クライアントデバイスから、ビデオの部分が第1のビットレート(可能な限り最も低いビットレート)においてストリーミングされる要求を受信する。サーバデバイスは、クライアントデバイスが可能な限りすぐに再生し始めることを可能にするために、最も低いビットレートにおいて第1の部分をトランスコードし始める。第1の部分をトランスコードする際に伴う、始動トランスコード待ち時間が、存在する。始動トランスコード待ち時間は、要求されたビットレートにおいてトランスコードし始めるためにトランスコードを初期化する際の遅延から生じ得る。いくつかの実装では、ハードウェアアップグレード性または拡張性を有していない、ユーザ機器デバイス(例えば、セットトップボックス)等の限定されたハードウェアおよび処理能力を伴うシステムにおいてトランスコード待ち時間を短縮することは、困難であり得る。いくつかの実装では、セットトップボックス等のユーザ機器デバイスは、本明細書に説明されるようなサーバデバイスの機能を実施してもよい。例えば、セットトップボックスは、スマートフォン上で視聴するためのメディアアセットをトランスコードしてもよい。いくつかの実施形態では、セットトップボックスは、ユーザの敷地上のローカルエリアネットワークを介してメディアを伝送してもよい。したがって、クライアントデバイスが、ネットワークがサポートし得る最大ビットレートにおいて部分を受信することを可能にするために、観察される帯域幅計算は、初期要求と、新しいビットレートにおいて新しいトランスコーディングプロセスを開始するようにトランスコーダに要求する、要求ビットレートが変化する任意の時間との両方において、トランスコーダによって導入される始動待ち時間を考慮しなければならない。いくつかの実装では、トランスコーダはまた、クライアントデバイスに利用可能なトランスコードされたデータの量を報告し、クライアントデバイスが、メディアアセットの付加的部分を要求する時間をより良好に決定することを可能にし得る。
本発明では、トランスコードされた第1の部分(例えば、チャンク)のヘッダが、応答のネットワーク帯域幅を計算するためにクライアントデバイスによって使用される、トランスコード待ち時間値を含むように更新される。具体的には、クライアントデバイスは、測定された応答時間(すなわち、第1の部分に関する要求が送信されることと第1の部分に対応するトランスコードされた部分が受信されることとの間の時間周期)からトランスコード待ち時間値を減算し、調節された応答時間に基づいて、ネットワーク帯域幅を測定してもよい。クライアントデバイスは、第1の部分に対応するトランスコードされた部分を受信することに応答して、第2の部分が第2のビットレートにおいてトランスコードされる第2の要求を送信する。これは、クライアントデバイスが最適なビットレートにおいて部分を受信するために要求される時間量を短縮する。加えて、チャンクのヘッダ内にトランスコード待ち時間値を提供することによって、クライアントデバイスが最適なビットレートを決定し得る前に要求される時間量は、短縮される。従来のシステムは、トランスコーダ待ち時間を遅いネットワーク条件と解釈し、ネットワークによってサポートされ得るものよりも低いビットレートにおいて次の部分を要求する。本明細書に説明されるシステムは、トランスコーダ待ち時間を考慮し、ネットワークの帯域幅を計算するときにこれを考慮しない。
第2の部分がトランスコードされるべき第2のビットレートは、実際のネットワーク帯域幅を決定するためにトランスコード待ち時間値を使用することによって、より正確に決定されてもよい。いくつかの実施形態では、第2の部分に関する第2の要求が送信される時間は、第1の部分に関する第1の要求が受信された時間におけるメディアアセットの利用可能な事前トランスコードされたバイトまたは部分の数を示すカウント値に基づいて決定されてもよい。
いくつかの実装では、各トランスコードされた部分のヘッダはまた、ある部分に関する要求が受信された時間におけるメディアアセットの利用可能な事前トランスコードされたバイトまたは部分の数を示すカウント値を含むように更新されてもよい。カウント値が、完全セグメント内のあるバイト数またはデータの任意の他の単位未満である、またはそれに等しいとき、クライアントデバイスは、これが複数のセグメントの後続セグメントを求める時間を遅延させ得る(例えば、クライアントデバイスは、現在再生されているセグメントが再生を終了されたときのみ新しいセグメントを要求するであろう)。例えば、完全セグメントは、100バイトを含有し得、カウント値は、50バイトのみが利用可能であることを示し得る。クライアントデバイスは、付加的セグメントを要求する前に、現在再生されているセグメントが、終了するまで待機し得る。これは、完全セグメントを構成するために十分なバイトまたはチャンクをトランスコードするためのトランスコーダ時間を可能にする。クライアントデバイスは、(例えば、バッファ深度閾値を1つのセグメントに設定することによって)そのローカルバッファ内の1つの部分のみ(例えば、単一のセグメントのみ)を要求し得る。カウント値が、ある部分内の(例えば、あるセグメント内の)バイトまたはチャンクの数を上回るとき、クライアントデバイスは、プレーヤデバイスの再生バッファ内で要求される部分(例えば、セグメント)の数を増加させ得る。例えば、クライアントデバイスは、再生バッファ内で要求される部分(例えば、セグメント)の数を3つの部分に増加させ得る。新しい部分は、再生バッファが、充填されるまで(例えば、バッファ深度閾値が、満たされると)、直ちに要求され得る。可変バッファ深度閾値を有することは、再生失速(例えば、後続部分が受信される前にある部分の終了に到達すること)およびネットワークの帯域幅の関連付けられる低査定をもたらし得る、トランスコーダが要求された部分毎に十分な量のデータをまだトランスコードしていない時間にクライアントデバイスが積極的に部分を要求することを防止することによって、再生体験を改良する。事前トランスコードされた部分が、利用可能であるかどうかに依存する可変バッファ深度閾値を使用することによって、本システムは、ネットワークのより高く測定される帯域幅のため、より高いトランスコーディングビットレートを要求することができる。
トランスコード待ち時間を考慮することによって、およびバッファ深度閾値を通して新しい部分(例えば、セグメント)が要求される速度を変動させることによって、本発明は、再生プロセスを失速させる可能性を低減させる。例えば、過剰に高いビットレートが、選択される場合、過剰に多い部分が、要求される場合、または両方の場合、クライアントデバイスは、再生バッファ内にすでにある部分の再生の終了より前に部分を受信しないであろう。これは、失速シナリオをもたらし、クライアントデバイスは、メディアアセットの再生を継続するために、トランスコードされたデータが利用可能になるまで待機しなければならない。
いくつかの側面では、メディアガイドアプリケーションが、メディアアセットを複数の部分に分割してもよい。例えば、メディアアセットは、未加工メディアストリームとして受信されてもよい。メディアガイドアプリケーションは、フレームタイプ(例えば、Iフレーム)または再生持続時間(例えば、5秒のメディア再生時間を備えるデータ)に基づき得る、境界点においてメディアアセットを分割してもよい。代替として、メディアアセットは、MPEG-2またはMPEG-4等のセグメント化形式において受信されてもよい。メディアガイドアプリケーションは、特定のサイズ(すなわち、「チャンク」)または持続時間(すなわち、「セグメント」)の部分を発生させるために、そのようなセグメントを組み合わせる、またはさらに分割してもよい。例示的実施形態では、これらのアクションは、サーバデバイス上でメディアガイドアプリケーションによって実施される。しかしながら、メディアガイドアプリケーションは、サーバデバイスまたはクライアントデバイスのいずれかの上でこれらのアクションを実施し得ることが検討される。
メディアガイドアプリケーションは、クライアントデバイスから、複数の部分の第1の部分(例えば、セグメント)が第1のビットレートにおいてトランスコードされる第1の要求を受信してもよい。例えば、クライアントデバイスは、メディアアセットの第1の部分が400kbpsのビットレートにおいてトランスコードされる要求をサーバデバイスに伝送してもよい。第1の要求を受信することに応答して、メディアガイドアプリケーションは、要求された第1のビットレートにおいて複数の部分をトランスコードし始め、複数の対応するトランスコードされた部分を発生させてもよい。サーバデバイス上で実施されるものとして説明されるが、これらのアクションは、クライアントデバイス上で実施され得ることも検討される。
メディアガイドアプリケーションは、トランスコード待ち時間値および第1の要求が受信された時間におけるメディアアセットの利用可能な事前トランスコードされた部分の数を示すカウント値を備えるように、第1の部分に対応する複数のトランスコードされた部分のあるトランスコードされた部分のヘッダを更新してもよい。例えば、メディアガイドアプリケーションが、第1の要求の受信からトランスコーダの開始までの時間を100ミリ秒であると測定した場合、トランスコードされた部分のヘッダのトランスコード待ち時間値フィールドは、100に設定されてもよい。加えて、第1の部分を構成するバイトを除いて、1,024バイトのメディアデータが、要求されたビットレートにおいてトランスコードされた場合、トランスコードされた部分のヘッダのカウント値フィールドは、メディアガイドアプリケーションが、バイト単位で部分サイズを測定するように構成される場合、1,024の値に設定されてもよい、または、メディアガイドアプリケーションが、キロバイト単位で部分サイズを測定するように構成される場合、1に設定されてもよい。代替として、カウント値は、要求されたビットレートにおいてトランスコードされた完全なセグメントの数を示してもよい。また別の代替として、カウント値は、単純に、完全なセグメントを構成するデータの量が、利用可能であるかどうかを示すフラグであってもよい。メディアガイドアプリケーションは、次いで、トランスコードされたセグメントをクライアントデバイスに伝送してもよい。いくつかの実施形態では、トランスコードされたセグメントは、HTTPチャンク化転送エンコーディングを使用して、一連のチャンクとして伝送されてもよい。上記のアクションは、サーバデバイスまたはクライアントデバイスのいずれかの上でメディアガイドアプリケーションによって実施され得ることが検討される。
メディアガイドアプリケーションは、クライアントデバイスから、複数の部分の第2の部分(例えば、第2のセグメント)が第2のビットレートにおいてトランスコードされる第2の要求を受信してもよい。メディアガイドアプリケーションは、第1のセグメントに対応するトランスコードされた部分のヘッダ内に示されるトランスコード待ち時間値に基づいて、第2のビットレートを決定してもよい。例えば、メディアガイドアプリケーションは、クライアントデバイスとサーバデバイスとの間の接続によってサポートされ得る最大ビットレートを計算するとき、トランスコード待ち時間を考慮してもよい。サーバデバイス上で実施されるものとして説明されるが、上記のアクションはまた、クライアントデバイス上でメディアガイドアプリケーションによって実施され得ることも検討される。
メディアガイドアプリケーションは、第1の部分に対応するトランスコードされた部分のヘッダ内に含まれるカウント値に基づいて、サーバデバイスへのクライアントデバイスによる第2の要求の伝送に関する時間を決定してもよい。例えば、メディアガイドアプリケーションは、カウント値を使用し、要求されたビットレートにおいて完全なセグメントを構成するために十分なメディアデータが、トランスコードされたかどうかを決定してもよく、カウント値が、完全なセグメントを上回る、またはそれに等しいデータを示す場合のみ、ある部分を要求してもよい。上記のアクションは、サーバデバイスまたはクライアントデバイスのいずれかの上でメディアガイドアプリケーションによって実施され得ることが検討される。
いくつかの実施形態では、メディアガイドアプリケーションは、第1の要求がサーバデバイスによって受信された時間と第1のビットレートにおいてトランスコードするステップが開始された時間との間の時間量を決定することによって、トランスコード待ち時間値を計算してもよい。上記のアクションは、サーバデバイスまたはクライアントデバイスのいずれかの上でメディアガイドアプリケーションによって実施され得ることが検討される。
いくつかの実施形態では、メディアガイドアプリケーションは、予備待ち時間値に到達するように、第1の要求がクライアントデバイスによって伝送された時間と第1の部分に対応するトランスコードされた部分がクライアントデバイスによって受信された時間との間の時間量を決定することによって、トランスコード待ち時間値に基づいて、第2のビットレートを決定してもよい。メディアガイドアプリケーションは、最終待ち時間値に到達するように、予備待ち時間値からトランスコード待ち時間値を減算してもよい。メディアガイドアプリケーションは、第1の部分に対応するトランスコードされた部分内に含有されるデータの量を最終待ち時間値で除算することによって、観察される帯域幅を決定してもよい。メディアガイドアプリケーションは、観察される帯域幅に基づいて、第2のビットレートを選択してもよい。例えば、メディアガイドアプリケーションのトランスコーダモジュールは、いくつかのプリセット出力ビットレートレベルを有してもよい。メディアガイドアプリケーションは、観察される帯域幅よりも低い最も近いビットレートレベルを選択してもよい。上記のアクションは、サーバデバイスまたはクライアントデバイスのいずれかの上でメディアガイドアプリケーションによって実施され得ることが検討される。
いくつかの実施形態では、メディアガイドアプリケーションは、トランスコードされた部分をクライアントデバイスに伝送するステップに先立って、サーバデバイスにおけるチャンクバッファ内にトランスコードされた部分を記憶してもよい。例えば、メディアガイドアプリケーションは、メディアアセットのセグメントが、トランスコードされる際、チャンクバッファ内に数バイトのトランスコートされたデータを記憶してもよい。カウント値は、チャンクバッファ内に記憶されるメディアアセットのトランスコードされた部分(例えば、バイトまたはデータの他の単位)の数を示してもよい。上記のアクションは、サーバデバイスまたはクライアントデバイスのいずれかの上でメディアガイドアプリケーションによって実施され得ることが検討される。
いくつかの実施形態では、メディアアセットの複数の部分(例えば、チャンク)のサブセットは、メディアアセットの完全なセグメントを構成する。メディアガイドアプリケーションは、カウント値によって表されるデータの量を決定し、カウント値によって表されるデータの量が、第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回るかどうかを決定することによって、カウント値に基づいて、第2の要求の伝送に関する時間を決定してもよい。例えば、完全なトランスコードされたセグメントは、400キロバイトであってもよい。カウント値が、500キロバイトのデータがチャンクバッファ内に記憶されていると示す場合、メディアガイドアプリケーションは、第2の要求を直ちに伝送してもよい。カウント値が、300キロバイトのデータがチャンクバッファ内に記憶されていると示す場合、メディアガイドアプリケーションは、第2の要求を伝送する前に、現在再生されているセグメントの再生が、完了するまで待機してもよい。上記のアクションは、サーバデバイスまたはクライアントデバイスのいずれかの上でメディアガイドアプリケーションによって実施され得ることが検討される。
いくつかの実施形態では、カウント値によって表されるデータの量が、第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を下回ると決定することに応答して、メディアガイドアプリケーションは、バッファ深度閾値を第1の値に設定してもよい。例えば、メディアガイドアプリケーションは、バッファ深度閾値を1等の最小数に設定してもよい。カウント値によって表されるデータの量が、第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回ると決定することに応答して、メディアガイドアプリケーションは、バッファ深度閾値を、第1の値を上回る第2の値に設定してもよい。例えば、メディアガイドアプリケーションは、1を以前のバッファ深度閾値に追加してもよい。上記のアクションは、サーバデバイスまたはクライアントデバイスのいずれかの上でメディアガイドアプリケーションによって実施され得ることが検討される。
いくつかの実施形態では、メディアガイドアプリケーションは、再生バッファ内に記憶されるトランスコードされた部分の数をバッファ深度閾値と比較してもよい。再生バッファ内に記憶されるトランスコードされた部分の数が、バッファ深度閾値を満たすと決定することに応答して、メディアガイドアプリケーションは、現在再生されている部分の再生が終了するであろう時間を識別してもよく、クライアントデバイスから、識別された時間に第3の部分に関する第3の要求を伝送してもよい。再生バッファ内に記憶されるトランスコードされた部分の数が、バッファ深度閾値を下回ると決定することに応答して、メディアガイドアプリケーションは、クライアントデバイスから第3の要求を直ちに伝送してもよい。上記のアクションは、サーバデバイスまたはクライアントデバイスのいずれかの上でメディアガイドアプリケーションによって実施され得ることが検討される。
いくつかの実施形態では、メディアガイドアプリケーションは、クライアントデバイスの再生バッファ内に受信されたトランスコードされた部分を記憶してもよい。メディアガイドアプリケーションは、クライアントデバイスにおいて、トランスコードされた部分を再生してもよい。トランスコードされた部分の再生後、メディアガイドアプリケーションは、再生バッファからトランスコードされた部分を除去してもよい。例えば、メディアガイドアプリケーションは、トランスコードされた部分を削除してもよい。メディアガイドアプリケーションは、再生バッファ内に記憶されるトランスコードされた部分の数をバッファ深度閾値と比較し、再生バッファ内に記憶される部分の数が、バッファ深度閾値を満たすまで、付加的部分を要求し続けてもよい。上記のアクションは、サーバデバイスまたはクライアントデバイスのいずれかの上でメディアガイドアプリケーションによって実施され得ることが検討される。
いくつかの実施形態では、サーバデバイスは、ユーザ機器デバイス(例えば、セットトップボックス)であってもよく、クライアントデバイスは、ユーザのモバイルデバイスであってもよい。メディアアセットは、メディアコンテンツソースからユーザ機器デバイスによって受信されるライブ放送であってもよく、単一のビットレートにおいて受信されてもよい。代替として、メディアアセットは、ビデオオンデマンドサービスまたはインターネットストリーミングサービス(例えば、Netflix(R)、YouTube(登録商標)、Amazon(R)等)等のオーバーザトップサービスから受信されてもよい。
本発明は、例えば、以下を提供する。
(項目1)
メディアアセットをストリーミングするための方法であって、前記方法は、
前記メディアアセットを複数の部分に分割することと、
クライアントデバイスから、前記複数の部分の第1の部分が第1のビットレートにおいてトランスコードされる第1の要求を受信することと、
前記第1の要求を受信することに応答して、
前記要求された第1のビットレートにおいて前記複数の部分をトランスコードし、複数の対応するトランスコードされた部分を発生させることと、
1)トランスコード待ち時間値および2)前記第1の要求が受信された時間における前記メディアアセットの利用可能な事前トランスコードされた部分の数を示すカウント値を備えるように、前記第1の部分に対応する前記複数のトランスコードされた部分のうちのトランスコードされた部分のヘッダを更新することと、
前記複数の部分の第1の部分に対応する前記トランスコードされた部分を前記クライアントデバイスに伝送することと、
前記クライアントデバイスから、前記複数の部分の第2の部分が第2のビットレートにおいてトランスコードされる第2の要求を受信することと
を含み、
前記第2のビットレートは、前記第1の部分に対応する前記トランスコードされた部分のヘッダ内に含まれる前記トランスコード待ち時間値に基づいて決定され、
前記第2の要求は、前記第1の部分に対応する前記トランスコードされた部分のヘッダ内に含まれる前記カウント値に基づいて決定される時間に伝送される、方法。
(項目2)
前記トランスコード待ち時間値は、
前記第1の要求が受信された時間を表す第1の時間値を決定することと、
前記第1のビットレートにおいてトランスコードすることが開始された時間を表す第2の時間値を決定することと、
前記第2の時間値から前記第1の時間値を減算することと
によって計算される、項目1に記載の方法。
(項目3)
前記トランスコード待ち時間値に基づいて、前記第2のビットレートを決定することは、
前記第1の要求が前記クライアントデバイスによって伝送された時間を表す第1の時間値を決定することと、
前記第1の部分に対応する前記トランスコードされた部分が前記クライアントデバイスによって受信された時間を表す第2の時間値を決定することと、
前記第2の時間値から前記第1の時間値を減算することによって、予備待ち時間値を計算することと、
前記予備待ち時間値から前記トランスコード待ち時間値を減算することによって、最終待ち時間値を計算することと、
前記第1の部分に対応する前記トランスコードされた部分内に含有されるデータの量を決定することと、
前記データの量を前記最終待ち時間値で除算することによって、観察される帯域幅を決定することと、
前記観察される帯域幅に基づいて、前記第2のビットレートを選択することと
を含む、項目1に記載の方法。
(項目4)
前記トランスコードされた部分を前記クライアントデバイスに伝送することに先立って、チャンクバッファ内にトランスコードされた部分を記憶することをさらに含み、
前記カウント値は、前記チャンクバッファ内に記憶される前記メディアアセットのトランスコードされた部分の数を示す、項目1に記載の方法。
(項目5)
前記複数の部分のサブセットは、前記メディアアセットの完全なセグメントを構成し、前記カウント値に基づいて、前記第2の要求の伝送に関する時間を決定することは、
前記カウント値によって表されるデータの量を決定することと、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回るかどうかを決定することと
を含む、項目1に記載の方法。
(項目6)
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを備える前記データの量を下回ると決定することに応答して、バッファ深度閾値を第1の値に設定することと、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を上回ると決定することに応答して、前記バッファ深度閾値を、前記第1の値を上回る第2の値に設定することと
をさらに含む、項目5に記載の方法。
(項目7)
再生バッファ内に記憶されるトランスコードされた部分の数をバッファ深度閾値と比較することをさらに含む、項目6に記載の方法。
(項目8)
前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を満たすと決定することに応答して、
現在再生されている部分の再生が終了するであろう時間を識別することと、
前記識別された時間に第3の部分に関する第3の要求を伝送することと
をさらに含む、項目7に記載の方法。
(項目9)
前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を下回ると決定することに応答して、前記第3の要求を直ちに伝送することをさらに含む、項目8に記載の方法。
(項目10)
前記再生バッファ内に受信されたトランスコードされた部分を記憶することと、
前記クライアントデバイスにおいて、前記トランスコードされた部分を再生することと、
前記トランスコードされた部分の再生後、前記再生バッファから前記トランスコードされた部分を除去することと、
前記再生バッファ内に記憶される前記トランスコードされた部分の数を前記バッファ深度閾値と比較することと、
前記再生バッファ内に記憶される前記部分の数が、前記バッファ深度閾値を満たすまで、付加的部分を要求し続けることと
をさらに含む、項目9に記載の方法。
(項目11)
メディアアセットをストリーミングするためのシステムであって、前記システムは、
少なくとも1つの制御回路であって、
前記メディアアセットを複数の部分に分割することと、
クライアントデバイスから、前記複数の部分の第1の部分が第1のビットレートにおいてトランスコードされる第1の要求を受信することと、
前記第1の要求を受信することに応答して、
前記要求された第1のビットレートにおいて前記複数の部分をトランスコードし、
複数の対応するトランスコードされた部分を発生させることと、
1)トランスコード待ち時間値および2)前記第1の要求が受信された時間における前記メディアアセットの利用可能な事前トランスコードされた部分の数を示すカウント値を備えるように、前記第1の部分に対応する前記複数のトランスコードされた部分のうちのトランスコードされた部分のヘッダを更新することと、
前記複数の部分の第1の部分に対応する前記トランスコードされた部分を前記クライアントデバイスに伝送することと、
前記第1の部分に対応する前記トランスコードされた部分のヘッダ内に含まれる前記トランスコード待ち時間値に基づいて、第2のビットレートを決定することと、
前記複数の部分の第2の部分が前記第2のビットレートにおいてトランスコードされる第2の要求を伝送する時間を決定することと、
前記クライアントデバイスから、前記決定された時間において、前記第2の要求を受信することと
を行うように構成される、少なくとも1つの制御回路
を備える、システム。
(項目12)
前記少なくとも1つの制御回路は、
前記第1の要求が受信された時間を表す第1の時間値を決定することと、
前記第1のビットレートにおいてトランスコードすることが開始された時間を表す第2の時間値を決定することと、
前記第2の時間値から前記第1の時間値を減算することと
を行うように構成される前記トランスコード待ち時間値を決定するように構成される、項目11に記載のシステム。
(項目13)
前記少なくとも1つの制御回路は、
前記第1の要求が前記クライアントデバイスによって伝送された時間を表す第1の時間値を決定することと、
前記第1の部分に対応する前記トランスコードされた部分が前記クライアントデバイスによって受信された時間を表す第2の時間値を決定することと、
前記第2の時間値から前記第1の時間値を減算することによって、予備待ち時間値を計算することと、
前記予備待ち時間値から前記トランスコード待ち時間値を減算することによって、最終待ち時間値を計算することと、
前記第1の部分に対応する前記トランスコードされた部分内に含有されるデータの量を決定することと、
前記データの量を前記最終待ち時間値で除算することによって、観察される帯域幅を決定することと、
前記観察される帯域幅に基づいて、前記第2のビットレートを選択することと
を行うように構成される前記トランスコード待ち時間値に基づいて、前記第2のビットレートを決定するように構成される、項目11に記載のシステム。
(項目14)
前記少なくとも1つの制御回路はさらに、
前記トランスコードされた部分を前記クライアントデバイスに伝送することに先立って、前記チャンクバッファ内にトランスコードされた部分を記憶するように構成され、
前記カウント値は、前記チャンクバッファ内に記憶される前記メディアアセットのトランスコードされた部分の数を示す、項目11に記載のシステム。
(項目15)
前記複数の部分のサブセットは、前記メディアアセットの完全なセグメントを構成し、前記少なくとも1つの制御回路は、
前記カウント値によって表されるデータの量を決定することと、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回るかどうかを決定することと
によって、前記カウント値に基づいて、前記第2の要求の伝送に関する時間を決定するように構成される、項目11に記載のシステム。
(項目16)
前記少なくとも1つの制御回路はさらに、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を下回ると決定することに応答して、前記バッファ深度閾値を第1の値に設定することと、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を上回ると決定することに応答して、前記バッファ深度閾値を、前記第1の値を上回る第2の値に設定することと
を行うように構成される、項目15に記載のシステム。
(項目17)
前記少なくとも1つの制御回路はさらに、
前記再生バッファ内に記憶されるトランスコードされた部分の数をバッファ深度閾値と比較するように構成される、項目16に記載のシステム。
(項目18)
前記少なくとも1つの制御回路はさらに、
前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を満たすと決定することに応答して、
現在再生されている部分の再生が終了するであろう時間を識別することと、
前記識別された時間に第3の部分に関する第3の要求を伝送することと
を行うように構成される、項目17に記載のシステム。
(項目19)
前記少なくとも1つの制御回路はさらに、前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を下回ると決定することに応答して、前記第3の要求を直ちに伝送するように構成される、項目18に記載のシステム。
(項目20)
前記少なくとも1つの制御回路はさらに、
前記再生バッファ内に受信されたトランスコードされた部分を記憶することと、
前記クライアントデバイスにおいて、前記トランスコードされた部分を再生することと、
前記トランスコードされた部分の再生後、前記再生バッファから前記トランスコードされた部分を除去することと、
前記再生バッファ内に記憶される前記トランスコードされた部分の数を前記バッファ深度閾値と比較することと、
前記再生バッファ内に記憶される前記部分の数が、前記バッファ深度閾値を満たすまで、付加的部分を要求し続けることと
を行うように構成される、項目19に記載のシステム。
(項目21)
メディアアセットをストリーミングするためのシステムであって、前記システムは、
前記メディアアセットを複数の部分に分割するための手段と、
クライアントデバイスから、前記複数の部分の第1の部分が第1のビットレートにおいてトランスコードされる第1の要求を受信するための手段と、
前記第1の要求を受信することに応答して、
前記要求された第1のビットレートにおいて前記複数の部分をトランスコードし、複数の対応するトランスコードされた部分を発生させることと、
1)トランスコード待ち時間および2)前記第1の要求が受信された時間における前記メディアアセットの利用可能な事前トランスコードされた部分の数を示すカウント値を備えるように、前記第1の部分に対応する前記複数のトランスコードされた部分のうちのトランスコードされた部分のヘッダを更新することと、
前記複数の部分の第1の部分に対応する前記トランスコードされた部分を前記クライアントデバイスに伝送することと
を行うための手段と、
前記クライアントデバイスから、前記複数の部分の第2の部分が第2のビットレートにおいてトランスコードされる第2の要求を受信するための手段と、
前記クライアントデバイスにおいて、前記第1の部分に対応する前記トランスコードされた部分のヘッダ内に含まれる前記トランスコード待ち時間値に基づいて、前記第2のビットレートを決定するための手段と、
前記クライアントデバイスにおいて、前記第1の部分に対応する前記トランスコードされた部分のヘッダ内に含まれる前記カウント値に基づいて、前記第2の要求の伝送に関する時間を決定するための手段と
を備える、システム。
(項目22)
前記第1の要求が受信された時間を表す第1の時間値を決定するための手段と、
前記第1のビットレートにおいてトランスコードすることが開始された時間を表す第2の時間値を決定するための手段と、
前記第2の時間値から前記第1の時間値を減算するための手段と
を備える前記トランスコード待ち時間値を決定するための手段をさらに備える、項目21に記載のシステム。
(項目23)
前記トランスコード待ち時間値に基づいて、前記第2のビットレートを決定するための手段は、
前記第1の要求が前記クライアントデバイスによって伝送された時間を表す第1の時間値を決定するための手段と、
前記第1の部分に対応する前記トランスコードされた部分が前記クライアントデバイスによって受信された時間を表す第2の時間値を決定するための手段と、
前記第2の時間値から前記第1の時間値を減算することによって、予備待ち時間値を計算するための手段と、
前記予備待ち時間値から前記トランスコード待ち時間値を減算することによって、最終待ち時間値を計算するための手段と、
前記第1の部分に対応する前記トランスコードされた部分内に含有されるデータの量を決定するための手段と、
前記データの量を前記最終待ち時間値で除算することによって、観察される帯域幅を決定するための手段と、
前記観察される帯域幅に基づいて、前記第2のビットレートを選択するための手段と
を備える、項目21に記載のシステム。
(項目24)
前記トランスコードされた部分を前記クライアントデバイスに伝送することに先立って、チャンクバッファ内にトランスコードされた部分を記憶するための手段をさらに備え、
前記カウント値は、前記チャンクバッファ内に記憶される前記メディアアセットのトランスコードされた部分の数を示す、項目21に記載のシステム。
(項目25)
前記複数の部分のサブセットは、前記メディアアセットの完全なセグメントを構成し、前記カウント値に基づいて、前記第2の要求の伝送に関する時間を決定するための手段は、
前記カウント値によって表されるデータの量を決定するための手段と、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回るかどうかを決定するための手段と
を備える、項目21に記載のシステム。
(項目26)
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を下回ると決定することに応答して、前記バッファ深度閾値を第1の値に設定するための手段と、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を上回ると決定することに応答して、前記バッファ深度閾値を、前記第1の値を上回る第2の値に設定するための手段と
をさらに備える、項目25に記載のシステム。
(項目27)
前記再生バッファ内に記憶されるトランスコードされた部分の数をバッファ深度閾値と比較するための手段をさらに備える、項目26に記載のシステム。
(項目28)
前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を満たすと決定することに応答して、
現在再生されている部分の再生が終了するであろう時間を識別することと、
前記識別された時間に第3の部分に関する第3の要求を伝送することと
を行うための手段をさらに備える、項目27に記載のシステム。
(項目29)
前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を下回ると決定することに応答して、前記第3の要求を直ちに伝送するための手段をさらに備える、項目28に記載のシステム。
(項目30)
前記再生バッファ内に受信されたトランスコードされた部分を記憶するための手段と、
前記クライアントデバイスにおいて、前記トランスコードされた部分を再生するための手段と、
前記トランスコードされた部分の再生後、前記再生バッファから前記トランスコードされた部分を除去するための手段と、
前記再生バッファ内に記憶される前記トランスコードされた部分の数を前記バッファ深度閾値と比較するための手段と、
前記再生バッファ内に記憶される前記部分の数が、前記バッファ深度閾値を満たすまで、付加的部分を要求し続けるための手段と
をさらに備える、項目29に記載のシステム。
(項目31)
非一過性コンピュータ可読媒体であって、前記非一過性コンピュータ可読媒体は、メモリを備え、前記メモリは、メディアアセットをストリーミングするためのその上にエンコードされる非一過性コンピュータ可読命令を有し、前記非一過性コンピュータ可読命令は、少なくとも1つの制御回路によって実行されると、前記少なくとも1つの制御回路に、
メディアアセットを複数の部分に分割することと、
クライアントデバイスから、前記複数の部分の第1の部分が第1のビットレートにおいてトランスコードされる第1の要求を受信することと、
前記第1の要求を受信することに応答して、
前記要求された第1のビットレートにおいて前記複数の部分をトランスコードし、複数の対応するトランスコードされた部分を発生することと、
1)トランスコード待ち時間値および2)前記第1の要求が受信された時間における前記メディアアセットの利用可能な事前トランスコードされた部分の数を示すカウント値を備えるように、前記第1の部分に対応する前記複数のトランスコードされた部分のうちのトランスコードされた部分のヘッダを更新することと、
前記複数の部分の第1の部分に対応する前記トランスコードされた部分を前記クライアントデバイスに伝送することと、
前記クライアントデバイスから、前記複数の部分の第2の部分が第2のビットレートにおいてトランスコードされる第2の要求を受信することと、
前記クライアントデバイスにおいて、前記第1の部分に対応する前記トランスコードされた部分のヘッダ内に含まれる前記トランスコード待ち時間値に基づいて、前記第2のビットレートを決定することと、
前記クライアントデバイスにおいて、前記第1の部分に対応する前記トランスコードされた部分のヘッダ内に含まれる前記カウント値に基づいて、前記第2の要求の伝送に関する時間を決定することと
を行わせる、非一過性コンピュータ可読媒体。
(項目32)
前記少なくとも1つの制御回路によって実行されると、前記少なくとも1つの制御回路に、
前記第1の要求が受信された時間を表す第1の時間値を決定することと、
前記第1のビットレートにおいてトランスコードすることが開始された時間を表す第2の時間値を決定することと、
前記第2の時間値から前記第1の時間値を減算することと
を行わせる前記トランスコード待ち時間値を決定するための命令をさらに備える、項目31に記載の非一過性コンピュータ可読媒体。
(項目33)
前記トランスコード待ち時間値に基づいて、前記第2のビットレートを決定するための前記命令の前記少なくとも1つの制御回路による実行はさらに、前記少なくとも1つの制御回路に、
前記第1の要求が前記クライアントデバイスによって伝送された時間を表す第1の時間値を決定することと、
前記第1の部分に対応する前記トランスコードされた部分が前記クライアントデバイスによって受信された時間を表す第2の時間値を決定することと、
前記第2の時間値から前記第1の時間値を減算することによって、予備待ち時間値を計算することと、
前記予備待ち時間値から前記トランスコード待ち時間値を減算することによって、最終待ち時間値を計算することと、
前記第1の部分に対応する前記トランスコードされた部分内に含有されるデータの量を決定することと、
前記データの量を前記最終待ち時間値で除算することによって、観察される帯域幅を決定することと、
前記観察される帯域幅に基づいて、前記第2のビットレートを選択することと
を行わせる、項目31に記載の非一過性コンピュータ可読媒体。
(項目34)
前記命令の前記少なくとも1つの制御回路による実行はさらに、前記少なくとも1つの制御回路に、前記トランスコードされた部分を前記クライアントデバイスに伝送することに先立って、チャンクバッファ内にトランスコードされた部分を記憶させ、
前記カウント値は、前記チャンクバッファ内に記憶される前記メディアアセットのトランスコードされた部分の数を示す、項目31に記載の非一過性コンピュータ可読媒体。
(項目35)
前記複数の部分のサブセットは、前記メディアアセットの完全なセグメントを構成し、前記カウント値に基づいて、前記第2の要求の伝送に関する時間を決定するための前記命令の前記少なくとも1つの制御回路による実行はさらに、前記少なくとも1つの制御回路に、
前記カウント値によって表されるデータの量を決定することと、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回るかどうかを決定することと
を行わせる、項目31に記載の非一過性コンピュータ可読媒体。
(項目36)
前記命令の前記少なくとも1つの制御回路による実行はさらに、前記少なくとも1つの制御回路に、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を下回ると決定することに応答して、前記バッファ深度閾値を第1の値に設定することと、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を上回ると決定することに応答して、前記バッファ深度閾値を、前記第1の値を上回る第2の値に設定することと
を行わせる、項目35に記載の非一過性コンピュータ可読媒体。
(項目37)
前記命令の前記少なくとも1つの制御回路による実行はさらに、前記少なくとも1つの制御回路に、前記再生バッファ内に記憶されるトランスコードされた部分の数をバッファ深度閾値と比較させる、項目36に記載の非一過性コンピュータ可読媒体。
(項目38)
前記命令の前記少なくとも1つの制御回路による実行はさらに、前記少なくとも1つの制御回路に、
前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を満たすと決定することに応答して、
現在再生されている部分の再生が終了するであろう時間を識別することと、
前記識別された時間に第3の部分に関する第3の要求を伝送することと
を行わせる、項目37に記載の非一過性コンピュータ可読媒体。
(項目39)
前記命令の前記少なくとも1つの制御回路による実行はさらに、前記少なくとも1つの制御回路に、前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を下回ると決定することに応答して、前記第3の要求を直ちに伝送させる、項目38に記載の非一過性コンピュータ可読媒体。
(項目40)
前記命令の前記少なくとも1つの制御回路による実行はさらに、前記少なくとも1つの制御回路に、
前記再生バッファ内に受信されたトランスコードされた部分を記憶することと、
前記クライアントデバイスにおいて、前記トランスコードされた部分を再生することと、
前記トランスコードされた部分の再生後、前記再生バッファから前記トランスコードされた部分を除去することと、
前記再生バッファ内に記憶される前記トランスコードされた部分の数を前記バッファ深度閾値と比較することと、
前記再生バッファ内に記憶される前記部分の数が、前記バッファ深度閾値を満たすまで、付加的部分を要求し続けることと
を行わせる、項目39に記載の非一過性コンピュータ可読媒体。
(項目41)
メディアアセットをストリーミングするための方法であって、前記方法は、
制御回路を使用して、メディアコンテンツソースから前記メディアアセットを受信することと、
前記制御回路を使用して、前記メディアアセットを複数の部分に分割することと、
前記制御回路を使用して、クライアントデバイスから、前記複数の部分の第1の部分が第1のビットレートにおいてトランスコードされる第1の要求を受信することと、
前記第1の要求を受信することに応答して、
前記制御回路を使用して、前記要求された第1のビットレートにおいて前記複数の部分をトランスコードし、複数の対応するトランスコードされた部分を発生させることと、
前記制御回路を使用して、1)トランスコード待ち時間値および2)前記第1の要求が受信された時間における前記メディアアセットの利用可能な事前トランスコードされた部分の数を示すカウント値を備えるように、前記第1の部分に対応する前記複数のトランスコードされた部分のうちのトランスコードされた部分のヘッダを更新することと、
制御回路を使用して、前記複数の部分の第1の部分に対応する前記トランスコードされた部分を前記クライアントデバイスに伝送することと、
制御回路を使用して、前記クライアントデバイスから、前記複数の部分の第2の部分が第2のビットレートにおいてトランスコードされる第2の要求を受信することと
を含み、
前記第2のビットレートは、前記第1の部分に対応する前記トランスコードされた部分のヘッダ内に含まれる前記トランスコード待ち時間値に基づいて決定され、
前記第2の要求は、前記第1の部分に対応する前記トランスコードされた部分のヘッダ内に含まれる前記カウント値に基づいて決定される時間に伝送される、方法。
(項目42)
前記トランスコード待ち時間値は、
制御回路を使用して、前記第1の要求が受信された時間を表す第1の時間値を決定することと、
制御回路を使用して、前記第1のビットレートにおいてトランスコードすることが開始された時間を表す第2の時間値を決定することと、
制御回路を使用して、前記第2の時間値から前記第1の時間値を減算することと
によって計算される、項目41に記載の方法。
(項目43)
前記トランスコード待ち時間値に基づいて、前記第2のビットレートを決定することは、
制御回路を使用して、前記第1の要求が前記クライアントデバイスによって伝送された時間を表す第1の時間値を決定することと、
制御回路を使用して、前記第1の部分に対応する前記トランスコードされた部分が前記クライアントデバイスによって受信された時間を表す第2の時間値を決定することと、
制御回路を使用して、前記第2の時間値から前記第1の時間値を減算することによって、予備待ち時間値を計算することと、
制御回路を使用して、前記予備待ち時間値から前記トランスコード待ち時間値を減算することによって、最終待ち時間値を計算することと、
制御回路を使用して、前記第1の部分に対応する前記トランスコードされた部分内に含有されるデータの量を決定することと、
制御回路を使用して、前記データの量を前記最終待ち時間値で除算することによって、観察される帯域幅を決定することと、
制御回路を使用して、前記観察される帯域幅に基づいて、前記第2のビットレートを選択することと
を含む、項目41-42のいずれかに記載の方法。
(項目44)
制御回路を使用して、前記トランスコードされた部分を前記クライアントデバイスに伝送することに先立って、チャンクバッファ内にトランスコードされた部分を記憶することをさらに含み、
前記カウント値は、前記チャンクバッファ内に記憶される前記メディアアセットのトランスコードされた部分の数を示す、項目41-43のいずれかに記載の方法。
(項目45)
前記複数の部分のサブセットは、前記メディアアセットの完全なセグメントを構成し、前記カウント値に基づいて、前記第2の要求の伝送に関する時間を決定することは、
制御回路を使用して、前記カウント値によって表されるデータの量を決定することと、
制御回路を使用して、前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回るかどうかを決定することと
を含む、項目41-44のいずれかに記載の方法。
(項目46)
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を下回ると決定することに応答して、制御回路を使用して、前記バッファ深度閾値を第1の値に設定することと、
前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を上回ると決定することに応答して、制御回路を使用して、前記バッファ深度閾値を、前記第1の値を上回る第2の値に設定することと
をさらに含む、項目45に記載の方法。
(項目47)
制御回路を使用して、前記再生バッファ内に記憶されるトランスコードされた部分の数をバッファ深度閾値と比較することをさらに含む、項目46に記載の方法。
(項目48)
前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を満たすと決定することに応答して、
制御回路を使用して、現在再生されている部分の再生が終了するであろう時間を識別することと、
制御回路を使用して、前記識別された時間に第3の部分に関する第3の要求を伝送することと
をさらに含む、項目47に記載の方法。
(項目49)
前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を下回ると決定することに応答して、制御回路を使用して、前記第3の要求を直ちに伝送することをさらに含む、項目48に記載の方法。
(項目50)
制御回路を使用して、前記再生バッファ内に受信されたトランスコードされた部分を記憶することと、
制御回路を使用して、前記クライアントデバイスにおいて、前記トランスコードされた部分を再生することと、
前記トランスコードされた部分の再生後、制御回路を使用して、前記再生バッファから前記トランスコードされた部分を除去することと、
制御回路を使用して、前記再生バッファ内に記憶される前記トランスコードされた部分の数を前記バッファ深度閾値と比較することと、
制御回路を使用して、前記再生バッファ内に記憶される前記部分の数が、前記バッファ深度閾値を満たすまで、付加的部分を要求し続けることと
をさらに含む、項目49に記載の方法。
本開示の上記および他の目的および利点は、同様の参照文字が全体を通して同様の部分を指す、付随の図面と併せて検討される、以下の詳細な説明の考慮に応じて明白となるであろう。
図1は、本開示のいくつかの実施形態による、サーバデバイスとクライアントデバイスとの間のデータの伝送を表す、ブロック図である。
図2は、本開示のいくつかの実施形態による、メディアアセットをトランスコードするためのプロセスを表す、フローチャートである。
図3は、本開示のいくつかの実施形態による、複数のセグメントの要求、読出、および再生タイミングを表す、略図である。
図4は、本開示のいくつかの実施形態による、チャンクバッファ内および再生バッファ内でのトランスコードされたメディアデータの記憶を表す、ブロック図である。
図5は、本開示のいくつかの実施形態による、独立型デバイスの汎用実施形態を示す。
図6は、本開示のいくつかの実施形態による、ユーザデバイスの具体的実装を示す。
図7は、本開示のいくつかの実施形態による、メディアアセットをトランスコードし、トランスコードされたメディアセグメントを伝送するためのプロセスを表す、フローチャートである。
図8は、本開示のいくつかの実施形態による、トランスコード待ち時間値を決定するためのプロセスを表す、フローチャートである。
図9は、本開示のいくつかの実施形態による、メディアアセットのセグメントをトランスコードする第2のビットレートを選択するためのプロセスを表す、フローチャートである。
図10は、本開示のいくつかの実施形態による、サーバデバイスからセグメントを要求するためのプロセスを表す、フローチャートである。
ネットワーク自体の待ち時間、およびトランスコーダによって導入される任意の付加的待ち時間を考慮する、メディアアセットのリアルタイム適応ビットレートトランスコーディングおよび再生のためのネットワークを経由するクライアントデバイスへのトランスコードされたメディアの伝送のためのシステムおよび方法が、本明細書に説明される。図1は、本開示のいくつかの実施形態による、サーバデバイスとクライアントデバイスとの間のデータの伝送を表す、ブロック図である。メディアコンテンツソースまたはユーザ機器デバイス(例えば、セットトップボックス)であり得る、サーバデバイス102は、メディアアセットを受信してもよい。ユーザ機器デバイス(例えば、セットトップボックス)またはユーザのモバイルデバイスであり得る、クライアントデバイス104は、メディアアセットの第1の部分に関する要求106を伝送してもよい。サーバデバイス102は、第1の要求106に応答して、第1の部分108を伝送してもよい。第1の部分の伝送の一部として、サーバデバイス102はまた、トランスコード待ち時間値108およびカウント値110を伝送してもよい。クライアントデバイス104の制御回路114は、トランスコード待ち時間値110およびカウント値112を処理し、第2の部分を要求する第2のビットレートおよび/または第2の要求を伝送する時間を決定してもよい。決定に基づいて、クライアントデバイス104は、第2の部分に関する第2の要求116をサーバデバイス102に伝送してもよい。
本明細書に使用されるように、「部分」は、メディアアセットの「セグメント」または「チャンク」、または全体としてのメディアアセットのものよりも少ないデータを表す、含有する、または備える、メディアアセットの任意の他の部分であってもよい。「セグメント」は、クライアントデバイス上での出力のための数秒のメディアコンテンツを構成してもよく、クライアントデバイス104によって再生され得るメディアの最小単位であってもよい。例えば、あるセグメントは、メディアアセットの5秒部分を表す、5秒のオーディオおよびビデオデータを備えてもよい。「チャンク」は、要求されたビットレートにおける完全なセグメントのもの未満のデータの量を備えてもよい。あるセグメントは、HTTPチャンク化転送エンコーディングまたは任意の他の好適なストリーミングデータ転送プロトコルを使用して、伝送のために複数のチャンクに分割されてもよい。
サーバデバイス102およびクライアントデバイス104は、下記に説明されるように、通信ネットワークを介して接続されてもよい。サーバデバイス102およびクライアントデバイス104はそれぞれ、本明細書に説明されるステップ、アクション、および/またはプロセスのうちのいずれかを実施するための制御回路を備えてもよい。サーバデバイス102はさらに、制御回路の一部であり得る、または別個のモジュールであり得る、トランスコーディング回路を含んでもよい。トランスコーディング回路は、ハードウェア、ファームウェア、またはソフトウェアにおいて実装されてもよい。クライアントデバイス104はさらに、トランスコードされたメディアの再生のためのディスプレイおよびスピーカモジュールを含んでもよい。
図2は、本開示のいくつかの実施形態による、メディアアセットをトランスコードするためのプロセスを表す、略図である。メディアガイドアプリケーションが、メディアアセットを複数のセグメントに分割してもよい。例えば、メディアアセットは、未加工メディアストリームとして受信されてもよい。メディアガイドアプリケーションは、フレームタイプ(例えば、Iフレーム)または再生持続時間(例えば、5秒のメディア再生時間を備えるデータ)に基づき得る、境界点においてメディアアセットを分割してもよい。代替として、メディアアセットは、MPEG-2またはMPEG-4等のセグメント化形式において受信されてもよい。メディアガイドアプリケーションは、特定のサイズ(すなわち、「チャンク」)または持続時間(すなわち、「セグメント」)のセグメントを発生させるために、そのようなセグメントを組み合わせる、またはさらに分割してもよい。
メディアコンテンツソースまたはユーザ機器デバイスであり得る、サーバデバイス(例えば、サーバデバイス102)は、クライアントデバイス(例えば、クライアントデバイス104)から、メディアアセットのセグメントが第1のビットレートにおいてストリーミングされる要求202を受信してもよい。サーバデバイスは、メディア受信モジュールと、トランスコーディングモジュールと、クライアントデバイスへの伝送に先立って、メディアアセットのトランスコードされた部分が記憶される、チャンクバッファとを備えてもよい。いくつかの実施形態では、サーバデバイスは、クライアントデバイスへの伝送に先立って、チャンクバッファ内にトランスコードされたセグメントを記憶し得る一方、他の実施形態では、サーバデバイスは、クライアントデバイスへの伝送に先立って、チャンクバッファ内にトランスコードされたセグメントを備えるトランスコードされたデータのチャンクを記憶し得る。クライアントデバイスは、メディア受信モジュールと、プレーヤモジュールと、再生に先立って、サーバデバイスから受信されたメディアアセットのトランスコードされた部分が記憶される、再生バッファとを備えてもよい。いくつかの実施形態では、クライアントデバイスは、メディアアセットのトランスコードされたセグメントを受信し、再生バッファ内に記憶し得る一方、他の実施形態では、クライアントデバイスは、トランスコードされたセグメントを備えるトランスコードされたデータのチャンクを受信し、再生バッファ内に記憶し得る。初期要求は、ユーザが可能な限りすぐにメディアアセットを消費し始めることを可能にするために、可能な限り最も低いビットレートに関するものであってもよい。サーバデバイスは、最も低いビットレートにおいて第1の部分をトランスコードし始めてもよい204。
メディアガイドアプリケーションは、応答のネットワーク帯域幅を計算するために使用されるトランスコード待ち時間値および部分202に関する要求が受信された時間におけるメディアアセットの利用可能な事前トランスコードされた部分(例えば、バイト、または、データ、セグメント、またはチャンクの他の単位)の数を示すカウント値を含むように、トランスコードされた第1の部分のヘッダを更新してもよい206。メディアガイドアプリケーションは、次いで、その部分をクライアントデバイスに伝送してもよい208。メディアガイドアプリケーションは、クライアントデバイスにおいて、測定された応答時間(すなわち、第1の部分に関する要求が送信されることと第1の部分に対応するトランスコードされた部分が受信されることとの間の時間周期)からトランスコード待ち時間値を減算することによって、トランスコード待ち時間値に基づいて、第2の部分をトランスコードする第2のビットレートを計算し210、調節された応答時間に基づいて、ネットワーク帯域幅を測定してもよい。いくつかの実施形態では、トランスコードされた部分は、メディアアセットの単一の部分として受信され得る一方、他の実施形態では、トランスコードされた部分は、トランスコードされたメディアデータの複数のチャンクとして受信され得る。トランスコード待ち時間値は、第1のチャンクのヘッダ内に含まれてもよい、または要求されたセグメントの各チャンクのヘッダ内に含まれてもよい。メディアガイドアプリケーションはまた、第1の部分に関する第1の要求が受信された時間におけるメディアアセットの利用可能な事前トランスコードされたバイトまたは部分の数を示すカウント値に基づいて、第2の部分に関する第2の要求が送信されるべき時間を計算してもよい212。メディアガイドアプリケーションは、測定されたネットワーク帯域幅に基づいて、第2の部分が第2のビットレートにおいてトランスコードされる第2の要求を伝送してもよい214。カウント値が、ある部分内のバイトまたはチャンクの数を下回るとき、クライアントデバイスは、これが複数の部分の第2の部分を求める時間を遅延させる(例えば、クライアントデバイスは、現在再生されている部分が再生を終了されたときのみ新しい部分を要求するであろう)。例えば、クライアントデバイスは、そのローカルバッファ内の1つの部分のみを要求し得る。カウント値が、ある部分内のバイトまたはチャンクの数を上回るとき、クライアントデバイスは、プレーヤデバイスのローカルバッファ内で要求される部分の数を増加させ得る。例えば、新しい部分は、ローカルバッファが、充填されるまで、直ちに要求される。プロセスは、次いで、第2の部分に関して繰り返され、サーバデバイスは、第2のビットレートにおいて第2の部分をトランスコードし始め216、トランスコード待ち時間値およびカウント値を含むように、第2の部分のヘッダを更新し218、第2の部分(または第2の部分を構成する複数のチャンク)をクライアントデバイスに伝送する220。
図3は、本開示のいくつかの実施形態による、複数の部分の要求、読出、および再生タイミングを表す、略図である。図3に図示されるように、「要求」は、サーバデバイスからのトランスコードされた部分に関する要求の伝送を表す。例えば、要求306-1は、第1のビットレートにおける第1のトランスコードされた部分に関する要求である。「フェッチ」は、クライアントデバイスへの要求された部分のトランスコーディングおよび伝送を表す。例えば、304-1は、第1の部分を第1のビットレートにおいてクライアントデバイスにトランスコードおよび伝送するために要求される時間を表す。「再生」は、部分の再生を表す。例えば、302-1は、第1の部分の再生を表す。
時間308において、メディアガイドアプリケーションは、サーバデバイス(例えば、サーバデバイス102)において、クライアントデバイスから、複数の部分の第1の部分が第1のビットレートにおいてトランスコードされる要求306-1を受信してもよい。例えば、クライアントデバイスは、400kbpsのビットレートにおけるメディアアセットの第1の部分に関する要求をサーバデバイスに伝送してもよい。クライアントデバイス(例えば、クライアントデバイス104)は、受信された部分が再生のために記憶される、再生バッファを有してもよい。クライアントデバイスはまた、所与の時間に再生バッファ内に記憶されるべき部分の最大数を表す、バッファ深度閾値を有してもよい。図3の実施例では、バッファ深度閾値は、3つの部分に設定されてもよい。したがって、第1の部分に関する要求306-1を伝送した直後、クライアントデバイスは、第1のビットレートにおける付加的部分に関する要求306-2および306-3を伝送してもよい。これらの要求は、バッファ深度閾値が、3つの部分に設定され得るため、伝送され得、再生バッファは、現在空である(または3つよりも少ない部分を有する)。要求を受信することに応答して、時間310において、メディアガイドアプリケーションは、サーバデバイスにおいて、各部分をクライアントデバイスに伝送してもよい(304-1、304-2、304-3)。要求された部分が、まだトランスコードされていない場合、メディアガイドアプリケーションは、サーバデバイスにおいて、要求された部分を表すデータをトランスコードしてもよい。
いくつかの実施形態では、メディアガイドアプリケーションは、第1の部分をトランスコードすることと関連付けられるトランスコード待ち時間値および第1の要求が受信された時間におけるメディアアセットの利用可能な事前トランスコードされた部分の数を示すカウント値を備えるように、第1の部分に対応する複数のトランスコードされた部分のあるトランスコードされた部分のヘッダを更新してもよい。例えば、メディアガイドアプリケーションが、第1の要求の受信からトランスコーダの開始までの時間を100ミリ秒であると測定した場合、トランスコードされた部分のヘッダのトランスコード待ち時間値フィールドは、100に設定されてもよい。加えて、第1の部分を構成するバイトを除いて、1,024バイトのメディアデータが、要求されたビットレートにおいてトランスコードされた場合、トランスコードされた部分のヘッダのカウント値フィールドは、メディアガイドアプリケーションが、バイト単位で部分サイズを測定するように構成される場合、1,024の値に設定されてもよい、または、メディアガイドアプリケーションが、キロバイト単位で部分サイズを測定するように構成される場合、1に設定されてもよい。メディアガイドアプリケーションは、次いで、トランスコードされた部分をクライアントデバイスに伝送してもよい。クライアントデバイスは、時間312において、それらが受信されるとすぐに第1のセグメントを備える部分または複数の部分を再生し始め(302-1)、先行する部分が終了するとすぐに各後続部分を再生してもよい(302-2、302-3、302-4)。
メディアガイドアプリケーションは、クライアントデバイスから、複数の部分の第2の部分が第2のビットレートにおいてトランスコードされる第2の要求を受信してもよい。クライアントデバイス上で起動する、メディアガイドアプリケーションは、第1の部分に対応する少なくとも1つのトランスコードされた部分のヘッダ内に示されるトランスコード待ち時間値に基づいて、第2のビットレートを決定してもよい。例えば、メディアガイドアプリケーションは、クライアントデバイスとサーバデバイスとの間の接続によってサポートされ得る最大ビットレートを計算するとき、トランスコード待ち時間を考慮してもよい。例えば、最初の3つの部分(304-1、304-2、304-3)を受信した後、時間314において、メディアガイドアプリケーションは、ネットワーク帯域幅がより高いビットレートをサポートし得ると決定してもよく、続けて、第2のより高いビットレートにおいて部分を要求してもよい。メディアガイドアプリケーションはまた、バッファ深度目標が満たされていると決定してもよい。メディアガイドアプリケーションは、次いで、現在再生されている部分が終了するであろうときを決定し、その時間に新しい部分を要求してもよい。例えば、部分302-2が終了した後、時間316において、メディアガイドアプリケーションは、第4の部分を要求するサーバデバイスに要求306-4を伝送してもよい。
メディアガイドアプリケーションは、第1の部分に対応する少なくとも1つのトランスコードされた部分のヘッダ内に含まれるカウント値に基づいて、サーバデバイスへのクライアントデバイスによる第2の要求の伝送に関する時間を決定してもよい。例えば、メディアガイドアプリケーションは、カウント値を使用し、要求されたビットレートにおいて完全なセグメントを構成するために十分なメディアデータが、トランスコードされたかどうかを決定してもよく、カウント値が、完全なセグメントを上回る、またはそれに等しいデータを示す場合のみ、ある部分を要求してもよい。
いくつかの実施形態では、サーバ上で起動する、メディアガイドアプリケーションは、第1の要求がサーバデバイスによって受信された時間と要求されたビットレートにおけるトランスコードされたメディアの第1のバイトが生成された時間との間の時間量を決定することによって、トランスコード待ち時間値を計算してもよい。
いくつかの実施形態では、クライアントデバイス上で起動する、メディアガイドアプリケーションは、予備待ち時間値に到達するように、第1の要求がクライアントデバイスによって伝送された時間と第1の部分に対応する第1のトランスコードされた部分がクライアントデバイスによって受信された時間との間の時間量を決定することによって、トランスコード待ち時間値に基づいて、第2のビットレートを決定してもよい。メディアガイドアプリケーションは、最終待ち時間値に到達するように、予備待ち時間値からトランスコード待ち時間値を減算してもよい。メディアガイドアプリケーションは、第1の部分に対応するトランスコードされた部分内に含有されるデータの量を最終待ち時間値で除算することによって、観察される帯域幅を決定してもよい。メディアガイドアプリケーションは、観察される帯域幅に基づいて、第2のビットレートを選択してもよい。例えば、メディアガイドアプリケーションのトランスコーダモジュールは、いくつかのプリセット出力ビットレートレベルを有してもよい。メディアガイドアプリケーションは、観察される帯域幅よりも低い最も近いビットレートレベルを選択してもよい。
いくつかの実施形態では、メディアガイドアプリケーションは、トランスコードされた部分をクライアントデバイス(例えば、クライアントデバイス104)に伝送するステップに先立って、サーバデバイス(例えば、サーバデバイス102)におけるチャンクバッファ内にトランスコードされた部分を記憶してもよい。図4は、本開示のいくつかの実施形態による、チャンクバッファ402内および再生バッファ408内でのトランスコードされたメディアデータの記憶を表す、ブロック図である。例えば、メディアガイドアプリケーションは、メディアアセットのセグメントが、トランスコードされる際、チャンクバッファ402内にトランスコードされたデータの部分404-1、404-2、404-3、および404-4を記憶してもよい。カウント値は、チャンクバッファ402内に記憶されるメディアアセットのトランスコードされた部分(例えば、バイトまたはデータの他の単位)の数を示す。図4の実施例では、カウント値は、4である。完全なセグメントを構成するトランスコードされた部分は、クライアントデバイスに伝送され(406)、再生バッファ408内に記憶されてもよい。
いくつかの実施形態では、メディアガイドアプリケーションは、カウント値によって表されるデータの量を決定し、カウント値によって表されるデータの量が、第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回るかどうかを決定することによって、カウント値に基づいて、第2の要求の伝送に関する時間を決定してもよい。例えば、完全なトランスコードされたセグメントは、400キロバイトであってもよい。カウント値が、500キロバイトのデータがチャンクバッファ内に記憶されていると示す場合、メディアガイドアプリケーションは、第2の要求を直ちに伝送してもよい。例えば、部分404-1、404-2、および404-3は、完全なトランスコードされたセグメントを構成してもよい。クライアントデバイスが、カウント値が完全なセグメントを構成するものよりも多くのデータを示すと決定するとき、クライアントデバイスは、次のセグメントを直ちに要求してもよく、サーバデバイスは、部分404-1、404-2、および404-3をクライアントデバイスに単一のセグメントとして伝送してもよい(406)。カウント値が、300キロバイトのデータがチャンクバッファ内に記憶されていると示す場合、メディアガイドアプリケーションは、第2の要求を伝送する前に、現在再生されているセグメントの再生が、完了するまで待機してもよい。
いくつかの実施形態では、カウント値によって表されるデータの量が、第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を下回ると決定することに応答して、メディアガイドアプリケーションは、バッファ深度閾値412を第1の値に設定してもよい。例えば、メディアガイドアプリケーションは、バッファ深度閾値を1等の最小数に設定してもよい。カウント値によって表されるデータの量が、第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回ると決定することに応答して、メディアガイドアプリケーションは、バッファ深度閾値を、第1の値を上回る第2の値に設定してもよい。例えば、メディアガイドアプリケーションは、1を以前のバッファ深度閾値に追加してもよい。バッファ深度閾値を通して新しい部分が要求される速度を変動させることによって、再生プロセスを失速させる可能性は、低減される一方、完全ネットワーク帯域幅容量に到達するであろう可能性を増加させる。例えば、過剰に高いビットレートが、選択される場合、過剰に多い部分が、要求される場合、または両方の場合、クライアントデバイスは、再生バッファ内にすでにある部分の再生の終了より前に部分を受信しないであろう。これは、失速シナリオをもたらし得、クライアントデバイスは、メディアアセットの再生を継続するために、トランスコードされたデータが利用可能になるまで待機しなければならない。可変バッファ深度は、クライアントデバイスが、再生のために必要とされるとき、またはサーバが、完全な事前トランスコードされたセグメントを有するときのみ、新しい部分を要求することを確実にすることによって、これらのシナリオを回避することに役立つ。
いくつかの実施形態では、メディアガイドアプリケーションは、再生バッファ408内に記憶されるトランスコードされた部分の数をバッファ深度閾値412と比較してもよい。図4の実施例では、バッファ深度閾値412は、4である一方、3つの部分410-1、410-2、および410-3のみが、再生バッファ408内に記憶される。再生バッファ内に記憶されるトランスコードされた部分の数が、バッファ深度閾値を満たすと決定することに応答して、メディアガイドアプリケーションは、現在再生されている部分の再生が終了するであろう時間を識別してもよく、クライアントデバイスから、識別された時間に第3の部分に関する第3の要求を伝送してもよい。図4の実施例におけるように、再生バッファ内に記憶されるトランスコードされた部分の数が、バッファ深度閾値を下回ると決定することに応答して、メディアガイドアプリケーションは、クライアントデバイスから第3の要求を直ちに伝送してもよい。
いくつかの実施形態では、メディアガイドアプリケーションは、クライアントデバイスの再生バッファ内に受信されたトランスコードされた部分を記憶してもよい。メディアガイドアプリケーションは、クライアントデバイスにおいて、トランスコードされた部分を再生してもよい。トランスコードされた部分の再生後、メディアガイドアプリケーションは、再生バッファからトランスコードされた部分を除去してもよい。例えば、メディアガイドアプリケーションは、トランスコードされた部分を削除してもよい。メディアガイドアプリケーションは、再生バッファ内に記憶されるトランスコードされた部分の数をバッファ深度閾値と比較し、再生バッファ内に記憶される部分の数が、バッファ深度閾値を満たすまで、付加的部分を要求し続けてもよい。
いくつかの実施形態では、サーバデバイスは、ユーザ機器デバイス(例えば、セットトップボックス)であってもよく、クライアントデバイスは、ユーザのモバイルデバイスであってもよい。例えば、ユーザが、自身のスマートフォン上でケーブルテレビチャネルで放送されているメディアアセットを視聴することを所望し得る。メディアアセットは、メディアコンテンツソースからユーザ機器デバイスによって受信されるライブ放送であってもよく、単一のビットレートにおいて受信されてもよい。例えば、メディアアセットは、ワールドカップ等のライブスポーツゲームであってもよく、1秒あたり2メガビットのビットレートにおいて放送されてもよい。代替として、メディアアセットは、ビデオオンデマンドサービスまたはインターネットストリーミングサービス(例えば、Netflix(R)、YouTube(登録商標)、Amazon(R)等)等のオーバーザトップサービスから受信されてもよい。
コンテンツ配信システムにおけるユーザは、ユーザが、デバイスに接続し、コンテンツの選択を効率的にナビゲートし、実行可能なコマンドを与えることを可能にするインターフェースを通したメディアガイドの形態を所望している。そのようなガイドを提供するアプリケーションは、本明細書では、双方向メディアガイドアプリケーション、または時として、メディアガイドアプリケーションまたはガイドアプリケーションと称される。
双方向メディアガイドアプリケーションは、それらがガイドを提供するコンテンツに応じて、種々の形態をとってもよい。例えば、メディアガイドアプリケーションは、ユーザ機器デバイスの背景において起動し、ユーザのアクティビティを監視してもよい。ユーザ機器デバイスにおいてユーザコマンド(例えば、メディアガイドアプリケーションおよび/または任意の代替アプリケーションを対象とする)を受信することに応答して、メディアガイドアプリケーションは、メディアガイドアプリケーションが実装するように構成される種々のプロセスを実行してもよい。メディアガイドアプリケーションはまた、遠隔サーバ上に記憶されてもよく、無線/有線接続の使用を通してリアルタイムでいくつかのユーザ機器デバイスを監視してもよい。メディアガイドアプリケーションは、個別のユーザ機器デバイスにおいて受信されるユーザコマンドに応じて、個別のユーザ機器デバイスのうちのいずれかにおいてプロセスを実行してもよい。
双方向メディアガイドアプリケーションは、ユーザが、コンテンツ間をナビゲートし、それを特定および選択することを可能にする、グラフィカルユーザインターフェース画面を発生させてもよい。本明細書で参照されるように、用語「メディアアセット」および「コンテンツ」は、テレビ番組、および有料番組、オンデマンド番組(ビデオオンデマンド(VOD)システムにおけるような)、インターネットコンテンツ(例えば、ストリーミングコンテンツ、ダウンロード可能コンテンツ、ウェブキャスト等)、ビデオクリップ、オーディオ、コンテンツ情報、写真、回転画像、ドキュメント、再生一覧、ウェブサイト、記事、書籍、電子書籍、ブログ、チャットセッション、ソーシャルメディア、アプリケーション、ゲーム、および/または任意の他のメディアまたはマルチメディア、および/またはそれらの組み合わせ等の電子的に消費可能なユーザアセットを意味するように理解されるべきである。ガイドアプリケーションはまた、ユーザが、コンテンツ間をナビゲートし、それを特定することを可能にする。本明細書で参照されるように、用語「マルチメディア」は、上記に説明される少なくとも2つの異なるコンテンツ形態、例えば、テキスト、オーディオ、画像、ビデオ、または双方向コンテンツ形態を利用するコンテンツを意味するように理解されるべきである。コンテンツは、ユーザ機器デバイスによって、録画、再生、表示、またはアクセスされ得るが、また、ライブパーフォーマンスの一部であり得る。
本明細書に議論される実施形態のうちのいずれかを実施するためのメディアガイドアプリケーションおよび/または任意の命令は、コンピュータ可読媒体上にエンコードされてもよい。コンピュータ可読媒体は、データを記憶することが可能な任意の媒体を含む。コンピュータ可読媒体は、限定ではないが、電気または電磁信号の伝搬を含む、一過性であってもよい、または限定ではないが、ハードディスク、フロッピー(登録商標)ディスク、USBドライブ、DVD、CD、メディアカード、レジスタメモリ、プロセッサキャッシュ、ランダムアクセスメモリ(「RAM」)等の揮発性および不揮発性コンピュータメモリまたは記憶デバイスを含む、非一過性であってもよい。
インターネット、モバイルコンピューティング、および高速無線ネットワークの出現に伴って、ユーザは、従来的に使用しなかったユーザ機器デバイス上でメディアにアクセスするようになっている。本明細書で参照されるように、語句「ユーザ機器デバイス」、「ユーザ機器」、「ユーザデバイス」、「電子デバイス」、「電子機器」、「メディア機器デバイス」、または「メディアデバイス」は、テレビ、スマートTV、セットトップボックス、衛星テレビに対応するための統合型受信機デコーダ(IRD)、デジタル記憶デバイス、デジタルメディア受信機(DMR)、デジタルメディアアダプタ(DMA)、ストリーミングメディアデバイス、DVDプレーヤ、DVDレコーダ、接続型DVD、ローカルメディアサーバ、BLU-RAY(登録商標)プレーヤ、BLU-RAY(登録商標)レコーダ、パーソナルコンピュータ(PC)、ラップトップコンピュータ、タブレットコンピュータ、ウェブTVボックス、パーソナルコンピュータテレビ(PC/TV)、PCメディアサーバ、PCメディアセンター、ハンドヘルドコンピュータ、固定電話、携帯情報端末(PDA)、モバイル電話、ポータブルビデオプレーヤ、ポータブル音楽プレーヤ、ポータブルゲーム機、スマートフォン、または任意の他のテレビ機器、コンピューティング機器、または無線デバイス、および/またはそれらの組み合わせ等の上記に説明されるコンテンツにアクセスするための任意のデバイスを意味するように理解されるべきである。いくつかの実施形態では、ユーザ機器デバイスは、正面画面および裏面画面、複数の正面画面、または複数の角度付き画面を有してもよい。いくつかの実施形態では、ユーザ機器デバイスは、正面カメラおよび/または裏面カメラを有してもよい。これらのユーザ機器デバイス上で、ユーザは、テレビを通して利用可能な同一のコンテンツ間をナビゲートし、それを特定することが可能であり得る。その結果、メディアガイドは、これらのデバイス上でも同様に利用可能であり得る。提供されるガイドは、テレビのみを通して利用可能なコンテンツ、他のタイプのユーザ機器デバイスのうちの1つ以上のもののみを通して利用可能なコンテンツ、またはテレビおよび他のタイプのユーザ機器デバイスのうちの1つ以上のものの両方を通して利用可能なコンテンツのためのものであってもよい。メディアガイドアプリケーションは、ユーザ機器デバイス上で、オンラインアプリケーション(すなわち、ウェブサイト上で提供される)として、または独立型アプリケーションまたはクライアントとして提供されてもよい。メディアガイドアプリケーションを実装し得る、種々のデバイスおよびプラットフォームが、下記により詳細に説明される。
メディアガイドアプリケーションの機能のうちの1つは、メディアガイドデータをユーザに提供することである。本明細書で参照されるように、語句「メディアガイドデータ」または「ガイドデータ」は、コンテンツに関連する任意のデータまたはガイドアプリケーションを動作させる際に使用されるデータを意味するように理解されるべきである。例えば、ガイドデータは、番組情報、ガイドアプリケーション設定、ユーザ選好、ユーザプロファイル情報、メディア一覧、メディア関連情報(例えば、放送時間、放送チャネル、タイトル、内容、評価情報(例えば、ペアレンタルコントロール評価、批評家の評価等)、ジャンルまたはカテゴリ情報、俳優情報、放送会社またはプロバイダのロゴのロゴデータ等)、メディア形式(例えば、標準解像度、高解像度、3D等)、オンデマンド情報、ブログ、ウェブサイト、およびユーザが所望のコンテンツ選択間をナビゲートし、それを特定するために有用である、任意の他のタイプのガイドデータを含んでもよい。
メディアガイドアプリケーションは、ユーザの選好に基づいて個人化されてもよい。個人化されたメディアガイドアプリケーションは、ユーザが、メディアガイドアプリケーションを用いて個人化された「体験」を生成するように、表示および特徴をカスタマイズすることを可能にする。本個人化された体験は、ユーザがこれらのカスタマイズを入力することを可能にすることによって、および/または種々のユーザ選好を決定するようにメディアガイドアプリケーションがユーザアクティビティを監視することによって、生成されてもよい。ユーザは、ログインすることによって、または別様にガイドアプリケーションに対して自らを識別することによって、それらの個人化されたガイドアプリケーションにアクセスしてもよい。メディアガイドアプリケーションのカスタマイズは、ユーザプロファイルに従って行われてもよい。カスタマイズは、提示スキーム(例えば、表示の色スキーム、テキストのフォントサイズ等)、表示されるコンテンツ一覧の側面(例えば、HDTV番組のみまたは3D番組のみ、お気に入りチャネル選択に基づいたユーザ指定の放送チャネル、チャネルの表示の並び替え、推奨コンテンツ等)、所望の録画特徴(例えば、特定のユーザに対する録画または連続録画、録画品質等)、ペアレンタルコントロール設定、インターネットコンテンツのカスタマイズされた提示(例えば、ソーシャルメディアコンテンツ、電子メール、電子的に配信された記事等の提示)、および他の所望のカスタマイズを変動させるステップを含んでもよい。
メディアガイドアプリケーションは、ユーザが、ユーザプロファイル情報を提供することを可能にしてもよい、またはユーザプロファイル情報を自動的にコンパイルしてもよい。メディアガイドアプリケーションは、例えば、ユーザがアクセスするコンテンツ、および/またはユーザがガイドアプリケーションと行い得る他の相互作用を監視してもよい。加えて、メディアガイドアプリケーションは、特定のユーザに関連する他のユーザプロファイルの全てまたは一部を取得する(例えば、www.Tivo.com等のユーザがアクセスするインターネット上の他のウェブサイトから、ユーザがアクセスする他のメディアガイドアプリケーションから、ユーザがアクセスする他の双方向アプリケーションから、ユーザの別のユーザ機器デバイスから等)、および/またはメディアガイドアプリケーションがアクセスし得る他のソースから、ユーザについての情報を取得してもよい。結果として、ユーザは、ユーザの異なるユーザ機器デバイスを横断して、統一されたガイドアプリケーション体験を提供されることができる。付加的な個人化されたメディアガイドアプリケーション特徴は、2005年7月11日に出願された、Ellis et al.の米国特許出願公開第2005/0251827号、2007年1月16日に発行された、Boyer et al.の米国特許第7,165,098号、および2002年2月21日に出願された、Ellis et al.の米国特許出願公開第2002/0174430号(本明細書に参照することによってそれらの全体として本明細書に組み込まれる)により詳細に説明されている。
ユーザは、そのユーザ機器デバイスのうちの1つ以上のものから、コンテンツおよびメディアガイドアプリケーション(および上記および下記に説明されるその表示画面)にアクセスしてもよい。図5は、例証的ユーザ機器デバイス500の汎用実施形態を示す。ユーザ機器デバイスのより具体的な実装は、図6に関連して下記に議論される。ユーザ機器デバイス500は、入力/出力(以降では「I/O」)パス502を介して、コンテンツおよびデータを受信してもよい。I/Oパス502は、処理回路506および記憶装置508を含む制御回路504に、コンテンツ(例えば、放送番組、オンデマンド番組、インターネットコンテンツ、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を経由して利用可能なコンテンツ、および/または他のコンテンツ)およびデータを提供してもよい。制御回路504は、I/Oパス502を使用して、コマンド、要求、および他の好適なデータを送受信するために使用されてもよい。I/Oパス502は、制御回路504(具体的には、処理回路506)を1つ以上の通信パス(下記に説明される)に接続してもよい。I/O機能は、これらの通信パスのうちの1つ以上のものによって提供されてもよいが、図面が複雑になり過ぎることを回避するため、図5では単一のパスとして示されている。
制御回路504は、処理回路506等の任意の好適な処理回路に基づいてもよい。本明細書で参照されるように、処理回路は、1つ以上のマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、プログラマブル論理デバイス、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等に基づく回路を意味すると理解されるべきであり、マルチコアプロセッサ(例えば、デュアルコア、クアドコア、ヘクサコア、または任意の好適な数のコア)またはスーパーコンピュータを含んでもよい。いくつかの実施形態では、処理回路は、複数の別個のプロセッサまたは処理ユニット、例えば、複数の同一のタイプの処理ユニット(例えば、2つのIntel Core i7プロセッサ)または複数の異なるプロセッサ(例えば、Intel Core i5プロセッサおよびIntel Core i7プロセッサ)を横断して分散されてもよい。いくつかの実施形態では、制御回路504は、メモリ(すなわち、記憶装置508)内に記憶されたメディアガイドアプリケーションに対する命令を実行する。具体的には、制御回路504は、メディアガイドアプリケーションによって、上記および下記に議論される機能を果たすように命令されてもよい。例えば、メディアガイドアプリケーションは、制御回路504に、メディアガイド表示を生成するための命令を提供してもよい。いくつかの実装では、制御回路504によって実施される任意のアクションは、メディアガイドアプリケーションから受信される命令に基づいてもよい。
クライアントサーバベースの実施形態では、制御回路504は、ガイドアプリケーションサーバまたは他のネットワークまたはサーバと通信するために好適な通信回路を含んでもよい。上記に述べられる機能性を実施するための命令は、ガイドアプリケーションサーバ上に記憶されてもよい。通信回路は、ケーブルモデム、総合デジタル通信網(ISDN)モデム、デジタルサブスクライバ回線(DSL)モデム、電話モデム、イーサネット(登録商標)カード、または他の機器との通信用の無線モデム、または任意の他の好適な通信回路を含んでもよい。そのような通信は、インターネットまたは任意の他の好適な通信ネットワークまたはパスを伴ってもよい(図6と関連してより詳細に説明される)。加えて、通信回路は、ユーザ機器デバイスのピアツーピア通信、または相互から遠隔の場所にあるユーザ機器デバイスの通信を可能にする回路を含んでもよい(下記により詳細に説明される)。
メモリは、制御回路504の一部である、記憶装置408として提供される、電子記憶デバイスであってもよい。本明細書で参照されるように、語句「電子記憶デバイス」または「記憶デバイス」は、ランダムアクセスメモリ、読取専用メモリ、ハードドライブ、光学ドライブ、デジタルビデオディスク(DVD)レコーダ、コンパクトディスク(CD)レコーダ、BLU-RAY(登録商標)ディスク(BD)レコーダ、BLU-RAY(登録商標) 3Dディスクレコーダ、デジタルビデオレコーダ(DVR、または時として、パーソナルビデオレコーダまたはPVRと呼ばれる)、ソリッドステートデバイス、量子記憶デバイス、ゲームコンソール、ゲームメディア、または任意の他の好適な固定またはリムーバブル記憶デバイス、および/またはそれらの任意の組み合わせ等の電子データ、コンピュータソフトウェア、またはファームウェアを記憶するための任意のデバイスを意味すると理解されたい。記憶装置508は、本明細書に説明される種々のタイプのコンテンツ、および上記に説明されるメディアガイドデータを記憶するために使用されてもよい。不揮発性メモリもまた、(例えば、ブートアップルーチンおよび他の命令を起動するために)使用されてもよい。図6に関連して説明されるクラウドベースの記憶装置が、記憶装置508を補完するために使用される、または記憶装置508の代わりに使用されてもよい。
制御回路504は、1つ以上のアナログチューナ、1つ以上のMPEG-2デコーダ、または他のデジタルデコード回路、高解像度チューナ、または任意の他の好適な同調またはビデオ回路、またはそのような回路の組み合わせ等のビデオ生成回路および同調回路を含んでもよい。(例えば、記憶するために、無線、アナログ、またはデジタル信号をMPEG信号に変換するための)エンコード回路もまた、提供されてもよい。制御回路504はまた、コンテンツをユーザ機器500の好ましい出力形式に上方変換および下方変換するためのスケーリング回路を含んでもよい。回路504はまた、デジタル信号とアナログ信号との間で変換するためのデジタル/アナログ変換回路およびアナログ/デジタル変換回路を含んでもよい。同調およびエンコード回路は、コンテンツを受信して表示する、再生する、または録画するために、ユーザ機器デバイスによって使用されてもよい。同調およびエンコード回路はまた、ガイドデータを受信するために使用されてもよい。例えば、同調、ビデオ発生、エンコード、デコード、暗号化、解読、スケーリング、およびアナログ/デジタル回路を含む、本明細書に説明される回路は、1つ以上の汎用または特殊プロセッサ上で起動するソフトウェアを使用して実装されてもよい。複数のチューナが、同時同調機能(例えば、視聴および録画機能、ピクチャインピクチャ(PIP)機能、多重チューナ録画機能等)に対処するように提供されてもよい。記憶装置508が、ユーザ機器500とは別のデバイスとして提供される場合、同調およびエンコード回路(複数のチューナを含む)は、記憶装置508と関連付けられてもよい。
ユーザは、ユーザ入力インターフェース510を使用して、命令を制御回路404に送信してもよい。ユーザ入力インターフェース510は、リモートコントロール、マウス、トラックボール、キーパッド、キーボード、タッチスクリーン、タッチパッド、スタイラス入力、ジョイスティック、音声認識インターフェース、または他のユーザ入力インターフェース等の任意の好適なユーザインターフェースであってもよい。ディスプレイ512は、独立型デバイスとして提供される、またはユーザ機器デバイス500の他の要素と統合されてもよい。例えば、ディスプレイ512は、タッチスクリーンまたはタッチセンサ式ディスプレイであってもよい。そのような状況では、ユーザ入力インターフェース510は、ディスプレイ512と統合される、または組み合わせられてもよい。ディスプレイ512は、モニタ、テレビ、モバイルデバイス用液晶ディスプレイ(LCD)、非晶質シリコンディスプレイ、低温ポリシリコンディスプレイ、電子インクディスプレイ、電気泳動ディスプレイ、アクティブマトリクスディスプレイ、エレクトロウェッティングディスプレイ、電気流体ディスプレイ、ブラウン管ディスプレイ、発光ダイオードディスプレイ、エレクトロルミネセントディスプレイ、プラズマディスプレイパネル、高性能アドレッシングディスプレイ、薄膜トランジスタディスプレイ、有機発光ダイオードディスプレイ、表面伝導型電子放出素子ディスプレイ(SED)、レーザテレビ、カーボンナノチューブ、量子ドットディスプレイ、干渉変調器ディスプレイ、または視覚的画像を表示するための任意の他の好適な機器のうちの1つ以上のものであってもよい。いくつかの実施形態では、ディスプレイ512は、HDTV対応型であり得る。いくつかの実施形態では、ディスプレイ512は、3Dディスプレイであってもよく、双方向メディアガイドアプリケーションおよび任意の好適なコンテンツは、3Dで表示されてもよい。ビデオカードまたはグラフィックカードは、ディスプレイ512への出力を生成してもよい。ビデオカードは、3Dシーンおよび2Dグラフィックのレンダリング加速、MPEG-2/MPEG-4デコード、TV出力、または複数のモニタを接続する能力等の種々の機能を提供し得る。ビデオカードは、制御回路504に関連する上記に説明される任意の処理回路であってもよい。ビデオカードは、制御回路504と統合されてもよい。スピーカ514は、ユーザ機器デバイス500の他の要素と統合されたものとして提供されてもよい、または独立型ユニットであってもよい。ディスプレイ512上に表示されるビデオおよび他のコンテンツのオーディオコンポーネントは、スピーカ514を通して再生されてもよい。いくつかの実施形態では、オーディオは、スピーカ514を介して音声を処理および出力する、受信機(図示せず)に配布されてもよい。
ガイドアプリケーションは、任意の好適なアーキテクチャを使用して実装されてもよい。例えば、これは、ユーザ機器デバイス400上で完全に実装される、独立型アプリケーションであってもよい。そのようなアプローチでは、アプリケーションの命令は、ローカルで(例えば、記憶装置508内に)記憶され、アプリケーションによって使用するためのデータは、周期的にダウンロードされる(例えば、帯域外フィードから、インターネットリソースから、または別の好適なアプローチを使用して)。制御回路504は、記憶装置508からアプリケーションの命令を読み出し、本明細書に議論される表示のうちのいずれかを生成するための命令を処理してもよい。処理された命令に基づいて、制御回路504は、入力が入力インターフェース510から受信されるときに実施するアクションを決定してもよい。例えば、表示上のカーソルの上/下への移動は、入力インターフェース510が、上/下ボタンが選択されたことを示すとき、処理された命令によって示されてもよい。
いくつかの実施形態では、メディアガイドアプリケーションは、クライアントサーバベースのアプリケーションである。ユーザ機器デバイス500上に実装される、シックまたはシンクライアントによって使用するためのデータは、ユーザ機器デバイス500の遠隔にあるサーバに要求を発行することによって、オンデマンドで読み出される。クライアントサーバベースのガイドアプリケーションの一実施例では、制御回路504は、遠隔サーバによって提供されるウェブページを解釈する、ウェブブラウザを起動する。例えば、遠隔サーバは、記憶デバイス内にアプリケーションのための命令を記憶してもよい。遠隔サーバは、回路(例えば、制御回路504)を使用して、記憶された命令を処理し、上記および下記に議論される表示を生成してもよい。クライアントデバイスは、遠隔サーバによって発生される表示を受信してもよく、表示のコンテンツを機器デバイス500上にローカルで表示してもよい。このように、命令の処理が、サーバによって遠隔で実施される一方、結果として生じる表示は、機器デバイス500上にローカルで提供される。機器デバイス500は、入力インターフェース510を介して、ユーザからの入力を受信し、対応する表示を処理および生成するために、それらの入力を遠隔サーバに伝送してもよい。例えば、機器デバイス500は、上/下ボタンが入力インターフェース510を介して選択されたことを示す、通信を遠隔サーバに伝送してもよい。遠隔サーバは、その入力に従って命令を処理し、入力に対応するアプリケーションの表示を生成してもよい(例えば、カーソルを上/下に移動させる表示)。生成された表示は、次いで、ユーザへの提示のために、機器デバイス500に伝送される。
いくつかの実施形態では、メディアガイドアプリケーションは、インタープリタまたは仮想マシン(制御回路504によって起動される)によって、ダウンロードされ、解釈または別様に起動される。いくつかの実施形態では、ガイドアプリケーションは、ETVバイナリ交換形式(ETV Binary Interchange Format/EBIF)でエンコードされ、好適なフィードの一部として制御回路504によって受信され、制御回路504上で起動するユーザエージェントによって解釈されてもよい。例えば、ガイドアプリケーションは、EBIFアプリケーションであってもよい。いくつかの実施形態では、ガイドアプリケーションは、制御回路504によって実行されるローカル仮想マシンまたは他の好適なミドルウェアによって受信および起動される、一連のJAVA(登録商標)ベースのファイルによって定義されてもよい。そのような実施形態のうちのいくつか(例えば、MPEG-2または他のデジタルメディアエンコードスキームを採用するもの)では、ガイドアプリケーションは、例えば、番組のMPEGオーディオおよびビデオパケットを用いたMPEG-2オブジェクトカルーセルにおいてエンコードおよび伝送されてもよい。
図5のユーザ機器デバイス500は、ユーザテレビ機器602、ユーザコンピュータ機器604、無線ユーザ通信デバイス606、または非ポータブルゲーム機等のコンテンツにアクセスするために好適な任意の他のタイプのユーザ機器として、図6のシステム600内に実装されることができる。簡潔にするために、これらのデバイスは、本明細書では総称して、ユーザ機器またはユーザ機器デバイスと称され得、上記に説明されるユーザ機器デバイスに実質的に類似し得る。メディアガイドアプリケーションが実装され得る、ユーザ機器デバイスは、独立型デバイスとして機能してもよい、またはデバイスのネットワークの一部であってもよい。デバイスの種々のネットワーク構成が、実装されてもよく、下記により詳細に議論される。
図5と関連して上記に説明されるシステム特徴のうちの少なくともいくつかを利用する、ユーザ機器デバイスは、単に、ユーザテレビ機器602、ユーザコンピュータ機器604、または無線ユーザ通信デバイス606として分類されなくてもよい。例えば、ユーザテレビ機器602は、いくつかのユーザコンピュータ機器604のように、インターネットコンテンツへのアクセスを可能にするインターネット対応型であり得る一方、ユーザコンピュータ機器604は、いくつかのテレビ機器602のように、テレビ番組へのアクセスを可能にするチューナを含み得る。メディアガイドアプリケーションは、種々の異なるタイプのユーザ機器上で同一レイアウトを有してもよい、またはユーザ機器の表示能力に合わせられてもよい。例えば、ユーザコンピュータ機器604上では、ガイドアプリケーションは、ウェブブラウザによってアクセスされるウェブサイトとして提供されてもよい。別の実施例では、ガイドアプリケーションは、無線ユーザ通信デバイス606用に縮小されてもよい。
システム600では、典型的には、各タイプのユーザ機器デバイスが、1つを上回って存在するが、図面が複雑になり過ぎることを回避するように、それぞれ1つだけが、図6に示されている。加えて、各ユーザは、1つを上回るタイプのユーザ機器デバイスと、また、各タイプのユーザ機器デバイスのうちの1つを上回るものとを利用してもよい。
いくつかの実施形態では、ユーザ機器デバイス(例えば、ユーザテレビ機器602、ユーザコンピュータ機器604、無線ユーザ通信デバイス606)は、「第2の画面デバイス」と称されてもよい。例えば、第2の画面デバイスは、第1のユーザ機器デバイス上に提示されるコンテンツを補完してもよい。第2の画面デバイス上に提示されるコンテンツは、第1のデバイス上に提示されるコンテンツを補完する、任意の好適なコンテンツであってもよい。いくつかの実施形態では、第2の画面デバイスは、第1のデバイスの設定および表示選好を調節するためのインターフェースを提供する。いくつかの実施形態では、第2の画面デバイスは、他の第2の画面デバイスと相互作用する、またはソーシャルネットワークと相互作用するために構成される。第2の画面デバイスは、第1のデバイスと同一の部屋内に、第1のデバイスと異なる部屋であるが、同一の家または建物内に、または第1のデバイスと異なる建物内に位置することができる。
ユーザはまた、家庭内デバイスおよび遠隔デバイスにわたって一貫したメディアガイドアプリケーション設定を維持するように、種々の設定を設定してもよい。設定は、本明細書に説明されるもの、およびお気に入りのチャネルおよび番組、番組を推奨するためにガイドアプリケーションが利用する番組選好、表示選好、および他の望ましいガイド設定を含む。例えば、ユーザが、そのオフィスのパーソナルコンピュータ上で、例えば、ウェブサイトwww.Tivo.comの上で、あるチャネルをお気に入りとして設定した場合、同一のチャネルが、ユーザの家庭内デバイス(例えば、ユーザテレビ機器およびユーザコンピュータ機器)上で、および所望に応じて、ユーザのモバイルデバイス上でお気に入りとして表示されるであろう。したがって、同一または異なるタイプのユーザ機器デバイスであるかどうかにかかわらず、1つのユーザ機器デバイス上で行われる変更は、別のユーザ機器デバイス上のガイド体験を変更することができる。加えて、行われる変更は、ユーザによって入力される設定、およびガイドアプリケーションによって監視されるユーザアクティビティに基づいてもよい。
ユーザ機器デバイスは、通信ネットワーク614に結合されてもよい。すなわち、ユーザテレビ機器602、ユーザコンピュータ機器604、および無線ユーザ通信デバイス606は、それぞれ、通信経路608、610、および612を介して、通信ネットワーク614に結合される。通信ネットワーク614は、インターネット、携帯電話ネットワーク、モバイルボイスまたはデータネットワーク(例えば、4GまたはLTEネットワーク)、ケーブルネットワーク、公衆交換電話ネットワーク、または他のタイプの通信ネットワーク、または通信ネットワークの組み合わせを含む、1つ以上のネットワークであってもよい。パス608、610、および612は、別個または一緒に、衛星パス、光ファイバパス、ケーブルパス、インターネット通信をサポートするパス(例えば、IPTV)、フリースペース接続(例えば、放送または他の無線信号用)、または任意の他の好適な有線または無線通信経路、またはそのような経路の組み合わせ等の1つ以上の通信経路を含んでもよい。経路612は、図6に示される例示的実施形態では、無線パスであることを示すように破線で描かれ、パス608および610は、それらが有線パスであることを示すように実線として描かれている(しかし、これらのパスは、所望される場合、無線パスであってもよい)。ユーザ機器デバイスとの通信は、これらの通信パスのうちの1つ以上のものによって提供されてもよいが、図6では、図面が複雑になり過ぎることを回避するように、単一パスとして示される。
通信パスは、ユーザ機器デバイスの間には描かれていないが、これらのデバイスは、経路608、610、および612と関連して上記に説明されるもの、およびUSBケーブル、IEEE 1394ケーブル、無線パス(例えば、Bluetooth(登録商標)、赤外線、IEEE 802-11x等)等の他の短距離ポイントツーポイント通信パス、または有線または無線パスを介した他の短距離通信等の通信パスを介して、相互に直接通信してもよい。BLUETOOTH(登録商標)は、Bluetooth SIG, INC.によって所有される認証マークである。ユーザ機器デバイスはまた、通信ネットワーク614を介した間接パスを通して、相互に直接通信してもよい。
システム600は、それぞれ、通信パス620および622を介して、通信ネットワーク614に結合される、コンテンツソース616およびメディアガイドデータソース618を含む。パス620および622は、パス608、610、および612と関連して上記に説明される通信パスのうちのいずれかを含んでもよい。コンテンツソース616およびメディアガイドデータソース618との通信は、1つ以上の通信パスを経由して交信されてもよいが、図6では、図面が複雑になり過ぎることを回避するように、単一パスとして示される。加えて、コンテンツソース616およびメディアガイドデータソース618のそれぞれが、1つを上回って存在し得るが、図6では、図面が複雑になり過ぎることを回避するように、それぞれ1つだけが、示される。(異なるタイプのこれらのソースのそれぞれが、下記に議論される。)所望される場合、コンテンツソース616およびメディアガイドデータソース618は、1つのソースデバイスとして統合されてもよい。ソース616および618と、ユーザ機器デバイス602、604、および606との間の通信は、通信ネットワーク614を通したものとして示されるが、いくつかの実施形態では、ソース616および618は、パス608、610、および612と関連して上記に説明されるもの等の通信パス(図示せず)を介して、ユーザ機器デバイス602、604、および606と直接通信してもよい。
コンテンツソース616は、テレビ配信施設、ケーブルシステムヘッドエンド、衛星配信施設、番組ソース(例えば、NBC、ABC、HBO等のテレビ放送会社)、中間配信施設および/またはサーバ、インターネットプロバイダ、オンデマンドメディアサーバ、および他のコンテンツプロバイダを含む、1つ以上のタイプのコンテンツ配信機器を含んでもよい。NBCは、National Broadcasting Company, Inc.によって所有される商標であり、ABCは、American Broadcasting Company, INC.によって所有される商標であり、HBOは、Home Box Office, Inc.によって所有される商標である。コンテンツソース616は、コンテンツの発信元であってもよい(例えば、テレビ放送会社、ウェブキャストプロバイダ等)、またはコンテンツの発信元でなくてもよい(例えば、オンデマンドコンテンツプロバイダ、ダウンロード用放送番組のコンテンツのインターネットプロバイダ等)。コンテンツソース616は、ケーブルソース、衛星プロバイダ、オンデマンドプロバイダ、インターネットプロバイダ、オーバーザトップコンテンツプロバイダ、または他のコンテンツのプロバイダを含んでもよい。コンテンツソース616はまた、ユーザ機器デバイスのうちのいずれかから遠隔の場所にある、異なるタイプのコンテンツ(ユーザによって選択されるビデオコンテンツを含む)を記憶するために使用される、遠隔メディアサーバを含んでもよい。コンテンツの遠隔記憶のため、および遠隔に記憶されたコンテンツをユーザ機器に提供するためのシステムおよび方法は、2010年7月20日に発行されたEllis et al.の米国特許第7,761,892号(その全体として本明細書に参照することによって本明細書に組み込まれる)に関連して、より詳細に議論されている。
メディアガイドデータソース618は、上記に説明されるメディアガイドデータ等のメディアガイドデータを提供してもよい。メディアガイドデータは、任意の好適なアプローチを使用して、ユーザ機器デバイスに提供されてもよい。いくつかの実施形態では、ガイドアプリケーションは、データフィード(例えば、継続フィードまたはトリクルフィード)を介して、番組ガイドデータを受信する、独立型双方向テレビ番組ガイドであってもよい。番組スケジュールデータおよび他のガイドデータは、テレビチャネルのサイドバンド上で、帯域内デジタル信号を使用して、帯域外デジタル信号を使用して、または任意の他の好適なデータ伝送技術によって、ユーザ機器に提供されてもよい。番組スケジュールデータおよび他のメディアガイドデータは、複数のアナログまたはデジタルテレビチャネル上でユーザ機器に提供されてもよい。
いくつかの実施形態では、メディアガイドデータソース618からのガイドデータは、クライアントサーバアプローチを使用して、ユーザの機器に提供されてもよい。例えば、ユーザ機器デバイスは、メディアガイドデータをサーバからプルしてもよい、またはサーバは、メディアガイドデータをユーザ機器デバイスにプッシュしてもよい。いくつかの実施形態では、ユーザの機器上に常駐するガイドアプリケーションクライアントは、必要に応じて、例えば、ガイドデータが古くなっているとき、またはユーザ機器デバイスが、データを受信する要求をユーザから受信するとき、ソース618とセッションを開始し、ガイドデータを取得してもよい。メディアガイドは、任意の好適な頻度で(例えば、継続的に、毎日、ユーザ規定期間で、システム規定期間で、ユーザ機器からの要求に応答して等)ユーザ機器に提供されてもよい。メディアガイドデータソース618は、ユーザ機器デバイス602、604、および606に、メディアガイドアプリケーション自体、またはメディアガイドアプリケーションのソフトウェア更新を提供してもよい。
いくつかの実施形態では、メディアガイドデータは、視聴者データを含んでもよい。例えば、視聴者データは、現在および/または履歴ユーザアクティビティ情報(例えば、ユーザが典型的に鑑賞するコンテンツ、ユーザがコンテンツを鑑賞する時刻、ユーザがソーシャルネットワークと相互作用するかどうか、ユーザがソーシャルネットワークと相互作用し、情報をポストする時間、ユーザが典型的に鑑賞するコンテンツのタイプ(例えば、有料TVまたは無料TV)、気分、脳の活動情報等)を含んでもよい。メディアガイドデータはまた、サブスクリプションデータを含んでもよい。例えば、サブスクリプションデータは、所与のユーザがサブスクライブするソースまたはサービスおよび/または所与のユーザが以前にサブスクライブしていたが、後にアクセスを打ち切ったソースまたはサービス(例えば、ユーザがプレミアムチャネルをサブスクライブしているかどうか、ユーザがプレミアムレベルのサービスを追加したかどうか、ユーザがインターネット速度を加速させたかどうか)を識別してもよい。いくつかの実施形態では、視聴者データおよび/またはサブスクリプションデータは、1年を上回る周期の間の所与のユーザのパターンを識別してもよい。メディアガイドデータは、所与のユーザがサービス/ソースへのアクセスを打ち切るであろう可能性を示すスコアを生成するために使用される、モデル(例えば、残存者モデル)を含んでもよい。例えば、メディアガイドアプリケーションは、所与のユーザが特定のサービスまたはソースへのアクセスを打ち切るであろうかどうかの可能性を示す、値またはスコアを生成するためのモデルを使用して、サブスクリプションデータとともに視聴者データを処理してもよい。特に、より高いスコアは、ユーザが特定のサービスまたはソースへのアクセスを打ち切るであろう、より高いレベルの信頼性を示し得る。スコアに基づいて、メディアガイドアプリケーションは、ユーザがアクセスを打ち切る可能性が高いであろうものとしてスコアによって示される特定のサービスまたはソースをユーザが維持するように勧誘する宣伝を生成してもよい。
メディアガイドアプリケーションは、例えば、ユーザ機器デバイス上に実装される独立型アプリケーションであってもよい。例えば、メディアガイドアプリケーションは、記憶装置508内に記憶され、ユーザ機器デバイス500の制御回路504によって実行され得る、ソフトウェアまたは実行可能命令のセットとして実装されてもよい。いくつかの実施形態では、メディアガイドアプリケーションは、クライアント-サーバアプリケーションであってもよく、その場合、クライアントアプリケーションのみが、ユーザ機器デバイス上に常駐し、サーバアプリケーションは、遠隔サーバ上に常駐する。例えば、メディアガイドアプリケーションは、部分的にユーザ機器デバイス500の制御回路504上のクライアントアプリケーションとして、および遠隔サーバの制御回路上で起動するサーバアプリケーション(例えば、メディアガイドデータソース618)として部分的に遠隔サーバ上で、実装されてもよい。遠隔サーバの制御回路(メディアガイドデータソース618等)によって実行されると、メディアガイドアプリケーションは、制御回路に、ガイドアプリケーション表示を生成し、生成された表示をユーザ機器デバイスに伝送するように命令してもよい。サーバアプリケーションは、メディアガイドデータソース618の制御回路に、ユーザ機器上での記憶のためのデータを伝送するように命令してもよい。クライアントアプリケーションは、受信用ユーザ機器の制御回路に、ガイドアプリケーション表示を生成するように命令してもよい。
ユーザ機器デバイス602、604、および606に配信されるコンテンツおよび/またはメディアガイドデータは、オーバーザトップ(OTT)コンテンツであってもよい。OTTコンテンツ配信は、上記に説明される任意のユーザ機器デバイスを含む、インターネット対応型ユーザデバイスが、ケーブルまたは衛星接続を経由して受信されるコンテンツに加えて、上記に説明される任意のコンテンツを含む、インターネットを経由して転送されるコンテンツを受信することを可能にする。OTTコンテンツは、インターネットサービスプロバイダ(ISP)によって提供されるインターネット接続を介して配信されるが、第三者も、コンテンツを配布する。ISPは、視聴能力、著作権、またはコンテンツの再配布に責任がない場合があり、OTTコンテンツプロバイダによって提供されるIPパケットのみを転送してもよい。OTTコンテンツプロバイダの実施例は、IPパケットを介してオーディオおよびビデオを提供する、YOUTUBE(登録商標)、NETFLIX、およびHULUを含む。Youtube(登録商標)は、Google Inc.によって所有される商標であり、Netflixは、Netflix, Inc.によって所有される商標であり、Huluは、Hulu, LLC.によって所有される商標である。OTTコンテンツプロバイダは、加えて、または代替として、上記に説明されるメディアガイドデータを提供してもよい。コンテンツおよび/またはメディアガイドデータに加えて、OTTコンテンツのプロバイダは、メディアガイドアプリケーション(例えば、ウェブベースのアプリケーションまたはクラウドベースのアプリケーション)を配布することができる、またはコンテンツは、ユーザ機器デバイス上に記憶されるメディアガイドアプリケーションによって表示されることができる。
メディアガイドシステム600は、いくつかのアプローチまたはネットワーク構成を例証することを意図しており、それによって、ユーザ機器デバイスおよびコンテンツおよびガイドデータのソースは、コンテンツにアクセスし、メディアガイドを提供する目的のために、相互に通信してもよい。本明細書に説明される実施形態は、これらのアプローチのうちのいずれか1つまたは一部において、またはコンテンツを配信し、メディアガイドを提供するための他のアプローチを採用するシステムにおいて、適用されてもよい。以下の4つのアプローチは、図6の汎用実施例の具体的例証を提供する。
1つのアプローチでは、ユーザ機器デバイスは、ホームネットワーク内で相互に通信してもよい。ユーザ機器デバイスは、上記に説明される短距離ポイントツーポイント通信方式を介して、ホームネットワーク上に提供されるハブまたは他の類似デバイスを通した間接パスを介して、または通信ネットワーク614を介して、相互に直接通信することができる。1つの家庭内の複数の個人のそれぞれが、ホームネットワーク上の異なるユーザ機器デバイスを動作させてもよい。結果として、種々のメディアガイド情報または設定が、異なるユーザ機器デバイスの間で通信されることが望ましくあり得る。例えば、2005年7月11日に出願された、Ellis et al.の米国特許公開第2005/0251827号により詳細に説明されるように、ホームネットワーク内の異なるユーザ機器デバイス上で、ユーザが一貫したメディアガイドアプリケーション設定を維持することが望ましくあり得る。ホームネットワーク内の異なるタイプのユーザ機器デバイスもまた、相互に通信し、コンテンツを伝送してもよい。例えば、ユーザは、ユーザコンピュータ機器からポータブルビデオプレーヤまたはポータブル音楽プレーヤにコンテンツを伝送してもよい。
第2のアプローチでは、ユーザは、複数のタイプのユーザ機器を有してもよく、これによって、ユーザは、コンテンツにアクセスし、メディアガイドを取得する。例えば、一部のユーザは、家庭内およびモバイルデバイスによってアクセスされる、ホームネットワークを有してもよい。ユーザは、遠隔デバイス上に実装されるメディアガイドアプリケーションを介して、家庭内デバイスを制御してもよい。例えば、ユーザは、そのオフィスのパーソナルコンピュータ、またはPDAまたはウェブ対応携帯電話等のモバイルデバイスを介して、ウェブサイト上のオンラインメディアガイドアプリケーションにアクセスしてもよい。ユーザは、オンラインガイドアプリケーション上で種々の設定(例えば、録画、リマインダ、または他の設定)を設定して、ユーザの家庭内機器を制御してもよい。オンラインガイドは、直接、またはユーザの家庭内機器上のメディアガイドアプリケーションと通信することによって、ユーザの機器を制御してもよい。ユーザ機器デバイスが相互から遠隔の場所にある、ユーザ機器デバイスの通信のための種々のシステムおよび方法は、例えば、2011年10月25日に発行された、Ellis et al.の米国特許第8,046,801号(本明細書に参照することによってその全体として本明細書に組み込まれる)に議論されている。
第3のアプローチでは、家庭内外のユーザ機器デバイスのユーザは、コンテンツソース616と直接通信し、コンテンツにアクセスするために、そのメディアガイドアプリケーションを使用することができる。具体的には、家庭内では、ユーザテレビ機器602およびユーザコンピュータ機器604のユーザは、メディアガイドアプリケーションにアクセスし、所望のコンテンツ間をナビゲートし、それを特定してもよい。ユーザはまた、無線ユーザ通信デバイス606を使用して、家庭外のメディアガイドアプリケーションにアクセスし、所望のコンテンツ間をナビゲートし、それを特定してもよい。
第4のアプローチでは、ユーザ機器デバイスは、クラウドコンピューティング環境内で動作し、クラウドサービスにアクセスしてもよい。クラウドコンピューティング環境では、コンテンツ共有、記憶、または配布のための種々のタイプのコンピューティングサービス(例えば、ビデオ共有サイトまたはソーシャルネットワーキングサイト)が、「クラウド」と称される、ネットワークアクセス可能コンピューティングおよび記憶リソースの集合によって提供される。例えば、クラウドは、通信ネットワーク614を介したインターネット等のネットワークを介して接続される、種々のタイプのユーザおよびデバイスにクラウドベースのサービスを提供する、中央にまたは分散場所に位置し得る、サーバコンピューティングデバイスの集合を含むことができる。これらのクラウドリソースは、1つ以上のコンテンツソース616および1つ以上のメディアガイドデータソース618を含んでもよい。加えて、または代替として、遠隔コンピューティングサイトは、ユーザテレビ機器602、ユーザコンピュータ機器604、および無線ユーザ通信デバイス606等の他のユーザ機器デバイスを含んでもよい。例えば、他のユーザ機器デバイスは、ビデオの記憶されたコピーまたはストリーミングされたビデオへのアクセスを提供してもよい。そのような実施形態では、ユーザ機器デバイスは、中央サーバと通信することなく、ピアツーピア様式で動作してもよい。
クラウドは、ユーザ機器デバイスのために、他の実施例の中でもとりわけ、コンテンツ記憶、コンテンツ共有、またはソーシャルネットワーキングサービス等のサービスへのアクセス、および上記に説明される任意のコンテンツへのアクセスを提供する。サービスは、クラウドコンピューティングサービスプロバイダを通して、またはオンラインサービスの他のプロバイダを通して、クラウド内で提供されることができる。例えば、クラウドベースのサービスは、コンテンツ記憶サービス、コンテンツ共有サイト、ソーシャルネットワーキングサイト、または他のサービスを含むことができ、それを介して、ユーザ供給コンテンツは、接続されたデバイス上で他者によって視聴するために分配される。これらのクラウドベースのサービスは、ユーザ機器デバイスが、コンテンツをローカルで記憶し、ローカルで記憶されたコンテンツにアクセスするのではなく、コンテンツをクラウドに記憶し、コンテンツをクラウドから受信することを可能にしてもよい。
ユーザは、カムコーダ、ビデオモード付きデジタルカメラ、オーディオレコーダ、モバイル電話、およびハンドヘルドコンピューティングデバイス等の種々のコンテンツ捕捉デバイスを使用して、コンテンツを録画してもよい。ユーザは、直接、例えば、ユーザコンピュータ機器604から、またはコンテンツ捕捉特徴を有する、無線ユーザ通信デバイス606からのいずれかにおいて、クラウド上のコンテンツ記憶サービスにコンテンツをアップロードすることができる。代替として、ユーザは、最初に、コンテンツをユーザコンピュータ機器604等のユーザ機器デバイスに転送することができる。コンテンツを記憶するユーザ機器デバイスは、通信ネットワーク614上のデータ伝送サービスを使用して、コンテンツをクラウドにアップロードする。いくつかの実施形態では、ユーザ機器デバイス自体が、クラウドリソースであり、他のユーザ機器デバイスは、直接、ユーザがコンテンツを記憶したユーザ機器デバイスから、コンテンツにアクセスすることができる。
クラウドリソースは、例えば、ウェブブラウザ、メディアガイドアプリケーション、デスクトップアプリケーション、モバイルアプリケーション、および/またはそれらのアクセスアプリケーションの任意の組み合わせを使用して、ユーザ機器デバイスによってアクセスされてもよい。ユーザ機器デバイスは、アプリケーション配信のために、クラウドコンピューティングに依拠する、クラウドクライアントであってもよい、またはユーザ機器デバイスは、クラウドリソースにアクセスすることなく、ある機能性を有してもよい。例えば、ユーザ機器デバイス上で起動するいくつかのアプリケーションは、クラウドアプリケーション、すなわち、インターネットを経由してサービスとして配信されるアプリケーションであってもよい一方、他のアプリケーションは、ユーザ機器デバイス上に記憶され、起動されてもよい。いくつかの実施形態では、ユーザデバイスは、コンテンツを複数のクラウドリソースから同時に受信してもよい。例えば、ユーザデバイスは、オーディオを1つのクラウドリソースからストリーミングする一方で、コンテンツを第2のクラウドリソースからダウンロードすることができる。または、ユーザデバイスは、より効率的なダウンロードのために、コンテンツを複数のクラウドリソースからダウンロードすることができる。いくつかの実施形態では、ユーザ機器デバイスは、図5に関連して説明される処理回路によって実施される処理動作等の処理動作のために、クラウドリソースを使用することができる。
本明細書で参照されるように、用語「~に応答して」は、「~の結果として開始される」ことを指す。例えば、第2のアクションに応答して実施されている第1のアクションは、第1のアクションと第2のアクションとの間に介在ステップを含んでもよい。本明細書で参照されるように、用語「~に直接応答して」は、「~によって引き起こされる」ことを指す。例えば、第2のアクションに直接応答して実施されている第1のアクションは、第1のアクションと第2のアクションとの間に介在ステップを含まなくてもよい。
図7は、本開示のいくつかの実施形態による、メディアアセットをトランスコードし、トランスコードされたメディアセグメントを伝送するための例証的プロセスを表す、フローチャートである。図7のフローチャートは、本開示のある実施形態による、メディアアセットをトランスコードし、トランスコードされたメディアセグメントを伝送するための制御回路404上で実装されるプロセス700を表す。プロセス700またはその任意のアクションは、図5-6に示されるデバイスのうちのいずれかの上で実施される、またはそれによって提供され得ることに留意されたい。例えば、プロセス700は、メディアアセットをトランスコードし、トランスコードされたメディアセグメントを伝送するために、サーバ(例えば、メディアコンテンツソース616、メディアガイドデータソース618、および/またはユーザ機器602、604、606(図6)であり得る、サーバデバイス102)またはクライアントデバイス(例えば、ユーザ機器602、604、606(図6)のうちのいずれかであり得る、クライアントデバイス104)上に実装されるメディアガイドアプリケーションによって命令されるように、トランスコーディング回路を備え得る、制御回路504(図5)によって実行されてもよい。加えて、プロセス700の1つ以上のアクションは、本明細書に説明される任意の他のプロセスまたは実施形態の1つ以上のアクションの中に組み込まれる、またはそれと組み合わせられてもよい。さらに、プロセス700は、サーバデバイス102上で排他的に実施される、またはサーバデバイス102およびクライアントデバイス104の両方の間に分散されてもよい。
702において、制御回路504は、メディアアセットを複数のセグメントに分割するように構成されてもよい。いくつかの実施形態では、ステップ702は、サーバデバイス102の制御回路によって実施されてもよい。例えば、メディアアセットは、未加工メディアストリームとして受信されてもよい。制御回路504は、フレームタイプ(例えば、Iフレーム)または再生持続時間(例えば、5秒のメディア再生時間を備えるデータ)に基づき得る、境界点においてメディアアセットを分割してもよい。代替として、メディアアセットは、MPEG-2またはMPEG-4等のセグメント化形式において受信されてもよい。制御回路504は、特定のサイズまたは持続時間のセグメントを発生させるために、そのようなセグメントを組み合わせる、またはさらに分割してもよい。いくつかの実施形態では、各セグメントは、複数のチャンクにさらに分割されてもよい。各チャンクは、ともに組み合わせられると、完全なセグメントを構成する、少量のデータを備えてもよい。
704において、制御回路504は、クライアントデバイスから、通信ネットワーク614を介して、複数のセグメントの第1のセグメントが第1のビットレートにおいてトランスコードされる第1の要求を受信するように構成されてもよい。いくつかの実施形態では、ステップ704は、サーバデバイス102の制御回路によって実施されてもよい。例えば、クライアントデバイスは、400kbpsのビットレートにおいてメディアアセットの第1のセグメントを要求する要求をサーバデバイスに伝送してもよい。要求は、HTTP、FTP、SFTP、または任意の他の好適なデータ転送プロトコルを使用して、通信ネットワーク614を介して伝送されてもよい。
706において、制御回路504は、要求された第1のビットレートにおいて複数のセグメントをトランスコードし始め、複数の対応するトランスコードされた部分を発生させるように構成されてもよい。いくつかの実施形態では、ステップ706は、サーバデバイス102の制御回路によって実施されてもよい。例えば、制御回路504のトランスコーディングモジュールは、メディアアセットにアクセスし、メディアデータを処理し、要求されたビットレートにおいてメディアデータのセグメントを発生させてもよい。いくつかの実施形態では、制御回路504のトランスコーディングモジュールは、トランスコードされているセグメント毎に複数のチャンクを発生させてもよい。
708において、制御回路504は、トランスコード待ち時間値および第1の要求が受信された時間におけるメディアアセットの利用可能な事前トランスコードされた部分の数を示すカウント値を備えるように、複数のセグメントの第1のセグメントに対応する第1のトランスコードされた部分のヘッダを更新するように構成されてもよい。いくつかの実施形態では、ステップ708は、サーバデバイス102の制御回路によって実施されてもよい。例えば、制御回路504は、第1の要求の受信からトランスコーダの開始までの時間を100ミリ秒であるように測定し得る。制御回路504は、次いで、トランスコードされた部分のヘッダのトランスコード待ち時間値フィールドを100の値に設定してもよい。加えて、第1の部分を構成するバイトを除いて、1,024バイトのメディアデータが、要求されたビットレートにおいてトランスコードされた場合、制御回路504は、制御回路504が、バイト単位で部分サイズを測定するように構成される場合、トランスコードされた部分のヘッダのカウント値フィールドを1,024の値に設定してもよい、または制御回路504は、制御回路504が、キロバイト単位で部分サイズを測定するように構成される場合、カウント値フィールドを1の値に設定してもよい。
710において、制御回路504は、複数の部分の第1の部分に対応するトランスコードされた部分をクライアントデバイスに伝送するように構成されてもよい。いくつかの実施形態では、ステップ710は、サーバデバイス102の制御回路によって実施されてもよい。制御回路504は、HTTP、FTP、SFTP、RTP、RTMP、Apple HLS、MPEG-DASH、Microsoft Smooth Streaming、または任意の他の好適なメディアデータ転送プロトコルを使用して、通信ネットワーク614を介してトランスコードされた部分を伝送してもよい。いくつかの実施形態では、制御回路504は、HTTPチャンク化転送エンコーディングを使用して、トランスコードされた部分を伝送してもよい。
712において、制御回路504は、サーバデバイス102またはクライアントデバイス104のいずれかにおいて、第1の部分に対応するトランスコードされた部分のヘッダ内に含まれるトランスコード待ち時間値に基づいて、第2のビットレートを決定するように構成されてもよい。いくつかの実施形態では、ステップ712は、サーバ102の制御回路によって、またはクライアント104の制御回路によって実施されてもよい。例えば、制御回路504は、下記にさらに説明されるであろうように、クライアントデバイスとサーバデバイスとの間の接続によってサポートされ得る最大ビットレートを計算するとき、トランスコード待ち時間を考慮してもよい。
714において、制御回路504は、第1の部分に対応するトランスコードされた部分のヘッダ内に含まれるカウント値に基づいて、第2の部分に関する第2の要求を伝送する時間を決定するように構成されてもよい。いくつかの実施形態では、ステップ714は、サーバ102の制御回路によって、またはクライアント104の制御回路によって実施されてもよい。例えば、制御回路404は、カウント値を使用し、要求されたビットレートにおいて完全なセグメントを構成するために十分なメディアデータが、トランスコードされたかどうかを決定してもよく、カウント値が、完全なセグメントを上回る、またはそれに等しいデータの量を示す場合のみ、ある部分を要求してもよい。
716において、制御回路504は、クライアントデバイスから、通信ネットワーク614を介して、複数の部分の第2の部分が第2のビットレートにおいてトランスコードされる第2の要求を受信するように構成されてもよい。いくつかの実施形態では、ステップ716は、サーバ102の制御回路によって、またはクライアント104の制御回路によって実施されてもよい。これは、704における第1の要求に関連して上記に説明される方法を使用して遂行されてもよい。
図7のアクションまたは説明は、本開示の任意の他の実施形態と併用され得ることが検討される。加えて、図7に関連して説明されるアクションおよび説明は、本開示の目的を促すために、代替順序で、または並行して行われてもよい。例えば、これらのアクションはそれぞれ、本システムまたは方法の遅れを低減させる、または速度を増加させるように、任意の順序で、または並行して、または実質的に同時に実施されてもよい。これらのアクションのうちのいずれかはまた、スキップされる、またはプロセスから省略されてもよい。さらに、図5-6に関連して議論されるデバイスまたは機器のうちのいずれかは、図7のアクションのうちの1つ以上のものを実施するために使用され得ることに留意されたい。
図8は、本開示のいくつかの実施形態による、トランスコード待ち時間値を決定するための例証的プロセスを表す、フローチャートである。図8のフローチャートは、本開示のある実施形態による、トランスコード待ち時間値を決定するための制御回路504上で実装されるプロセス800を表す。プロセス800またはその任意のアクションは、図5-6に示されるデバイスのうちのいずれかの上で実施される、またはそれによって提供され得ることに留意されたい。例えば、プロセス800は、トランスコード待ち時間値を決定するために、サーバ(例えば、メディアコンテンツソース616、メディアガイドデータソース618、および/またはユーザ機器602、604、606(図6))上に実装されるメディアガイドアプリケーションによって命令されるように、制御回路504(図5)によって実行されてもよい。加えて、プロセス700の1つ以上のアクションは、本明細書に説明される任意の他のプロセスまたは実施形態の1つ以上のアクションの中に組み込まれる、またはそれと組み合わせられてもよい。さらに、プロセス800は、サーバデバイス102またはクライアントデバイス104のいずれかの上で排他的に実施されてもよい、またはサーバデバイス102およびクライアントデバイス104の両方の間に分散されてもよい。
802において、制御回路504は、第1の要求が受信された時間を表す、第1の時間値を決定するように構成されてもよい。例えば、制御回路504は、第1の要求の受信に応じて、サーバデバイスによって記録されるタイムスタンプにアクセスしてもよい。タイムスタンプは、例えば、記憶装置508内に記憶される、ログファイル、データベース、または他のデータ構造内に記憶されてもよい。
804において、制御回路504は、トランスコードするステップが開始された時間を表す、第2の時間値を決定するように構成されてもよい。例えば、制御回路504は、トランスコーダが、メディアアセットをトランスコードし始めるとき、サーバデバイスによって記録されるタイムスタンプにアクセスしてもよい。タイムスタンプは、例えば、記憶装置508内に記憶される、ログファイル、データベース、または他のデータ構造内に記憶されてもよい。代替として、制御回路504は、例えば、トランスコードされた部分のヘッダ内に位置し得る、トランスコードされた部分の作成タイムスタンプにアクセスしてもよい。
806において、制御回路504は、第2の時間値から第1の時間値を減算し、トランスコード待ち時間値を計算するように構成されてもよい。
図8のアクションまたは説明は、本開示の任意の他の実施形態と併用され得ることが検討される。加えて、図8に関連して説明されるアクションおよび説明は、本開示の目的を促すために、代替順序で、または並行して行われてもよい。例えば、これらのアクションはそれぞれ、本システムまたは方法の遅れを低減させる、または速度を増加させるように、任意の順序で、または並行して、または実質的に同時に実施されてもよい。これらのアクションのうちのいずれかはまた、スキップされる、またはプロセスから省略されてもよい。さらに、図5-6に関連して議論されるデバイスまたは機器のうちのいずれかは、図8のアクションのうちの1つ以上のものを実施するために使用され得ることに留意されたい。
図9は、本開示のいくつかの実施形態による、メディアアセットのセグメントをトランスコードする第2のビットレートを選択するための例証的プロセスを表す、フローチャートである。図9のフローチャートは、本開示のある実施形態による、メディアアセットのセグメントをトランスコードする第2のビットレートを選択するための制御回路504上で実装されるプロセス900を表す。プロセス900またはその任意のアクションは、図5-6に示されるデバイスのうちのいずれかの上で実施される、またはそれによって提供され得ることに留意されたい。例えば、プロセス900は、メディアアセットのセグメントをトランスコードする第2のビットレートを選択するために、サーバ(例えば、メディアコンテンツソース616、メディアガイドデータソース618、および/またはユーザ機器602、604、606(図6))上に実装されるメディアガイドアプリケーションによって命令されるように、制御回路504(図5)によって実行されてもよい。加えて、プロセス900の1つ以上のアクションは、本明細書に説明される任意の他のプロセスまたは実施形態の1つ以上のアクションの中に組み込まれる、またはそれと組み合わせられてもよい。さらに、プロセス900は、サーバデバイス102またはクライアントデバイス104のいずれかの上で排他的に実施されてもよい、またはサーバデバイス102およびクライアントデバイス104の両方の間に分散されてもよい。
902において、制御回路504は、第1の要求がクライアントデバイスによって伝送された時間を表す、第1の時間値を決定するように構成されてもよい。例えば、制御回路504は、第1の要求の伝送に応じて、クライアントデバイスによって記録されるタイムスタンプにアクセスしてもよい。タイムスタンプは、例えば、記憶装置508内に記憶される、ログファイル、データベース、または他のデータ構造内に記録されてもよい。代替として、制御回路504は、要求自体の中に位置する伝送タイムスタンプにアクセスしてもよい。
904において、制御回路504は、第1の部分に対応するトランスコードされた部分がクライアントデバイスによって受信された時間を表す、第2の時間値を決定するように構成されてもよい。例えば、制御回路504は、トランスコードされた部分の受信に応じて、クライアントデバイスによって記録されるタイムスタンプにアクセスしてもよい。タイムスタンプは、例えば、記憶装置508内に記憶される、ログファイル、データベース、または他のデータ構造内に記録されてもよい。代替として、制御回路504は、トランスコードされた部分の受信に応じて、クライアントデバイスからサーバデバイスにおいて受信される肯定応答信号のタイムスタンプにアクセスしてもよい。
906において、制御回路504は、第2の時間値から第1の時間値を減算することによって、予備待ち時間値を計算するように構成されてもよい。908において、制御回路504は、予備待ち時間値からトランスコード待ち時間値を減算することによって、最終待ち時間値を計算するように構成されてもよい。
910において、制御回路504は、第1の部分に対応するトランスコードされた部分内に含有されるデータの量を決定するように構成されてもよい。例えば、制御回路504は、トランスコードされた部分内に含有されるデータの量を決定するために、クライアントデバイスまたはサーバデバイスのいずれかのファイルシステムまたは他のデータ管理システムにアクセスしてもよい。代替として、制御回路504は、その中に含有されるデータの量を示す値を含み得る、トランスコードされた部分のヘッダにアクセスしてもよい。また別の代替として、制御回路504は、伝送または受信されるデータの量を決定するために、サーバデバイスの伝送モジュールまたはクライアントデバイスの受信モジュールのいずれかのログファイルまたは他のデータ構造にアクセスしてもよい。
912において、制御回路504は、データの量を最終待ち時間値で除算することによって、観察される帯域幅を決定するように構成されてもよい。
914において、制御回路504は、観察される帯域幅に基づいて、第2のビットレートを選択するように構成されてもよい。例えば、制御回路504のトランスコーディングモジュールは、メディアデータをトランスコードすることが可能である所定のビットレートのセットを有してもよい。制御回路504は、観察される帯域幅を超えることなく、観察される帯域幅に最も近いビットレートを所定のビットレートから選択してもよい。例えば、所定のビットレートは、200kbps、400kbps、800kbps、1Mbps、および2Mbpsを含んでもよい。観察される帯域幅が、950kbpsである場合、制御回路は、800kbpsを第2のビットレートとして選択してもよい。
図9のアクションまたは説明は、本開示の任意の他の実施形態と併用され得ることが検討される。加えて、図9に関連して説明されるアクションおよび説明は、本開示の目的を促すために、代替順序で、または並行して行われてもよい。例えば、これらのアクションはそれぞれ、本システムまたは方法の遅れを低減させる、または速度を増加させるように、任意の順序で、または並行して、または実質的に同時に実施されてもよい。これらのアクションのうちのいずれかはまた、スキップされる、またはプロセスから省略されてもよい。さらに、図5-6に関連して議論されるデバイスまたは機器のうちのいずれかは、図9のアクションのうちの1つ以上のものを実施するために使用され得ることに留意されたい。
図10は、本開示のいくつかの実施形態による、サーバデバイスからセグメントを要求するための例証的プロセスを表す、フローチャートである。図10のフローチャートは、本開示のある実施形態による、サーバデバイスからセグメントを要求するための制御回路504上に実装されるプロセス1000を表す。プロセス1000またはその任意のアクションは、図5-6に示されるデバイスのうちのいずれかの上で実施される、またはそれによって提供され得ることに留意されたい。例えば、プロセス1000は、サーバデバイスからセグメントを要求するために、サーバ(例えば、メディアコンテンツソース616、メディアガイドデータソース618、および/またはユーザ機器602、604、606(図6))上に実装されるメディアガイドアプリケーションによって命令されるように、制御回路504(図5)によって実行されてもよい。加えて、プロセス1000の1つ以上のアクションは、本明細書に説明される任意の他のプロセスまたは実施形態の1つ以上のアクションの中に組み込まれる、またはそれと組み合わせられてもよい。さらに、プロセス1000は、サーバデバイス102またはクライアントデバイス104のいずれかの上で排他的に実施されてもよい、またはサーバデバイス102およびクライアントデバイス104の両方の間に分散されてもよい。
1002において、制御回路504は、カウント値によって表されるデータの量を決定するように構成されてもよい。例えば、制御回路504は、チャンクバッファ内に記憶されるメディアアセットの単一の部分に対応するデータの量を決定してもよい。制御回路504は、次いで、決定されたデータの量をカウント値で乗算し、カウント値によって表されるデータの合計量を決定してもよい。例えば、チャンクバッファは、100キロビット(12.5キロバイト)のデータを含有するチャンクを記憶し得る。カウント値が、5である場合、制御回路504は、カウント値が、500キロビット(62.5キロバイト)のデータを表すと決定し得る。
1004において、制御回路504は、カウント値によって表されるデータの量が、第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回るかどうかを決定するように構成されてもよい。例えば、要求されたビットレートは、400kbpsであり得、各セグメントは、1秒のメディアを構成し、400キロビット(50キロバイト)のセグメントをもたらし得る。上記の実施例を継続すると、カウント値が、500キロビットを表す場合、制御回路は、カウント値によって表されるデータの量が、第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回ると決定し得る。
カウント値によって表されるデータの量が、第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を下回る場合、1006において、制御回路504は、バッファ深度閾値を減少させるように構成されてもよい。例えば、バッファ深度閾値は、最初に、3つのセグメントに設定され得る。チャンクバッファが、十分に速くデータを発生させていない場合、制御回路504は、クライアントデバイスが再生バッファを充填するために要求するであろうセグメントの数を、例えば、1つのセグメントに低減させてもよい。
カウント値によって表されるデータの量が、第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回る場合、1008において、制御回路504は、バッファ深度閾値を増加させるように構成されてもよい。例えば、バッファ深度は、最初に、3つのセグメントに設定され得る。チャンクバッファが、十分に速く完全なトランスコードされたセグメントを受信および/または記憶している場合、制御回路504は、クライアントデバイスが再生バッファを充填するために要求するであろうセグメントの数を増加させてもよい。例えば、制御回路504は、記憶装置508内の変数またはデータ構造において記憶され得る、現数によって定義されるような最大値までバッファ深度閾値を増加させてもよい。
1010において、制御回路504は、クライアントデバイス104の再生バッファ内に記憶されるトランスコードされた部分の数が、バッファ深度閾値を満たすかどうかを決定するように構成されてもよい。例えば、制御回路504は、再生バッファにアクセスし、その中に現在記憶されている部分の数を決定し、部分の数をバッファ深度閾値と比較してもよい。いくつかの実施形態では、バッファ深度閾値は、所与の数のセグメントを構成するチャンクの数であり得る一方、他の実施形態では、バッファ深度閾値は、完全なセグメントの所与の数であり得る。
クライアントデバイス104の再生バッファ内に記憶されるトランスコードされた部分の数が、バッファ閾値を満たす場合、1012において、制御回路504は、現在再生されている部分が終了するであろう時間に第2の要求を伝送することを決定するように構成されてもよい。例えば、制御回路504は、クライアントデバイス上のメディアアセットの再生位置にアクセスし、再生位置が、現在再生されている部分の終了に到達するまでの残り時間の量を決定してもよい。下記に説明されるように、現在再生されている部分が、終了すると、制御回路504は、再生バッファからその部分を除去してもよい。これは、再生バッファが、バッファ深度閾値を下回る1つの部分を有することをもたらす。したがって、制御回路504は、第2の要求が、現在再生されている部分の再生が終了する時間に伝送されるべきであると決定し得る。再生バッファ内に記憶されるトランスコードされた部分の数が、バッファ深度閾値を満たしていない場合、1014において、制御回路504は、第2の要求が、直ちに伝送されるべきであると決定するように構成されてもよい。
1016において、制御回路504は、決定された時間に第2の要求を伝送するように構成されてもよい。第2の要求は、任意の好適な伝送プロトコルを使用して、通信ネットワーク614を介して伝送されてもよい。
1018において、制御回路504は、再生バッファ内にクライアントデバイスによって受信される第2の部分に対応するトランスコードされた部分を記憶するように構成されてもよい。1020において、制御回路504は、クライアントデバイスにおいて、トランスコードされた部分を再生するように構成されてもよい。
1022において、トランスコードされた部分の再生が、完了した後、制御回路404は、再生バッファからトランスコードされた部分を除去するように構成されてもよい。例えば、制御回路504は、再生バッファからその部分を削除してもよい。代替として、制御回路504は、再生バッファのメモリマップまたはメモリ割当テーブルにアクセスし、データが、それらのセクタまたはエリアに書き込まれ得るように、再生バッファのセクタ、アドレス、または他の部分を空としてマーキングしてもよい。
1024において、制御回路504は、再生バッファ内に記憶されるトランスコードされた部分の数が、バッファ深度閾値を満たすかどうかを再び決定するように構成されてもよい。制御回路504が、再生バッファ内に記憶されるトランスコードされた部分の数が、バッファ深度閾値を満たしていないと決定する場合、処理は、1004に戻る。制御回路504が、再生バッファ内に記憶されるトランスコードされた部分の数が、バッファ深度閾値を満たしていると決定する場合、処理は、1012に戻る。
図10のアクションまたは説明は、本開示の任意の他の実施形態と併用され得ることが検討される。加えて、図10に関連して説明されるアクションおよび説明は、本開示の目的を促すために、代替順序で、または並行して行われてもよい。例えば、これらのアクションはそれぞれ、本システムまたは方法の遅れを低減させる、または速度を増加させるように、任意の順序で、または並行して、または実質的に同時に実施されてもよい。これらのアクションのうちのいずれかはまた、スキップされる、またはプロセスから省略されてもよい。さらに、図5-6に関連して議論されるデバイスまたは機器のうちのいずれかは、図10のアクションのうちの1つ以上のものを実施するために使用され得ることに留意されたい。
上記に説明されるプロセスは、限定的ではなく、例証的であることを意図している。当業者は、本明細書に議論されるプロセスのステップが、本発明の範囲から逸脱することなく、省略される、修正される、組み合わせられる、および/または再配列されてもよく、任意の付加的ステップが、実施されてもよいことを理解するであろう。より一般的には、上記の開示は、限定ではなく、例示的であることを意味している。続く請求項のみが、本発明が含むものに関する境界を設定することを意味している。さらに、いずれか1つの実施形態に説明される特徴および限定は、本明細書の任意の他の実施形態に適用され得、一実施形態に関するフローチャートまたは実施例は、好適な様式で任意の他の実施形態と組み合わせられる、異なる順序で行われる、または並行して行われ得ることに留意されたい。加えて、本明細書に説明されるシステムおよび方法は、リアルタイムで実施されてもよい。また、上記に説明されるシステムおよび/または方法は、他のシステムおよび/または方法に適用される、またはそれらに従って使用され得ることにも留意されたい。

Claims (10)

  1. メディアアセットをストリーミングするための方法であって、前記方法は、
    前記メディアアセットを複数の部分に分割することと、
    クライアントデバイスから、前記複数の部分の第1の部分が第1のビットレートにおいてトランスコードされる第1の要求を受信することと、
    前記第1の要求を受信することに応答して、
    前記要求された第1のビットレートにおいて前記複数の部分をトランスコードし、複数の対応するトランスコードされた部分を発生させることと、
    1)トランスコード待ち時間値および2)前記第1の要求が受信された時間における前記メディアアセットの利用可能な事前トランスコードされた部分の数を示すカウント値を備えるように、前記第1の部分に対応する前記複数のトランスコードされた部分のうちのトランスコードされた部分のヘッダを更新することと、
    前記複数の部分の前記第1の部分に対応する前記トランスコードされた部分を前記クライアントデバイスに伝送することと、
    前記クライアントデバイスから、前記複数の部分の第2の部分が第2のビットレートにおいてトランスコードされる第2の要求を受信することと
    を含み、
    前記第2のビットレートは、前記第1の部分に対応する前記トランスコードされた部分の前記ヘッダ内に含まれる前記トランスコード待ち時間値に基づいて決定され、
    前記第2の要求は、前記第1の部分に対応する前記トランスコードされた部分の前記ヘッダ内に含まれる前記カウント値に基づいて決定される時間に伝送される、方法。
  2. 前記トランスコード待ち時間値は、
    前記第1の要求が受信された時間を表す第1の時間値を決定することと、
    前記第1のビットレートにおいてトランスコードすることが開始された時間を表す第2の時間値を決定することと、
    前記第2の時間値から前記第1の時間値を減算することと
    によって計算される、請求項1に記載の方法。
  3. 前記トランスコード待ち時間値に基づいて、前記第2のビットレートを決定することは、
    前記第1の要求が前記クライアントデバイスによって伝送された時間を表す第1の時間値を決定することと、
    前記第1の部分に対応する前記トランスコードされた部分が前記クライアントデバイスによって受信された時間を表す第2の時間値を決定することと、
    前記第2の時間値から前記第1の時間値を減算することによって、予備待ち時間値を計算することと、
    前記予備待ち時間値から前記トランスコード待ち時間値を減算することによって、最終待ち時間値を計算することと、
    前記第1の部分に対応する前記トランスコードされた部分内に含有されるデータの量を決定することと、
    前記データの量を前記最終待ち時間値で除算することによって、観察される帯域幅を決定することと、
    前記観察される帯域幅に基づいて、前記第2のビットレートを選択することと
    を含む、請求項1に記載の方法。
  4. 前記トランスコードされた部分を前記クライアントデバイスに伝送することに先立って、チャンクバッファ内にトランスコードされた部分を記憶することをさらに含み、
    前記カウント値は、前記チャンクバッファ内に記憶される前記メディアアセットのトランスコードされた部分の数を示す、請求項1に記載の方法。
  5. 前記複数の部分のサブセットは、前記メディアアセットの完全なセグメントを構成し、前記カウント値に基づいて、前記第2の要求の伝送に関する時間を決定することは、
    前記カウント値によって表されるデータの量を決定することと、
    前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成するデータの量を上回るかどうかを決定することと
    を含む、請求項1に記載の方法。
  6. 前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を下回ると決定することに応答して、バッファ深度閾値を第1の値に設定することと、
    前記カウント値によって表される前記データの量が、前記第1のビットレートにおける完全なトランスコードされたセグメントを構成する前記データの量を上回ると決定することに応答して、前記バッファ深度閾値を、前記第1の値を上回る第2の値に設定することと
    をさらに含む、請求項5に記載の方法。
  7. 再生バッファ内に記憶されるトランスコードされた部分の数をバッファ深度閾値と比較することと、
    前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を満たすと決定することに応答して、
    現在再生されている部分の再生が終了するであろう時間を識別することと、
    前記識別された時間に第3の部分に関する第3の要求を伝送することと
    を行うことと
    をさらに含む、請求項6に記載の方法。
  8. 前記再生バッファ内に記憶される前記トランスコードされた部分の数が、前記バッファ深度閾値を下回ると決定することに応答して、前記第3の要求を直ちに伝送することをさらに含む、請求項に記載の方法。
  9. メディアアセットをストリーミングするためのシステムであって、前記システムは、
    通信回路と、
    請求項1~8のいずれかに記載の方法を実行するように構成される制御回路
    を備える、システム。
  10. 1つ以上の非一過性コンピュータ可読媒体であって、前記1つ以上の非一過性コンピュータ可読媒体は、命令を記憶し、前記命令は、制御回路によって実行されると、請求項1~8のいずれかに記載の方法を前記制御回路に実施させる、1つ以上の非一過性コンピュータ可読媒体。
JP2020571698A 2018-08-21 2018-08-21 リアルタイム適応ビットレートトランスコーディングおよびトランスコードされたメディアの伝送のためのシステムおよび方法 Active JP7167194B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/047224 WO2020040741A1 (en) 2018-08-21 2018-08-21 Systems and methods for real-time adaptive bitrate transcoding and transmission of transcoded media

Publications (2)

Publication Number Publication Date
JP2022503419A JP2022503419A (ja) 2022-01-12
JP7167194B2 true JP7167194B2 (ja) 2022-11-08

Family

ID=63490696

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020571698A Active JP7167194B2 (ja) 2018-08-21 2018-08-21 リアルタイム適応ビットレートトランスコーディングおよびトランスコードされたメディアの伝送のためのシステムおよび方法

Country Status (7)

Country Link
US (3) US11128916B2 (ja)
EP (1) EP3797518A1 (ja)
JP (1) JP7167194B2 (ja)
KR (1) KR102547539B1 (ja)
AU (1) AU2018438001B2 (ja)
CA (1) CA3104090A1 (ja)
WO (1) WO2020040741A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11611547B2 (en) 2016-11-08 2023-03-21 Dish Network L.L.C. User to user content authentication
JP7167194B2 (ja) * 2018-08-21 2022-11-08 ロヴィ ガイズ, インコーポレイテッド リアルタイム適応ビットレートトランスコーディングおよびトランスコードされたメディアの伝送のためのシステムおよび方法
US11695722B2 (en) 2019-07-30 2023-07-04 Sling Media L.L.C. Devices, systems and processes for providing geo-located and content-to-comment synchronized user circles
US11838450B2 (en) * 2020-02-26 2023-12-05 Dish Network L.L.C. Devices, systems and processes for facilitating watch parties
US11606597B2 (en) 2020-09-03 2023-03-14 Dish Network Technologies India Private Limited Devices, systems, and processes for facilitating live and recorded content watch parties
EP4016954B1 (en) * 2020-12-18 2023-12-20 Streamroot Method for controlling a player playing a data stream streamed in a peer-to-peer network
US20220210492A1 (en) * 2020-12-30 2022-06-30 Comcast Cable Communications, Llc Systems and methods for transcoding content
US11758245B2 (en) 2021-07-15 2023-09-12 Dish Network L.L.C. Interactive media events
US11509946B1 (en) * 2021-11-08 2022-11-22 Pluto Inc. Methods and systems configured to manage video transcoder latencies
CN114285513B (zh) * 2021-11-22 2023-10-27 杭州当虹科技股份有限公司 一种支持无损ip信号长时间延时的延时器及方法
US12003601B2 (en) * 2021-12-01 2024-06-04 Tencent America LLC Method and apparatus for split rendering for lightfield/immersive media using proxy edge cloud architecture
US11849171B2 (en) 2021-12-07 2023-12-19 Dish Network L.L.C. Deepfake content watch parties
US11974005B2 (en) 2021-12-07 2024-04-30 Dish Network L.L.C. Cell phone content watch parties
CN114630177B (zh) * 2022-03-25 2024-06-21 阿里巴巴(中国)有限公司 一种视频转码方法及其相关装置
US11973999B2 (en) 2022-08-19 2024-04-30 Dish Network L.L.C. User chosen watch parties

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160134673A1 (en) 2014-11-10 2016-05-12 Broadcom Corporation Adaptive streaming with early client indication
US20160191592A1 (en) 2014-12-24 2016-06-30 Sonus Networks, Inc. Methods and apparatus for communicating delay information and minimizing delays
JP2017069849A (ja) 2015-09-30 2017-04-06 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 映像制御装置、映像配信システムおよび映像制御方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3046801A (en) 1961-07-31 1962-07-31 Herman E Pravel Rotary to lineal motion converter
CN1867068A (zh) 1998-07-14 2006-11-22 联合视频制品公司 交互式电视节目导视系统及其方法
MX355835B (es) 1998-07-17 2018-05-02 Rovi Guides Inc Un sistema de guias de programacion televisiva interactivas que tiene multiples dispositivos dentro de una residencia de un grupo familiar.
AR020608A1 (es) 1998-07-17 2002-05-22 United Video Properties Inc Un metodo y una disposicion para suministrar a un usuario acceso remoto a una guia de programacion interactiva por un enlace de acceso remoto
US6563517B1 (en) * 1998-10-02 2003-05-13 International Business Machines Corp. Automatic data quality adjustment to reduce response time in browsing
US7165098B1 (en) 1998-11-10 2007-01-16 United Video Properties, Inc. On-line schedule system with personalization features
CN101257609B (zh) 2001-02-21 2014-03-19 联合视频制品公司 具有个人视频记录特征的交互式节目导视器的系统和方法
US7966642B2 (en) * 2003-09-15 2011-06-21 Nair Ajith N Resource-adaptive management of video storage
KR100526189B1 (ko) * 2004-02-14 2005-11-03 삼성전자주식회사 트랜스코딩 전후에 타이밍 파라미터를 일정하게유지시키는 트랜스코딩 시스템 및 방법
US20080212690A1 (en) * 2007-03-01 2008-09-04 Qualcomm Incorporated Transcoder media time conversion
US8561116B2 (en) * 2007-09-26 2013-10-15 Charles A. Hasek Methods and apparatus for content caching in a video network
US9473812B2 (en) * 2008-09-10 2016-10-18 Imagine Communications Corp. System and method for delivering content
US8855189B1 (en) * 2010-04-12 2014-10-07 UV Networks, Inc. Multi-stream transcoding system with cache memory management
TWI587693B (zh) * 2011-06-30 2017-06-11 微軟技術授權有限責任公司 用於減少視訊編碼及解碼中之延遲的方法、系統及電腦可讀取媒體
US9166864B1 (en) * 2012-01-18 2015-10-20 Google Inc. Adaptive streaming for legacy media frameworks
EP2875635B1 (en) * 2012-07-18 2019-09-04 Performance and Privacy Ireland Ltd. Just-in-time distributed video cache
US8918821B2 (en) * 2012-12-11 2014-12-23 Morega Systems, Inc. Client device with video playlist translation via client-side proxy and methods for use therewith
US9813325B2 (en) * 2012-12-27 2017-11-07 Comcast Cable Communications, Llc Information stream management
US9077667B2 (en) * 2013-06-18 2015-07-07 Genband Us Llc Computing latency introduced by media transcoding operations
KR101569510B1 (ko) * 2013-10-22 2015-11-17 네이버 주식회사 적응적 실시간 트랜스코딩 방법 및 이를 위한 스트리밍 서버
US9288510B1 (en) * 2014-05-22 2016-03-15 Google Inc. Adaptive video transcoding based on parallel chunked log analysis
KR101942208B1 (ko) * 2015-01-08 2019-01-24 애리스 엔터프라이지즈 엘엘씨 Dlna http 스트리밍 클라이언트들을 위한 서버측 적응형 비트 레이트 제어
US10594580B2 (en) * 2015-08-03 2020-03-17 Avago Technologies International Sales Pte. Limited Network function virtualization management system
US10785511B1 (en) * 2017-11-14 2020-09-22 Amazon Technologies, Inc. Catch-up pacing for video streaming
JP7167194B2 (ja) 2018-08-21 2022-11-08 ロヴィ ガイズ, インコーポレイテッド リアルタイム適応ビットレートトランスコーディングおよびトランスコードされたメディアの伝送のためのシステムおよび方法
US11184684B2 (en) * 2019-05-24 2021-11-23 Viacom International Inc. Live broadcast IP latency compensation
US20200177660A1 (en) * 2020-02-03 2020-06-04 Intel Corporation Offload of streaming protocol packet formation
US11509946B1 (en) * 2021-11-08 2022-11-22 Pluto Inc. Methods and systems configured to manage video transcoder latencies

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160134673A1 (en) 2014-11-10 2016-05-12 Broadcom Corporation Adaptive streaming with early client indication
US20160191592A1 (en) 2014-12-24 2016-06-30 Sonus Networks, Inc. Methods and apparatus for communicating delay information and minimizing delays
JP2017069849A (ja) 2015-09-30 2017-04-06 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 映像制御装置、映像配信システムおよび映像制御方法

Also Published As

Publication number Publication date
JP2022503419A (ja) 2022-01-12
EP3797518A1 (en) 2021-03-31
US11128916B2 (en) 2021-09-21
CA3104090A1 (en) 2020-02-27
WO2020040741A1 (en) 2020-02-27
US12075124B2 (en) 2024-08-27
US20230188790A1 (en) 2023-06-15
US20210195290A1 (en) 2021-06-24
AU2018438001A1 (en) 2021-01-14
KR20210044743A (ko) 2021-04-23
KR102547539B1 (ko) 2023-06-23
AU2018438001B2 (en) 2024-08-01
US20210385540A1 (en) 2021-12-09
US11516542B2 (en) 2022-11-29

Similar Documents

Publication Publication Date Title
JP7167194B2 (ja) リアルタイム適応ビットレートトランスコーディングおよびトランスコードされたメディアの伝送のためのシステムおよび方法
US10419794B2 (en) Systems and methods for synchronizing media asset playback from multiple sources
US11386134B2 (en) Systems and methods for correcting a voice query based on a subsequent voice query with a lower pronunciation rate
US11528520B2 (en) Systems and methods for bandwidth consumption management
US12034990B2 (en) Systems and methods for extending storage for media content based on aggregating user data
US11902615B2 (en) Systems and methods for intelligently managing storage space occupied by media assets
US12052479B2 (en) Content-based user-preferred trick play
US10382812B1 (en) Methods and systems for selecting a destination for storage of a media asset based on trick-play likelihood
US20210345003A1 (en) Systems and methods for providing timeline of content items on a user interface
US9852003B2 (en) Systems and methods for generating a unique fingerprint aggregating set of unique tracking identifiers throughout request/response processing
US10382821B1 (en) Methods and systems for selecting a destination for storage of a media asset based on wireless access likelihood
US20190342608A1 (en) Methods and systems for providing uncorrupted media assets
WO2019178555A1 (en) Methods and systems for selecting a destination for storage of a media asset based on trick-play likelihood
US11647063B2 (en) Method and apparatus for presentation of video content

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210820

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220916

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221005

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221026

R150 Certificate of patent or registration of utility model

Ref document number: 7167194

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150