(57)【要約】  方法は、異なるデバイスにわたって一貫した圧縮ビデオを生成する。方法は、出力ビットレートを識別することを含む。方法は、入力ビデオのパラメータを解析することをさらに含む。方法は、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオを生成することをさらに含む。方法は、デコーダへの入力としてブランクビデオを提供することに基づいて、代表的なビデオを生成することをさらに含む。方法は、代表的なビデオおよび出力ビットレートに基づいて、要求ビットレートを決定することをさらに含む。方法は、実際のビデオを生成するよう、要求ビットレートを使用して入力ビデオを圧縮することをさらに含む。
2021526747.tif 000002
【特許請求の範囲】
【請求項１】
異なるデバイスにわたって一貫した圧縮ビデオを生成する方法であって、前記方法は、
出力ビットレートを識別することと、
入力ビデオのパラメータを解析することと、
前記入力ビデオの前記パラメータに基づいて、固定持続時間を有するブランクビデオを生成することと、
デコーダへの入力として前記ブランクビデオを提供することに基づいて、代表的なビデオを生成することと、
前記代表的なビデオおよび前記出力ビットレートに基づいて、要求ビットレートを決定することと、
実際のビデオを生成するよう、前記要求ビットレートを使用して前記入力ビデオを圧縮することとを含む、方法。
【請求項２】
前記代表的なビデオを生成することは、前記代表的なビデオ上に幾何学的テクスチャを生成することを含み、
前記要求ビットレートを決定することは、前記代表的なビデオの代表的なビットレートを前記出力ビットレートと比較することを含み、
前記入力ビデオを圧縮することによって、前記実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる、請求項１に記載の方法。
【請求項３】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記方法はさらに、
（ａ）前記実際の幅および前記実際の高さが、前記出力幅および前記出力高さのしきい値幅値およびしきい値高さ値内にあることと、
（ｂ）前記実際のビデオのフレームの数が前記入力ビデオのフレームの数と同じ数であることと、
を確認することによって前記実際のビデオを照合することを含む、請求項２に記載の方法。
【請求項４】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記方法はさらに、
前記実際のビデオの前記実際のビットレートが前記出力ビットレートのしきい値ビットレート値内にあることを確認することによって、前記実際のビデオを照合することと、
前記実際のビットレートが前記しきい値ビットレート値内にないと決定することに応答して、前記パラメータを修正し、かつ、修正されたパラメータに基づいて、前記入力ビデオが前記出力幅および前記出力高さにより圧縮されることを要求することとを含む、請求項２に記載の方法。
【請求項５】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記入力ビデオは、前記出力幅および前記出力高さを使用してさらに圧縮される、請求項１に記載の方法。
【請求項６】
前記出力ビットレート、前記出力幅、および前記出力高さは、ユーザによって特定されるか、または、デフォルト値である、請求項５に記載の方法。
【請求項７】
前記入力ビデオを圧縮することは、１つ以上のオーディオストリームを前記実際のビデオに追加することを含み、
前記方法はさらに、
前記実際のビデオが前記１つ以上のオーディオストリームを含むことを確認するよう、前記入力ビデオを前記実際のビデオと比較することによって、前記実際のビデオを照合することと、
前記実際のビデオが前記１つ以上のオーディオストリームを含むことに失敗することに応答して、前記実際のビデオが失敗したと決定することとを含む、請求項１に記載の方法。
【請求項８】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記方法はさらに、
前記出力高さが乗算された前記出力幅が共通の解像度に等しいことを確認することによって前記実際のビデオを照合することと、
前記出力高さが乗算された前記出力幅が前記共通の解像度に等しくなることに失敗することに応答して、前記入力ビデオを圧縮するよう、より高いビットレートを使用することとを含む、請求項１に記載の方法。
【請求項９】
前記入力ビデオを圧縮することは、前記実際のビデオを生成するよう、前記入力ビデオからのメタデータをマージすることを含む、請求項１に記載の方法。
【請求項１０】
入力ビデオ画像フレームを前記実際のビデオ画像フレームと比較することによって、前記実際のビデオを照合することをさらに含み、
前記入力ビデオ画像フレームを前記実際のビデオ画像フレームと比較することは、各チャンネル値が０．０と１．０との間の浮動小数点数として表されるｃ個のチャンネルを含むサイズ（ｘ，ｙ）の両方の２つの画像ＳおよびＴが与えられると、差（ｘ，ｙ）が、すべてのチャンネルの和（Ｓ（ｘ，ｙ，チャンネル）−Ｔ（ｘ，ｙ，チャンネル））２に等しく、しきい値１または０を上回る場合、フィルタリングされた差（ｘ，ｙ）＝差（ｘ，ｙ）、そうでなければ、列（ｘ）＝フィルタリングされた差（ｘ，ｙ）／画像の高さのすべての値ｙについての和、行（ｙ）＝フィルタリングされた差（ｘ，ｙ）／画像の幅のｘのすべての値についての和、および、エラー＝上記で計算されたすべての列（ｘ）および行（ｙ）の最大値であることによる、請求項２に記載の方法。
【請求項１１】
命令が格納されている一時的でないコンピュータ読取可能媒体であって、前記命令は、１つ以上のコンピュータによって実行されると、１つ以上のコンピュータに、動作を実行することによって、異なるデバイスにわたって一貫性のある圧縮ビデオを生成させ、前記動作は、
出力ビットレートを識別することと、
入力ビデオのパラメータを解析することと、
前記入力ビデオの前記パラメータに基づいて、固定持続時間を有するブランクビデオを生成することと、
デコーダへの入力として前記ブランクビデオを提供することに基づいて、代表的なビデオを生成することと、
前記代表的なビデオおよび前記出力ビットレートに基づいて、要求ビットレートを決定することと、
実際のビデオを生成するよう、前記要求ビットレートを使用して前記入力ビデオを圧縮することとを含む、一時的でないコンピュータ読取可能媒体。
【請求項１２】
前記代表的なビデオを生成することは、前記代表的なビデオ上に幾何学的テクスチャを生成することを含み、
前記要求ビットレートを決定することは、前記代表的なビデオの代表的なビットレートを前記出力ビットレートと比較することを含み、
前記入力ビデオを圧縮することによって、前記実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる、請求項１１に記載のコンピュータ読取可能媒体。
【請求項１３】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
（ａ）前記実際の幅および前記実際の高さが、前記出力幅および前記出力高さのしきい値幅値およびしきい値高さ値内にあることと、
（ｂ）前記実際のビデオのフレームの数が前記入力ビデオのフレームの数と同じ数であることと、
を確認することによって前記実際のビデオを照合することを含む、請求項１２に記載のコンピュータ読取可能媒体。
【請求項１４】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
前記実際のビデオの前記実際のビットレートが前記出力ビットレートのしきい値ビットレート値内にあることを確認することによって、前記実際のビデオを照合することと、
前記実際のビットレートが前記しきい値ビットレート値内にないと決定することに応答して、前記パラメータを修正し、かつ、修正されたパラメータに基づいて、前記入力ビデオが前記出力幅および前記出力高さにより圧縮されることを要求することとを含む、請求項１２に記載のコンピュータ読取可能媒体。
【請求項１５】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記入力ビデオは、前記出力幅および前記出力高さを使用してさらに圧縮される、請求項１１に記載のコンピュータ読取可能媒体。
【請求項１６】
異なるデバイスにわたって一貫した圧縮ビデオを生成するシステムであって、前記システムは、
１つ以上のプロセッサと、
命令を格納するメモリとを含み、前記命令は、１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに動作を実行させ、
前記動作は、
出力ビットレートを識別することと、
入力ビデオのパラメータを解析することと、
前記入力ビデオの前記パラメータに基づいて、固定持続時間を有するブランクビデオを生成することと、
デコーダへの入力として前記ブランクビデオを提供することに基づいて、代表的なビデオを生成することと、
前記代表的なビデオおよび前記出力ビットレートに基づいて、要求ビットレートを決定することと、
実際のビデオを生成するよう、前記要求ビットレートを使用して前記入力ビデオを圧縮することとを含む、システム。
【請求項１７】
前記代表的なビデオを生成することは、前記代表的なビデオ上に幾何学的テクスチャを生成することを含み、
前記要求ビットレートを決定することは、前記代表的なビデオの代表的なビットレートを前記出力ビットレートと比較することを含み、
前記入力ビデオを圧縮することによって、前記実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる、請求項１６に記載のシステム。
【請求項１８】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
（ａ）前記実際の幅および前記実際の高さが、前記出力幅および前記出力高さのしきい値幅値およびしきい値高さ値内にあることと、
（ｂ）前記実際のビデオのフレームの数が前記入力ビデオのフレームの数と同じ数であることと、
を確認することによって前記実際のビデオを照合することを含む、請求項１７に記載のシステム。
【請求項１９】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
前記実際のビデオの前記実際のビットレートが前記出力ビットレートのしきい値ビットレート値内にあることを確認することによって、前記実際のビデオを照合することと、
前記実際のビットレートが前記しきい値ビットレート値内にないと決定することに応答して、前記パラメータを修正し、かつ、修正されたパラメータに基づいて、前記入力ビデオが前記出力幅および前記出力高さにより圧縮されることを要求することとを含む、請求項１７に記載のシステム。
【請求項２０】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記入力ビデオは、前記出力幅および前記出力高さを使用してさらに圧縮される、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への参照
本出願は、２０１８年１１月２６日に出願され、安全かつデバイス間で一貫性のあるビデオ圧縮（SAFE AND CROSS DEVICE CONSISTENT VIDEO COMPRESSION）という名称を有する米国仮特許出願第６２／７７１，５５２号に対する優先権を主張しており、その内容は、本明細書において全文、参照により援用される。
【背景技術】
【０００２】
背景
本明細書は、異なるデバイスプラットフォームにわたって一貫性のある圧縮ビデオを生成するビデオアプリケーションに関する。
【０００３】
世界中の人々は、毎日何百万ものビデオをキャプチャする。ｎ分の１秒ごとにビデオをエンコードすることによって、ビデオファイルは大きくなる。たとえば、１秒当たり１６メガビット（Ｍｂｉｔ: megabit）でのエンコードによる１分間のビデオは、１２０メガバイト（ＭＢ: megabyte）になる。ビデオはしばしば、大きなファイルの格納または転送が非実用的であるかまたはコストが極めて高い、マーケットまたは条件においてキャプチャされる。たとえば、デバイスが２Ｇセルラ接続を使用する場合、または、デバイスストレージが非常に制限される場合である。この問題に対する可能なソリューションは、より小さい圧縮出力ビットレートへのビデオ圧縮を含む。
【０００４】
しかしながら、ソフトウェアデコーダおよびエンコーダが使用される場合、デバイスビデオ圧縮は、遅くなり得るか、エラーを含み得るか、または、一貫しないビットレートを有し得るので、ビデオ圧縮には問題がある。エラーは、たとえば、ビデオにおける緑のラインであり得る。ビットレートは、異なる会社によって製造されたデバイスについて異なり得、同じ入力に対して異なるビットレートが作り出され得る。可変性に加えて、ビデオのサイズがその品質と相関するので、より小さいサイズの圧縮ビデオを生成することは不利である。
【０００５】
本明細書において提供される背景の記載は、本開示の文脈を一般的に提示することを目的としている。この背景のセクションに記載されている範囲での現在名前が挙げられている発明者の業績、および、出願時において先行技術と見なされ得ない記載の局面は、本開示に対する先行技術として明示的にも暗黙的にも認められない。
【発明の概要】
【課題を解決するための手段】
【０００６】
概要
方法は、異なるデバイスにわたって一貫した圧縮ビデオを生成する。方法は、出力ビットレートを識別することを含む。方法は、出力ビットレートを識別することを含む。方法は、入力ビデオのパラメータを解析することをさらに含む。方法は、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオを生成することをさらに含む。方法は、デコーダへの入力としてブランクビデオを提供することに基づいて、代表的なビデオを生成することをさらに含む。方法は、代表的なビデオおよび出力ビットレートに基づいて、要求ビットレートを決定することをさらに含む。方法は、実際のビデオを生成するよう、要求ビットレートを使用して入力ビデオを圧縮することをさらに含む。
【０００７】
いくつかの実施形態では、代表的なビデオを生成することは、代表的なビデオ上に幾何学的テクスチャを生成することを含み、要求ビットレートを決定することは、代表的なビデオの代表的なビットレートを出力ビットレートと比較することを含み、入力ビデオを圧縮することによって、実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含む。動作はさらに、（ａ）実際の幅および実際の高さが、出力幅および出力高さのしきい値幅値およびしきい値高さ値内にあることと、（ｂ）実際のビデオのフレームの数が入力ビデオのフレームの数と同じ数であることと、を確認することによって実際のビデオを照合することを含み得る。動作はさらに、実際のビデオの実際のビットレートが出力ビットレートのしきい値ビットレート値内にあることを確認することによって、実際のビデオを照合することと、実際のビットレートがしきい値ビットレート値内にないと決定することに応答して、パラメータを修正し、かつ、修正されたパラメータに基づいて、入力ビデオが出力幅および出力高さにより圧縮されることを要求することを含み得る。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、入力ビデオは、出力幅および出力高さを使用してさらに圧縮される。いくつかの実施形態では、出力ビットレート、出力幅、および出力高さは、ユーザによって特定されるか、または、デフォルト値である。いくつかの実施形態では、入力ビデオを圧縮することは、１つ以上のオーディオストリームを実際のビデオに追加することを含み、方法はさらに、実際のビデオが１つ以上のオーディオストリームを含むことを確認するよう、入力ビデオを実際のビデオと比較することによって、実際のビデオを照合することと、実際のビデオが１つ以上のオーディオストリームを含むことに失敗することに応答して、実際のビデオが失敗したと決定することとを含む。動作は、さらに、出力高さが乗算された出力幅が共通の解像度に等しいことを確認することによって実際のビデオを照合することと、出力高さが乗算された出力幅が共通の解像度に等しくなることに失敗することに応答して、入力ビデオを圧縮するよう、より高いビットレートを使用することとを含み得る。動作では、入力ビデオが圧縮されることを要求することは、実際のビデオを含むよう、入力ビデオからのメタデータをマージすることを含み得る。動作はさらに、入力ビデオ画像フレームを実際のビデオ画像フレームと比較することによって、実際のビデオを照合することを含み得、入力ビデオ画像フレームを実際のビデオ画像フレームと比較することは、各チャンネル値が０．０と１．０との間の浮動小数点数として表されるｃ個のチャンネルを含むサイズ（ｘ，ｙ）の両方の２つの画像ＳおよびＴが与えられると、差（ｘ，ｙ）が、すべてのチャンネルの和（Ｓ（ｘ，ｙ，チャンネル）−Ｔ（ｘ，ｙ，チャンネル））２に等しく、しきい値１または０を上回る場合、フィルタリングされた差（ｘ，ｙ）＝差（ｘ，ｙ）、そうでなければ、列（ｘ）＝フィルタリングされた差（ｘ，ｙ）／画像の高さのすべての値ｙについての和、行（ｙ）＝フィルタリングされた差（ｘ，ｙ）／画像の幅のｘのすべての値についての和、および、エラー＝上記で計算されたすべての列（ｘ）および行（ｙ）の最大値であることによる。
【０００８】
いくつかの実施形態では、命令が格納されている一時的でないコンピュータ読取可能媒体であって、命令は、１つ以上のコンピュータによって実行されると、１つ以上のコンピュータに、動作を実行することによって、異なるデバイスにわたって一貫性のある圧縮ビデオを生成させ、動作は、出力ビットレートを識別することと、入力ビデオのパラメータを解析することと、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオを生成することと、デコーダへの入力としてブランクビデオを提供することに基づいて、代表的なビデオを生成することと、代表的なビデオおよび出力ビットレートに基づいて、要求ビットレートを決定することと、実際のビデオを生成するよう、要求ビットレートを使用して入力ビデオを圧縮することとを含む。
【０００９】
いくつかの実施形態では、代表的なビデオを生成することは、代表的なビデオ上に幾何学的テクスチャを生成することを含み、要求ビットレートを決定することは、代表的なビデオの代表的なビットレートを出力ビットレートと比較することを含み、入力ビデオを圧縮することによって、実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含む。動作はさらに、（ａ）実際の幅および実際の高さが、出力幅および出力高さのしきい値幅値およびしきい値高さ値内にあることと、（ｂ）実際のビデオのフレームの数が入力ビデオのフレームの数と同じ数であることと、を確認することによって実際のビデオを照合することを含み得る。動作はさらに、実際のビデオの実際のビットレートが出力ビットレートのしきい値ビットレート値内にあることを確認することによって、実際のビデオを照合することと、実際のビットレートがしきい値ビットレート値内にないと決定することに応答して、パラメータを修正し、かつ、修正されたパラメータに基づいて、入力ビデオが出力幅および出力高さにより圧縮されることを要求することとを含み得る。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、入力ビデオは、出力幅および出力高さを使用してさらに圧縮される。
【００１０】
いくつかの実施形態では、システムは、異なるデバイスにわたって一貫した圧縮ビデオを生成し、システムは、１つ以上のプロセッサと、命令を格納するメモリとを含み、命令は、１つ以上のプロセッサによって実行されると、１つ以上のプロセッサに動作を実行させ、動作は、出力ビットレートを識別することと、入力ビデオのパラメータを解析することと、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオを生成することと、デコーダへの入力としてブランクビデオを提供することに基づいて、代表的なビデオを生成することと、代表的なビデオおよび出力ビットレートに基づいて、要求ビットレートを決定することと、実際のビデオを生成するよう、要求ビットレートを使用して入力ビデオを圧縮することとを含む。
【００１１】
いくつかの実施形態では、代表的なビデオを生成することは、代表的なビデオ上に幾何学的テクスチャを生成することを含み、要求ビットレートを決定することは、代表的なビデオの代表的なビットレートを出力ビットレートと比較することを含み、入力ビデオを圧縮することによって、実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含む。動作はさらに、（ａ）実際の幅および実際の高さが、出力幅および出力高さのしきい値幅値およびしきい値高さ値内にあることと、（ｂ）実際のビデオのフレームの数が入力ビデオのフレームの数と同じ数であることと、を確認することによって実際のビデオを照合することを含み得る。動作はさらに、実際のビデオの実際のビットレートが出力ビットレートのしきい値ビットレート値内にあることを確認することによって、実際のビデオを照合することと、実際のビットレートがしきい値ビットレート値内にないと決定することに応答して、パラメータを修正し、かつ、修正されたパラメータに基づいて、入力ビデオが出力幅および出力高さにより圧縮されることを要求することとを含み得る。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、入力ビデオは、出力幅および出力高さを使用してさらに圧縮される。
【００１２】
以下に記載されるさまざまな実施形態は、ビデオを受信するデバイスとは独立して、同様の解像度および同様のビットレートを有する圧縮ビデオを生成する態様を有利に記載する。
【００１３】
本開示は、同様の参照番号が同様の要素を指すために使用される添付の図面において、例として示されており、限定として示されていない。
【図面の簡単な説明】
【００１４】
【図１】いくつかの実施形態に従った圧縮ビデオを生成する例示的なシステムのブロック図を示す図である。
【図２】いくつかの実施形態に従った圧縮ビデオを生成する例示的なデバイスのブロック図を示す図である。
【図３】いくつかの実施形態に従った圧縮ビデオを生成する別の例示的な方法のフローチャートを示す図である。
【図４】いくつかの実施形態に従った圧縮ビデオを生成する別の例示的な方法のフローチャートを示す図である。
【発明を実施するための形態】
【００１５】
詳細な説明
ビデオアプリケーションは、実際のビデオを生成するよう、入力ビデオを圧縮する要求を受信し得る。当該要求は、実際のビデオの実際のビットレートを取得するために使用される要求ビットレートを含む。要求ビットレートは、実際のビデオの実際のビットレートとは異なり得るが、要求ビットレートによって実際のビデオが実際のビットレートを有することになるのでエンコーダに提供される。以下に記載されるプロセスの結果、ビデオアプリケーションは、ビデオを受信するデバイスとは独立して、同様の解像度および同様のビットレートを有する圧縮ビデオを生成する。
【００１６】
いくつかの実施形態において、ビデオアプリケーションは、入力ビデオのパラメータを解析する。当該パラメータは、入力幅、入力高さおよび入力フォーマットを含む。ビデオアプリケーションは、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオを生成する。ビデオアプリケーションは、デコーダへの入力としてブランクビデオを提供することに基づいて、代表的なビデオを生成する。ビデオアプリケーションは、特定された出力幅および出力高さで入力ビデオを圧縮する。
【００１７】
例示的なシステム
図１は、圧縮ビデオを生成する例示的なシステム１００のブロック図を示す。示されるシステム１００は、ビデオサーバ１０１と、ユーザデバイス１１５ａと、ユーザデバイス１１５ｎと、第２のサーバ１２０と、ネットワーク１０５とを含む。ユーザ１２５ａはユーザデバイス１１５ａに関連付けられ得、ユーザ１２５ｎはユーザデバイス１１５ｎに関連付けられ得る。いくつかの実施形態では、システム１００は、図１に示されていない他のサーバまたはデバイスを含んでもよい。図１および残りの図において、たとえば「１０３ａ」といった参照番号の後の文字は、その特定の参照番号を有する要素に対する参照を表す。たとえば「１０３」といった後に続く文字がない、テキスト中の参照番号は、その参照番号を有する要素の実施形態への一般的な参照を表す。１つのビデオサーバ１０１、１つのユーザデバイス１１５ａ、１つのユーザデバイス１１５ｎ、１つの第２のサーバ１２０、および１つのネットワーク１０５のみが図１に示されているが、当業者は、図１が１つ以上のビデオサーバ１０１、１つ以上のユーザデバイス１１５ａ、１つ以上のユーザデバイス１１５ｎ、１つ以上の第２のサーバ１２０、および１つ以上のネットワーク１０５を含み得ることを認識するであろう。
【００１８】
ビデオサーバ１０１は、プロセッサ、メモリ、およびネットワーク通信能力を含み得る。いくつかの実施形態では、ビデオサーバ１０１はハードウェアサーバである。ビデオサーバ１０１は、信号線１０２を介してネットワーク１０５に通信可能に結合される。信号線１０２は、イーサネット（登録商標）、同軸ケーブル、光ファイバケーブルなどの有線接続であってもよく、または、Ｗｉ−Ｆｉ（登録商標）、ブルートゥース（登録商標）もしくは他の無線技術などの無線接続であってもよい。いくつかの実施形態では、ビデオサーバ１０１は、ネットワーク１０５を介して、ユーザデバイス１１５ａ、ユーザデバイス１１５ｎ、および第２のサーバ１２０のうちの１つ以上との間でデータを送受信する。ビデオサーバ１０１は、ビデオアプリケーション１０３ａおよびデータベース１９９を含み得る。
【００１９】
ビデオアプリケーション１０３ａは、圧縮ビデオをユーザデバイス１１５ａ，１１５ｎに提供するように動作可能なコードおよびルーチンであり得る。いくつかの実施形態では、ビデオアプリケーション１０３ａは、たとえば、ビデオサーバ１０１上のデータベース１９９または第２のサーバ１２０から入力ビデオを受信する。ビデオアプリケーション１０３ａは、入力ビデオを較正し得、入力ビデオを圧縮ビデオに圧縮し得、圧縮ビデオが予想される属性を有することを照合し得る。たとえば、ビデオアプリケーション１０３ａは、圧縮ビデオが、デフォルト値として提供される解像度およびビットレートまたはユーザによって提供される解像度およびビットレートに合致する解像度およびビットレートを有することを確認し得る。入力ビデオを圧縮することは、入力ビデオからメタデータをコピーし、圧縮ビデオに当該メタデータを追加することを含み得る。
【００２０】
いくつかの実施形態では、ビデオアプリケーション１０３ａは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ: field-programmable gate array）または特定用途向け集積回路（ＡＳＩＣ: application-specific integrated circuit）を含むハードウェアを使用して実現され得る。いくつかの実施形態では、ビデオアプリケーション１０３ａは、ハードウェアおよびソフトウェアの組み合わせを使用して実現され得る。
【００２１】
データベース１９９は、入力ビデオ、ブランクビデオ、代表的なビデオ、および実際のビデオを格納し得る。データベース１９９はさらに、ユーザ１２５ａ，１２５ｎに関連付けられるソーシャルネットワークデータ、ユーザ１２５ａおよび／またはユーザ１２５ｎについてのユーザプレファレンスなどを格納し得る。
【００２２】
ユーザデバイス１１５ａは、メモリおよびハードウェアプロセッサを含むコンピューティングデバイスであり得る。たとえば、ユーザデバイス１１５ａは、デスクトップコンピュータ、モバイルデバイス、タブレットコンピュータ、携帯電話、ウェアラブルデバイス、ヘッドマウントディスプレイ、モバイル電子メールデバイス、ポータブルゲームプレーヤ、ポータブル音楽プレーヤ、リーダデバイス、または、ネットワーク１０５にアクセス可能な別の電子デバイスを含み得る。
【００２３】
示される実現例では、ユーザデバイス１１５ａは、信号線１０８を介してネットワーク１０５に結合され、ユーザデバイス１１５ｎは、信号線１１０を介してネットワーク１０５に結合される。信号線１０８および１１０は、イーサネット（登録商標）、同軸ケーブル、光ファイバケーブルなどの有線接続であってもよく、または、Ｗｉ−Ｆｉ（登録商標）、ブルートゥース（登録商標）、もしくは他の無線技術などの無線接続であってもよい。ユーザデバイス１１５ａはユーザ１２５ａによってアクセスされ、ユーザデバイス１１５ｎはユーザ１２５ｎによってアクセスされる。
【００２４】
いくつかの実施形態では、ユーザデバイス１１５ａは、ユーザ１２５ａによって着用されるウェアラブルデバイスに含まれる。たとえば、ユーザデバイス１１５ａは、クリップ（たとえばリストバンド）の部分、ジュエリーの部分、または眼鏡の部分として含まれる。別の例では、ユーザデバイス１１５ａはスマートウォッチであり得る。ユーザ１２５ａは、ユーザ１２５ａによって着用されるデバイスのディスプレイ上で、ビデオアプリケーション１０３に関連付けられるデータを閲覧し得る。たとえば、ビデオアプリケーション１０３ａは、スマートウォッチまたはスマートリストバンドのディスプレイ上で実際のビデオを表示し得る。
【００２５】
いくつかの実施形態では、ビデオアプリケーション１０３ｂは、ユーザデバイス１１５ａ上に格納され得る。ビデオアプリケーション１０３ｂは、ビデオサーバ１０１から実際のビデオを受信し、ユーザデバイス１１５ａのディスプレイ上に実際のビデオを表示するように動作可能であり得る。
【００２６】
ユーザデバイス１１５ｎは、メモリおよびハードウェアプロセッサを含むコンピューティングデバイスであり得る。たとえば、ユーザデバイス１１５ｎは、デスクトップコンピュータ、モバイルデバイス、タブレットコンピュータ、携帯電話、ウェアラブルデバイス、ヘッドマウントディスプレイ、モバイル電子メールデバイス、ポータブルゲームプレーヤ、ポータブル音楽プレーヤ、リーダデバイス、または、ネットワーク１０５にアクセス可能な別の電子デバイスを含み得る。
【００２７】
いくつかの実施形態では、ユーザデバイス１１５ｎは、ビデオアプリケーション１０３ｃを含む。ビデオアプリケーション１０３ｃは、実際のビデオを受信し、ユーザデバイス１１５ｎのディスプレイ上に実際のビデオを表示するように動作可能であり得る。ユーザデバイス１１５ｎに表示される実際のビデオは、ユーザデバイス１１５ａに表示される実際のビデオと同じ解像度およびサイズを有し得る。
【００２８】
第２のサーバ１２０は、プロセッサ、メモリ、およびネットワーク通信能力を含み得る。第２のサーバ１２０は、信号線１０９を介してネットワーク１０５にアクセスし得る。第２のサーバ１２０は、ビデオサーバ１０１、ユーザデバイス１１５ａおよび／またはユーザデバイス１１５ｎにサービスを提供し得る。たとえば、第２のサーバ１２０は、入力ビデオを生成し得、当該入力ビデオを圧縮のためにビデオサーバ１０１に提供し得る。
【００２９】
示される実現例では、システム１００のエンティティは、ネットワーク１０５を介して通信可能に結合される。ネットワーク１０５は、従来のタイプであってよく、有線または無線であってもよく、スター構成（star configuration）、トークンリング構成（token ring configuration）、または、他の構成を含む多くの異なる構成を有してもよい。さらに、ネットワーク１０５は、ローカルエリアネットワーク（ＬＡＮ: local area network）、ワイドエリアネットワーク（ＷＡＮ: wide area network）（たとえば、インターネット）、および／または、複数のデバイスが通信し得る他の相互接続されたデータパスを含んでもよい。いくつかの実施形態では、ネットワーク１０５は、ピアツーピアネットワークであってもよい。ネットワーク１０５はさらに、さまざまな異なる通信プロトコルでデータを送信するためのテレコミュニケーションネットワークの部分に結合されてもよく、または、当該テレコミュニケーションネットワークの部分を含んでもよい。いくつかの実施形態では、ネットワーク１０５は、ブルートゥース（登録商標）通信ネットワーク、ＷｉＦｉ（登録商標）、ＩＥＥＥ９０２．１１によって特定されるワイヤレスローカルエリアネットワーク（ＷＬＡＮ: wireless local area network）コンピュータ通信、または、ショートメッセージングサービス（ＳＭＳ: short messaging service）、マルチメディアメッセージングサービス（ＭＭＳ: multimedia messaging service）、ハイパーテキスト転送プロトコル（ＨＴＴＰ: hypertext transfer protocol）、ダイレクトデータ接続、電子メールなどを介してデータを送受信するためのセルラ通信ネットワークを含む。図１は、ユーザデバイス１１５およびビデオサーバ１０１に結合される１つのネットワーク１０５を示すが、実際には、１つ以上のネットワーク１０５がこれらのエンティティに結合されてもよい。
【００３０】
例示的なデバイス
図２は、いくつかの実施形態に従った、圧縮ビデオを生成する例示的なビデオサーバ１０１のブロック図を示す。図２はビデオサーバ１０１として示されているが、機能のいくつかまたはすべてが、全体的または部分的にユーザデバイス１１５ａ，１１５ｎによって実行されてもよい。ビデオサーバ１０１は、プロセッサ２３５、メモリ２３７、通信ユニット２３９、およびデータベース１９９を含み得る。ステップが全てビデオサーバ１０１またはユーザデバイス１１５によって実行されるか否かに依存して、付加的なコンポーネントが存在してもよく、または、前述のコンポーネントのうちのいくつかが省略されてもよい。
【００３１】
ビデオサーバ１０１は、ビデオアプリケーション１０３ａをメモリ２３７に格納し得る。ビデオサーバ１０１がウェアラブルデバイスである実施形態では、ビデオサーバ１０１はデータベース１９９を含まなくてもよい。いくつかの実施形態では、ビデオサーバ１０１は、バッテリなど、ここに列挙されていない他のコンポーネントを含んでもよい。ビデオサーバ１０１のコンポーネントは、バス２２０によって通信可能に結合され得る。
【００３２】
プロセッサ２３５は、演算を実行するとともにディスプレイデバイスに命令を提供するために、演算論理ユニット、マイクロプロセッサ、汎用コントローラ、または、何らかの他のプロセッサアレイを含む。プロセッサ２３５は、データを処理し、コンプレックスインストラクションセットコンピュータ（ＣＩＳＣ: complex instruction set computer）アーキテクチャ、リデュースドインストラクションセットコンピュータ（ＲＩＳＣ: reduced instruction set computer）アーキテクチャ、または、命令セットの組み合わせを実現するアーキテクチャを含むさまざまなコンピューティングアーキテクチャを含み得る。図２は単一のプロセッサ２３５を含むが、複数のプロセッサ２３５が含まれてもよい。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、および物理的構成がユーザデバイス１１５ａの部分であってもよい。プロセッサ２３５は、信号線２２２を介して他のコンポーネントとの通信のためにバス２２０に結合される。
【００３３】
メモリ２３７は、プロセッサ２３５によって実行され得る命令および／またはデータを格納する。命令は、本明細書において記載される技術を実行するためのコードを含み得る。メモリ２３７は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ: dynamic random access memory）デバイス、スタティックＲＡＭ、または、何らかの他のメモリデバイスであってもよい。いくつかの実施形態では、メモリ２３７はさらに、スタティックランダムアクセスメモリ（ＳＲＡＭ: static random access memory）デバイスもしくはフラッシュメモリなどの不揮発性メモリ、または、ハードディスクドライブ、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ: compact disc read only memory）デバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、もしくは、より持続的に情報を格納するための何らかの他の大容量記憶デバイスを含む同様の持続的記憶デバイスおよび媒体を含む。メモリ２３７は、以下でより詳細に記載されるビデオアプリケーション１０３を実行するよう動作可能なコードおよびルーチンを含む。メモリ２３７は、信号線２２４を介して他のコンポーネントとの通信のためにバス２２０に結合される。
【００３４】
通信ユニット２３９は、ビデオアプリケーション１０３がどこに格納され得るかに依存して、ユーザデバイス１１５ａおよびビデオサーバ１０１の少なくとも一方との間でデータの送受信を行う。いくつかの実施形態では、通信ユニット２３９は、ネットワーク１０５または別の通信チャンネルへの直接的な物理接続のためのポートを含む。たとえば、通信ユニット２３９は、ビデオアプリケーション１０３がどこに格納され得るかに依存して、ユーザデバイス１１５ａまたはビデオサーバ１０１との有線通信のためのユニバーサルシリアルバス（ＵＳＢ）、セキュアデジタル（ＳＤ）、カテゴリ５ケーブル（ＣＡＴ−５）、または、同様のポートを含む。いくつかの実施形態では、通信ユニット２３９は、ＩＥＥＥ８０２．１１、ＩＥＥＥ８０２．１６、ブルートゥース（登録商標）、または別の好適な無線通信方法を含む１つ以上の無線通信方法を使用して、ユーザデバイス１１５ａ、ビデオサーバ１０１、または他の通信チャンネルとデータを交換するための無線トランシーバを含む。通信ユニット２３９は、信号線２２６を介して他のコンポーネントとの通信のためにバス２２０に結合される。
【００３５】
いくつかの実施形態では、通信ユニット２３９は、ショートメッセージングサービス（ＳＭＳ: short messaging service）、マルチメディアメッセージングサービス（ＭＭＳ: multimedia messaging service）、ハイパーテキスト転送プロトコル（ＨＴＴＰ: hypertext transfer protocol）、ダイレクトデータ接続、電子メール、または別の好適なタイプの電子通信を介して、セルラ通信ネットワークによりデータを送信および受信するためのセルラ通信トランシーバを含む。いくつかの実施形態では、通信ユニット２３９は、有線ポートおよび無線トランシーバを含む。通信ユニット２３９はさらに、ユーザデータグラムプロトコル（ＵＤＰ: user datagram protocol）、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＨＴＴＰセキュア（ＨＴＴＰＳ）、簡易メール転送プロトコル（ＳＭＴＰ: simple mail transfer protocol）、ＳＰＤＹ、クイックＵＤＰインターネットコネクションズ（ＱＵＩＣ: quick UDP internet connections）などを含むがこれらに限定されない標準的なネットワークプロトコルを使用して、ファイルおよび／またはメディアオブジェクトの配信のために他の従来の接続をネットワーク１０５に提供する。
【００３６】
データベース１９９は、図１を参照して上述した機能を提供するデータを格納する一時的でないコンピュータ読取可能記憶媒体であってもよい。データベース１９９は、ＤＲＡＭデバイス、ＳＲＡＭデバイス、フラッシュメモリ、または何らかの他のメモリデバイスであってもよい。いくつかの実施形態では、データベース１９９はさらに、不揮発性メモリまたは同様の持続的記憶デバイスおよび媒体を含む。当該不揮発性メモリまたは同様の持続的記憶デバイスおよび媒体は、ハードディスクドライブ、ＣＤ−ＲＯＭデバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、または持続的に情報を格納するための何らかの他の大容量記憶デバイスを含む。データベース１９９は、信号線２３６を介して他のコンポーネントとの通信のためにバス２２０に結合される。
【００３７】
ビデオアプリケーション１０３ａは、エンコーダ２０２およびデコーダ２０４を含み得る。
【００３８】
エンコーダ２０２は、圧縮を通じてビデオをエンコードするためのコードおよびルーチンを含み得る。いくつかの実施形態では、エンコーダ２０２は、ビデオをエンコードするようプロセッサ２３５によって実行可能な命令のセットを含む。いくつかの実施形態では、エンコーダは、ビデオサーバ１０１のメモリ２３７に格納され、プロセッサ２３５によってアクセス可能かつ実行可能である。
【００３９】
いくつかの実施形態では、エンコーダ２０２は、入力ビデオを較正し、入力ビデオを圧縮ビデオに圧縮し、入力ビデオからのメタデータを圧縮ビデオに追加し、圧縮ビデオが適切な属性を有することを照合する。
【００４０】
エンコーダ２０２は、解像度Ｗ（Ｉ）×Ｈ（Ｉ）およびビットレートＢ（Ｉ）の入力ビデオＶ（Ｉ）を受信し得る。目標は、入力ビデオＶ（Ｉ）を圧縮して、解像度Ｗ（Ｏ）×Ｈ（Ｏ）および出力ビットレートＢ（Ｏ）に基づいて実際のビデオを生成することである。いくつかの実施形態では、解像度Ｗ（Ｏ）×Ｈ（Ｏ）は、ファイルサイズが低減された出力ビデオＶ（Ｏ）を得るという目標に基づいて、ユーザによって特定されるか、または、デフォルト解像度である。入力ビデオと比較して実際のビデオのファイルサイズを低減するためには、Ｗ（Ｏ）×Ｈ（Ｏ）はＷ（Ｉ）×Ｈ（Ｉ）よりも小さくなければならず、および／または、Ｂ（Ｏ）はＢ（Ｉ）よりも小さくなければならない。
【００４１】
エンコーダ２０２は、以下の問題を解決することにより較正を行う。入力ビデオの圧縮は、ビデオ圧縮を実行して出力ビットレートＢ（Ｏ）を生成するようにエンコーダ２０２に要求することを必要とする。しかしながら、エンコーダ２０２は、出力ビットレートＢ（Ｏ）と実質的に異なり得るビットレートＢ（Ｘ）を生成する。その結果、エンコーダは、出力ビットレートＢ（Ｏ）に可能な限り近いビットレートを達成するために、どの要求ビットレートＢ（Ｙ）が要求されるべきかを決定するように較正を実行する。
【００４２】
その結果、エンコーダ２０２は、入力ビデオＶ（Ｉ）のパラメータを解析する。入力ビデオＶ（Ｉ）の入力幅Ｗ（Ｉ）、入力高さＨ（Ｉ）、入力フォーマット、入力フレームレートＦ（Ｉ）に基づき要求ビットレートＢ（Ｙ）が大きく変化するので、これらのパラメータは較正に有用である。
【００４３】
エンコーダ２０２は、Ｗ（Ｉ）、Ｈ（Ｉ）、フレームレートＦ（Ｉ）、および、入力ビデオのフォーマットを使用して、固定持続時間Ｄ（Ｂ）を有する代表的なブランクビデオＶ（Ｂ）を生成する。固定持続時間Ｄ（Ｂ）は、このステップが迅速に行なわれ得るように選択されるが、短くなりすぎないように選択される。たとえば、固定持続時間Ｄ（Ｂ）は２〜１２秒の間であってもよい。エンコーダは、より短いビデオを最適化する傾向があり、これは不正確な較正につながる。代わりに、エンコーダ２０２は、Ｆ（Ｉ）×Ｄ（Ｂ）のブラックフレーム（black frame）をレンダリングすることによってブランクビデオを生成する。これは、当該ブランクビデオが非常に迅速かつ小さなファイルサイズで生成され得るからである。
【００４４】
エンコーダ２０２は、デコーダ２０４への入力としてブランクビデオＶ（Ｂ）を使用して代表的なビデオＶ（Ｐ）を生成する。デコーダおよびエンコーダは、有効な入力ビデオが代表的なビデオを生成するために必要とされるようにしばしばペアリングされる。Ｖ（Ｐ）上に幾何学的テクスチャを生成するためにＯｐｅｎＧＬのようなグラフィクスフレームワークが使用される。テクスチャは、フレームごとに色を変化させ、実際のビデオの内容を模倣する。生成後、代表的なビデオのＶ（Ｐ）のビットレートが出力ビットレートＢ（Ｏ）と比較され、これにより、要求ビットレートＢ（Ｙ）が決定され得る。
【００４５】
エンコーダ２０２は、以前のステップにおいて決定された要求ビットレートＢ（Ｙ）により入力ビデオＶ（Ｉ）をＷ（Ｏ）×Ｈ（Ｏ）に圧縮するように要求し、解像度幅Ｗ（Ａ）×高さＨ（Ａ）および実際のビットレートＢ（Ａ）を有する実際のビデオＶ（Ａ）を得る。エンコーダ２０２はさらに、このステップにおいて、オーディオストリームをコピーしてもよい。
【００４６】
エンコーダ２０２は、入力ビデオＩ（Ｖ）と実際のビデオＶ（Ａ）とを比較することによって照合を行う。いくつかの実施形態では、エンコーダ２０２は、実際の幅および実際の高さが、出力幅および出力高さのしきい値幅値およびしきい値高さ値内にあるか否かを決定する。実際の幅および実際の高さがしきい値幅値内にない場合、エンコーダ２０２は、圧縮プロセスが失敗したと決定し得る。いくつかの実施形態では、エンコーダ２０２は、実際のビデオのフレーム数が入力ビデオのフレーム数と同じ数であるか否かを決定する。実際のビデオのフレーム数が入力ビデオのフレーム数と同じ数でない場合、エンコーダ２０２は、圧縮プロセスが失敗したと決定し得る。
【００４７】
いくつかの実施形態では、エンコーダ２０２は、実際のビデオの実際のビットレートが出力ビットレートのしきい値ビットレート値内にあることを確認することによって、実際のビデオを照合する。実際のビットレートがしきい値ビットレート値内にない場合、エンコーダ２０２は、パラメータを修正し、修正されたパラメータに基づいて、入力ビデオが出力幅および出力高さにより圧縮されることを要求し得る。たとえば、エンコーダ２０２は、代表的なビデオについてより長い固定持続時間を使用し得る。
【００４８】
エンコーダ２０２が、１つ以上のオーディオストリームを実際のビデオに追加した場合または追加することを試みた場合、エンコーダ２０２は、入力ビデオを実際のビデオと比較し、実際のビデオが１つ以上のオーディオストリームを含むことを確認し得る。実際のビデオが１つ以上のオーディオストリームを含むことに失敗している場合、エンコーダ２０２は、実際のビデオが、プロセスの開始時に特定された解像度およびビットレートを有することに失敗したと決定し得る。たとえば、解像度およびビットレートは、デフォルト値でもよく、または、ユーザによって特定されてもよい。
【００４９】
いくつかの実施形態では、エンコーダ２０２は、入力ビデオを実際のビデオと比較し、出力高さで乗算された出力幅が共通の解像度に等しいことを確認し得る。エンコーダ２０２は、すべてのフレームまたはフレームのサブセットに対してこの比較を実行し得る。出力高さで乗算された出力幅が共通の解像度と等しくなることに失敗している場合、エンコーダ２０２は、より高いビットレートを使用して入力ビデオを圧縮し得る。エンコーダ２０２は、新しい実際のビデオを生成するとともに、新しい実際のビデオが照合ステップを満たすか否かを確認し得る。
【００５０】
多くのエンコーダは、ビデオがキーフレームおよびデルタフレームという２つ以上の異なるタイプのフレームからなる態様でビデオフォーマットをエンコードする。キーフレームは、フレーム内の画像の完全な表現であり、以前のフレームに依存しない。逆に、デルタフレームは、現在のフレームと以前のフレームとの間の差をエンコードする。
【００５１】
エンコーダがフレームのサブセットのみを比較する状況では、時間を節約するために、エンコーダ２０２は、あるフレームのレンダリングをスキップする。しかしながら、入力ビデオおよび実際のビデオのためのキーフレームは異なる位置に配置されてもよい。結果として、いくつかの実施形態では、エンコーダ２０２は、比較されるべき各フレームについて、入力ビデオおよび実際のビデオの両方におけるキーフレームより前の最も近いキーフレームを決定し、デコーダ２０４が、比較に必要とされるフレームに到達する前に、キーフレームおよびその後のすべてのデルタフレームをデコードすることを確実にする。
【００５２】
エンコーダ２０２は、異なる技術を使用して、フレーム内の実際の画像を比較し得る。比較に関連付けられる一般的なエラーが存在するので、特定的には、ビデオの左端といったビデオ内のラインが変色するエラーが存在するので、エンコーダ２０２は、以下の比較を実行し得る。
【００５３】
各チャンネル値が０．０と１．０との間の浮動小数点数として表されるｃ個のチャンネルを含むサイズ（ｘ、ｙ）の両方の２つの画像ＳおよびＴが与えられると、エンコーダ２０２は、
すべてのチャンネルの和（Ｓ（ｘ，ｙ，チャンネル）−Ｔ（ｘ，ｙ，チャンネル））２に等しいとして、差（ｘ，ｙ）を計算し、
しきい値１または０を上回る場合、フィルタリングされた差（ｘ，ｙ）＝差（ｘ，ｙ）を計算し、そうでなければ、
列（ｘ）＝フィルタリングされた差（ｘ，ｙ）／画像の高さのすべての値ｙについての和、
行（ｙ）＝フィルタリングされた差（ｘ，ｙ）／画像の幅のｘのすべての値についての和、
エラー＝上記で計算されたすべての列（ｘ）および行（ｙ）の最大値
を計算する。
【００５４】
エラーをしきい値と比較することによって、画像が十分に類似しているか否かを決定する。
【００５５】
エンコーダ２０２は、メタデータコピーを実行し得る。入力ビデオは、圧縮されると、何らかの付加的なメタデータ、たとえば、作成時間を失い得る。エンコーダ２０２は、実際のビデオを、入力ビデオからのすべての必要なメタデータにマージすることによって修正し得る。たとえば、作成時間に関して、入力ファイルがＭＰ４ファイルである場合、これは、実際のビデオを作成するよう入力ビデオからＭＶＨＤ、ＴＫＨＤ、およびＭＤＨＤアトムから作成時間をコピーすることからなり得る。
【００５６】
デコーダ２０４は、ビデオをデコードするためのコードおよびルーチンを含み得る。いくつかの実施形態では、デコーダ２０４は、ビデオをデコードするためにプロセッサ２３５によって実行可能な命令のセットを含む。いくつかの実施形態では、デコーダは、ビデオサーバ１０１のメモリ２３７に格納され、プロセッサ２３５によってアクセス可能であるとともに実行可能である。
【００５７】
いくつかの実施形態では、デコーダ２０４は、エンコーダ２０２からブランクビデオＶ（Ｂ）を受け取り、ブランクビデオをデコードし、デコードされたブランクビデオに関連付けられるパラメータをエンコーダに提供する。
【００５８】
例示的な方法
図３は、いくつかの実施形態に従った圧縮ビデオを生成するための例示的な方法３００のフローチャートを示す。方法３００は、ビデオサーバ１０１に格納されるビデオアプリケーション１０３ａと、図１のユーザデバイス１１５ａに格納されるビデオアプリケーション１０３ｂとの任意の組み合わせによって実行される。
【００５９】
ステップ３０２において、入力ビデオが較正される。たとえば、エンコーダ２０２は、出力ビットレートＢ（Ｏ）に可能な限り近いビットレートを達成するために、入力ビデオを圧縮して実際のビデオを生成する要求とともに、どの要求ビットレートＢ（Ｙ）がエンコーダ２０２に提供されるべきかを決定するように較正を実行する。
【００６０】
ステップ３０４において、入力ビデオは、出力幅および出力高さを使用して実際のビデオに圧縮される。いくつかの実施形態では、入力ビデオが実際のビデオに圧縮されるように要求することにより、実際の幅、実際の高さ、および実際のビットレートを有する実際のビデオが得られる。較正プロセスが良好に機能する場合、実際のビデオは、入力ビデオと同様の解像度（たとえば、実際の幅および実際の高さ）を有するはずである。
【００６１】
ステップ３０６では、実際のビデオが所定の基準を満たす属性を有することが照合される。たとえば、照合は、実際の幅および実際の高さが、出力幅および出力高さのしきい値幅値およびしきい値高さ値内にあることを確認することを含む。実際の幅および実際の高さがしきい値幅およびしきい値高さ内になければ、圧縮が失敗したと決定される。
【００６２】
図４は、いくつかの実施形態に従った圧縮ビデオを生成するための別の例示的な方法４００のフローチャートを示す。方法４００は、ビデオサーバ１０１に格納されたビデオアプリケーション１０３ａと、図１のユーザデバイス１１５ａに格納されたビデオアプリケーション１０３ｂとの任意の組み合わせによって実行される。
【００６３】
ステップ４０２において、出力ビットレートが識別される。出力ビットレートは、ユーザによって特定され得るか、または、デフォルト値であり得る。さらに、出力幅および出力高さが識別され得る。ステップ４０４において、入力ビデオのパラメータが解析される。パラメータは、入力幅、入力高さ、および入力フォーマットを含み得る。ステップ４０６では、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオが生成される。ステップ４０８において、代表的なビデオは、デコーダ２０４への入力としてブランクビデオを提供することに基づいて生成される。ステップ４１０において、代表的なビデオおよび出力ビットレートに基づいて要求ビットレートが決定される。たとえば、要求ビットレートは、代表的なビデオの代表的なビットレートを出力ビットレートと比較することによって決定されてもよい。ステップ４１２において、入力ビデオは、実際のビデオを生成するよう、要求ビットレートを使用して圧縮される。いくつかの実施形態では、入力ビデオは、出力幅および出力高さを使用してさらに圧縮され得る。
【００６４】
上記の記載では、本明細書の完全な理解を提供するために、説明の目的のために、多数の具体的な詳細が記載されている。しかしながら、本開示は、これらの具体的な詳細がなくても実施され得ることが当業者には明白であろう。いくつかの場合では、説明の不明瞭化を避けるために、構造およびデバイスがブロック図の形式で示されている。たとえば、実施形態は、主にユーザインターフェイスおよび特定のハードウェアを参照して上で記載され得る。しかしながら、実施形態は、データおよびコマンドを受信し得る任意のタイプのコンピューティングデバイス、ならびに、サービスを提供する任意の周辺デバイスに適用され得る。
【００６５】
本明細書における「いくつかの実施形態」または「いくつかの場合」への参照は、当該実施形態または例に関連して記載される特定の特徴、構造または特性が、記載の少なくとも１つの実現例に含まれ得ることを意味する。本明細書におけるさまざまな場所における「いくつかの実施形態では」という表現の出現は、必ずしもすべて同じ実施形態を参照しているわけではない。
【００６６】
上記詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する動作のアルゴリズムおよび記号表現に関して提示されている。これらのアルゴリズム的な記載および表現は、データ処理技術における当業者によって使用される手段であって、それらの作業の内容を他の当業者に最も効果的に伝える手段である。アルゴリズムは、ここでは一般的に、所望の結果に繋がるステップの自己一貫したシーケンスであると考えられる。ステップは、物理的な量の物理的な操作を必要とするものである。通常、必ずしも必要ではないが、これらの量は、格納、転送、組み合わせ、比較、および別の態様の操作が可能な電気的データまたは磁気的データの形態をとる。時には、主に一般的な使用の理由で、これらのデータをビット、値、要素、記号、文字、項または数などと称することが簡便であることが証明されている。
【００６７】
しかしながら、これらの用語および同様の用語の全ては、適切な物理的な量に関連付けられるべきであり、これらの量に適用される便利なラベルにすぎないことに留意されるべきである。以下の議論から明白なように別の態様で具体的に言及されない限り、当該記載全体にわたって、「処理」、「計算」、「演算」、「決定」または「表示」などを含む用語を利用する議論は、コンピュータシステムのレジスタおよびメモリ内の物理的（電子的）な量として表されるデータを操作し、コンピュータシステムメモリ、レジスタ、または、他のそのような情報記憶デバイス、送信デバイス、もしくはディスプレイデバイス内の物理的な量として同様に表される他のデータに変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスのアクションおよびプロセスを指すことが理解される。
【００６８】
本明細書の実施形態はさらに、上述の方法の１つ以上のステップを実行するためのプロセッサに関し得る。プロセッサは、コンピュータに格納されるコンピュータプログラムによって選択的にアクティベートまたは再構成される特殊目的のプロセッサであってもよい。そのようなコンピュータプログラムは、一時的でないコンピュータ読取可能記憶媒体に格納され得る。一時的でないコンピュータ読取可能記憶媒体は、各々がコンピュータシステムバスに結合される、光ディスク、ＲＯＭ、ＣＤ−ＲＯＭ、磁気ディスク、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カードもしくは光カード、不揮発性メモリを有するＵＳＢキーを含むフラッシュメモリを含む任意のタイプのディスク、または、電子的な命令を格納するのに好適な任意のタイプの媒体を含むが、これらに限定されない。
【００６９】
本明細書は、いくつかの完全にハードウェアの実施形態、いくつかの完全にソフトウェアの実施形態、または、ハードウェア要素およびソフトウェア要素の両方を含むいくつかの実施形態の形態をとり得る。いくつかの実施形態では、本明細書は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアにおいて実現される。
【００７０】
さらに、記載は、コンピュータもしくは任意の命令実行システムによる使用、または、コンピュータもしくは任意の命令実行システムに関連する使用のためのプログラムコードを提供するコンピュータ使用可能媒体またはコンピュータ読取可能媒体からアクセス可能なコンピュータプログラムプロダクトの形態をとり得る。この説明の目的のために、コンピュータ使用可能媒体またはコンピュータ読取可能媒体は、命令実行システム、装置もしくはデバイスによる使用または命令実行システム、装置もしくはデバイスに関連する使用のためのプログラムを包含、格納、通信、伝搬、または搬送し得る任意の装置であり得る。
【００７１】
プログラムコードを格納または実行するのに好適なデータ処理システムは、システムバスを介してメモリ要素に直接的または間接的に結合される少なくとも１つのプロセッサを含む。メモリ要素は、プログラムコードの実際の実行中に使用されるローカルメモリと、バルクストレージと、実行中にバルクストレージからコードを抽出しなければならない回数を低減するために少なくとも何らかのプログラムコードの一時的な格納を提供するキャッシュメモリとを含み得る。
【００７２】
上記で論じたシステムが個人情報を収集または使用する状況では、システムは、プログラムまたは機能がユーザ情報（たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションまたはアクティビティ、職業、ユーザのプレファレンス、またはユーザの現在位置についての情報）を収集するか否かをコントロールする機会をユーザに与えるか、または、ユーザにとってより関連性があり得るコンテンツをサーバから受信するか否か、および／もしくは、ユーザにとってより関連性があり得るコンテンツをどのように受信すべきかをコントロールする機会をユーザに与える。さらに、特定のデータは、個人を識別可能な情報が取り除かれるように、格納または使用される前に１つ以上の態様で処理され得る。たとえば、ユーザのアイデンティティは、ユーザについて個人を識別可能な情報が決定され得ないように扱われてもよく、または、ユーザの地理的位置は、位置情報が得られる場合、ユーザの特定の位置が決定され得ないように、（たとえば、市、ＺＩＰコード、もしくは州レベルまで）一般化されてもよい。したがって、ユーザは、どのように情報がユーザに関して収集されるかとともにどのように情報がサーバによって使用されるかについてのコントロールを有し得る。
【図１】
2021526747.tif 000003
【図２】
2021526747.tif 000004
【図３】
2021526747.tif 000005
【図４】
2021526747.tif 000006
【手続補正書】
【提出日】令和2年12月4日(2020.12.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
異なるデバイスにわたって一貫した圧縮ビデオを生成する方法であって、前記方法は、
出力ビットレートを識別することと、
入力ビデオのパラメータを解析することと、
前記入力ビデオの前記パラメータに基づいて、固定持続時間を有するブランクビデオを生成することと、
デコーダへの入力として前記ブランクビデオを提供することに基づいて、代表的なビデオを生成することと、
前記代表的なビデオおよび前記出力ビットレートに基づいて、要求ビットレートを決定することと、
実際のビデオを生成するよう、前記要求ビットレートを使用して前記入力ビデオを圧縮することとを含む、方法。
【請求項２】
前記代表的なビデオを生成することは、前記代表的なビデオ上に幾何学的テクスチャを生成することを含み、
前記要求ビットレートを決定することは、前記代表的なビデオの代表的なビットレートを前記出力ビットレートと比較することを含み、
前記入力ビデオを圧縮することによって、前記実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる、請求項１に記載の方法。
【請求項３】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記方法はさらに、
（ａ）前記実際の幅および前記実際の高さが、前記出力幅および前記出力高さのしきい値幅値およびしきい値高さ値内にあることと、
（ｂ）前記実際のビデオのフレームの数が前記入力ビデオのフレームの数と同じ数であることと、
を確認することによって前記実際のビデオを照合することを含む、請求項２に記載の方法。
【請求項４】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記方法はさらに、
前記実際のビデオの前記実際のビットレートが前記出力ビットレートのしきい値ビットレート値内にあることを確認することによって、前記実際のビデオを照合することと、
前記実際のビットレートが前記しきい値ビットレート値内にないと決定することに応答して、前記パラメータを修正し、かつ、修正されたパラメータに基づいて、前記入力ビデオが前記出力幅および前記出力高さにより圧縮されることを要求することとを含む、請求項２に記載の方法。
【請求項５】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記入力ビデオは、前記出力幅および前記出力高さを使用してさらに圧縮される、請求項１に記載の方法。
【請求項６】
前記出力ビットレート、前記出力幅、および前記出力高さは、ユーザによって特定されるか、または、デフォルト値である、請求項５に記載の方法。
【請求項７】
前記入力ビデオを圧縮することは、１つ以上のオーディオストリームを前記実際のビデオに追加することを含み、
前記方法はさらに、
前記実際のビデオが前記１つ以上のオーディオストリームを含むことを確認するよう、前記入力ビデオを前記実際のビデオと比較することによって、前記実際のビデオを照合することと、
前記実際のビデオが前記１つ以上のオーディオストリームを含むことに失敗することに応答して、前記実際のビデオが失敗したと決定することとを含む、請求項１に記載の方法。
【請求項８】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記方法はさらに、
前記出力高さが乗算された前記出力幅が共通の解像度に等しいことを確認することによって前記実際のビデオを照合することと、
前記出力高さが乗算された前記出力幅が前記共通の解像度に等しくなることに失敗することに応答して、前記入力ビデオを圧縮するよう、より高いビットレートを使用することとを含む、請求項１に記載の方法。
【請求項９】
前記入力ビデオを圧縮することは、前記実際のビデオを生成するよう、前記入力ビデオからのメタデータをマージすることを含む、請求項１に記載の方法。
【請求項１０】
入力ビデオ画像フレームを実際のビデオ画像フレームと比較することによって、前記実際のビデオを照合することをさらに含み、
前記入力ビデオ画像フレームを前記実際のビデオ画像フレームと比較することは、各チャンネル値が０．０と１．０との間の浮動小数点数として表されるｃ個のチャンネルを含むサイズ（ｘ，ｙ）の両方の２つの画像ＳおよびＴが与えられると、差（ｘ，ｙ）が、すべてのチャンネルの和（Ｓ（ｘ，ｙ，チャンネル）−Ｔ（ｘ，ｙ，チャンネル））２に等しく、しきい値１または０を上回る場合、フィルタリングされた差（ｘ，ｙ）＝差（ｘ，ｙ）、そうでなければ、列（ｘ）＝フィルタリングされた差（ｘ，ｙ）／画像の高さのすべての値ｙについての和、行（ｙ）＝フィルタリングされた差（ｘ，ｙ）／画像の幅のｘのすべての値についての和、および、エラー＝上記で計算されたすべての列（ｘ）および行（ｙ）の最大値であることによる、請求項２に記載の方法。
【請求項１１】
命令が格納されているコンピュータプログラムであって、前記命令は、１つ以上のコンピュータによって実行されると、前記１つ以上のコンピュータに、動作を実行することによって、異なるデバイスにわたって一貫性のある圧縮ビデオを生成させ、前記動作は、
出力ビットレートを識別することと、
入力ビデオのパラメータを解析することと、
前記入力ビデオの前記パラメータに基づいて、固定持続時間を有するブランクビデオを生成することと、
デコーダへの入力として前記ブランクビデオを提供することに基づいて、代表的なビデオを生成することと、
前記代表的なビデオおよび前記出力ビットレートに基づいて、要求ビットレートを決定することと、
実際のビデオを生成するよう、前記要求ビットレートを使用して前記入力ビデオを圧縮することとを含む、コンピュータプログラム。
【請求項１２】
前記代表的なビデオを生成することは、前記代表的なビデオ上に幾何学的テクスチャを生成することを含み、
前記要求ビットレートを決定することは、前記代表的なビデオの代表的なビットレートを前記出力ビットレートと比較することを含み、
前記入力ビデオを圧縮することによって、前記実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる、請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
（ａ）前記実際の幅および前記実際の高さが、前記出力幅および前記出力高さのしきい値幅値およびしきい値高さ値内にあることと、
（ｂ）前記実際のビデオのフレームの数が前記入力ビデオのフレームの数と同じ数であることと、
を確認することによって前記実際のビデオを照合することを含む、請求項１２に記載のコンピュータプログラム。
【請求項１４】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
前記実際のビデオの前記実際のビットレートが前記出力ビットレートのしきい値ビットレート値内にあることを確認することによって、前記実際のビデオを照合することと、
前記実際のビットレートが前記しきい値ビットレート値内にないと決定することに応答して、前記パラメータを修正し、かつ、修正されたパラメータに基づいて、前記入力ビデオが前記出力幅および前記出力高さにより圧縮されることを要求することとを含む、請求項１２に記載のコンピュータプログラム。
【請求項１５】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記入力ビデオは、前記出力幅および前記出力高さを使用してさらに圧縮される、請求項１１に記載のコンピュータプログラム。
【請求項１６】
異なるデバイスにわたって一貫した圧縮ビデオを生成するシステムであって、前記システムは、
１つ以上のプロセッサと、
命令を格納するメモリとを含み、前記命令は、前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに動作を実行させ、
前記動作は、
出力ビットレートを識別することと、
入力ビデオのパラメータを解析することと、
前記入力ビデオの前記パラメータに基づいて、固定持続時間を有するブランクビデオを生成することと、
デコーダへの入力として前記ブランクビデオを提供することに基づいて、代表的なビデオを生成することと、
前記代表的なビデオおよび前記出力ビットレートに基づいて、要求ビットレートを決定することと、
実際のビデオを生成するよう、前記要求ビットレートを使用して前記入力ビデオを圧縮することとを含む、システム。
【請求項１７】
前記代表的なビデオを生成することは、前記代表的なビデオ上に幾何学的テクスチャを生成することを含み、
前記要求ビットレートを決定することは、前記代表的なビデオの代表的なビットレートを前記出力ビットレートと比較することを含み、
前記入力ビデオを圧縮することによって、前記実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる、請求項１６に記載のシステム。
【請求項１８】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
（ａ）前記実際の幅および前記実際の高さが、前記出力幅および前記出力高さのしきい値幅値およびしきい値高さ値内にあることと、
（ｂ）前記実際のビデオのフレームの数が前記入力ビデオのフレームの数と同じ数であることと、
を確認することによって前記実際のビデオを照合することを含む、請求項１７に記載のシステム。
【請求項１９】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
前記実際のビデオの前記実際のビットレートが前記出力ビットレートのしきい値ビットレート値内にあることを確認することによって、前記実際のビデオを照合することと、
前記実際のビットレートが前記しきい値ビットレート値内にないと決定することに応答して、前記パラメータを修正し、かつ、修正されたパラメータに基づいて、前記入力ビデオが前記出力幅および前記出力高さにより圧縮されることを要求することとを含む、請求項１７に記載のシステム。
【請求項２０】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記入力ビデオは、前記出力幅および前記出力高さを使用してさらに圧縮される、請求項１６に記載のシステム。
【国際調査報告】
2021526747.tif 000007
2021526747.tif 000008