(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-25
(45)【発行日】2022-09-02
(54)【発明の名称】安全かつデバイス間で一貫性のあるビデオ圧縮
(51)【国際特許分類】
H04N 19/115 20140101AFI20220826BHJP
H04N 19/177 20140101ALI20220826BHJP
H04N 19/192 20140101ALI20220826BHJP
【FI】
H04N19/115
H04N19/177
H04N19/192
(21)【出願番号】P 2020546478
(86)(22)【出願日】2019-08-26
(86)【国際出願番号】 US2019048192
(87)【国際公開番号】W WO2020112193
(87)【国際公開日】2020-06-04
【審査請求日】2020-12-04
(32)【優先日】2018-11-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ファン・ダニエル
(72)【発明者】
【氏名】クレウスキ,クリストフ
【審査官】坂東 大五郎
(56)【参考文献】
【文献】特開2010-233119(JP,A)
【文献】特開2004-289867(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
異なるデバイスにわたって
同様の解像度および同様のビットレートを有する圧縮ビデオを生成する方法であって、前記方法は、
出力ビットレートを識別することと、
入力ビデオの
入力フレームレートを含むパラメータを解析することと、
前記入力ビデオの前記パラメータに基づいて、
前記入力フレームレートと固定持続時間
とを
有するブラックフレームをレンダリングすることによってブランクビデオを生成することと、
デコーダへの入力として前記ブランクビデオを提供
して、
代表的なビットレートを有する代表的なビデオを
出力することと、
前記代表的なビデオ
の前記代表的なビットレートを前記出力ビットレート
と比較することによって、
実際のビデオのビットレートが前記出力ビットレートに近づくように要求ビットレートを決定することと、
前記実際のビデオを生成するよう、前記要求ビットレートを使用して前記入力ビデオを圧縮することとを含む、方法。
【請求項2】
前記代表的なビデオを生成することは、前記代表的なビデオ上に幾何学的テクスチャを生成することを含
む、請求項1に記載の方法。
【請求項3】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記方法はさらに、
(a)前記実際
のビデオの幅および前記実際
のビデオの高さが、前記出力幅および前記出力高さのしきい値幅値およびしきい値高さ値内にあることと、
(b)前記実際のビデオのフレームの数が前記入力ビデオのフレームの数と同じ数であることと、
を確認することによって前記実際のビデオを照合することを含む、請求項2に記載の方法。
【請求項4】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記方法はさらに、
前記実際のビデオの前
記ビットレートが前記出力ビットレートのしきい値ビットレート値内にあることを確認することによって、前記実際のビデオを照合することと、
前記実際
のビデオの
前記ビットレートが前記しきい値ビットレート値内にないと決定することに応答して、前記パラメータを修正し、かつ、修正されたパラメータに基づいて、前記入力ビデオが前記出力幅および前記出力高さにより圧縮されることを要求することとを含む、請求項2に記載の方法。
【請求項5】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記入力ビデオは、前記出力幅および前記出力高さを使用してさらに圧縮される、請求項1に記載の方法。
【請求項6】
前記出力ビットレート、前記出力幅、および前記出力高さは、ユーザによって特定されるか、または、デフォルト値である、請求項5に記載の方法。
【請求項7】
前記入力ビデオを圧縮することは、1つ以上のオーディオストリームを前記実際のビデオに追加することを含み、
前記方法はさらに、
前記実際のビデオが前記1つ以上のオーディオストリームを含むことを確認するよう、前記入力ビデオを前記実際のビデオと比較することによって、前記実際のビデオを照合することと、
前記実際のビデオが前記1つ以上のオーディオストリームを含むことに失敗することに応答して、前記実際のビデオが失敗したと決定することとを含む、請求項1に記載の方法。
【請求項8】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記方法はさらに、
前記出力高さが乗算された前記出力幅が共通の解像度に等しいことを確認することによって前記実際のビデオを照合することと、
前記出力高さが乗算された前記出力幅が前記共通の解像度に等しくなることに失敗することに応答して、前記入力ビデオを圧縮するよう、より高いビットレートを使用することとを含む、請求項1に記載の方法。
【請求項9】
前記入力ビデオを圧縮することは、前記実際のビデオを生成するよう、前記入力ビデオからのメタデータをマージすることを含む、請求項1に記載の方法。
【請求項10】
入力ビデオ画像フレームを実際のビデオ画像フレームと比較することによって、前記実際のビデオを照合することをさらに含み、
前記入力ビデオ画像フレームを前記実際のビデオ画像フレームと比較することは、各チャンネル値が0.0と1.0との間の浮動小数点数として表されるc個のチャンネルを含むサイズ(x,y)の両方の2つの画像SおよびTが与えられると、差(x,y)が、すべてのチャンネルの和(S(x,y,チャンネル)-T(x,y,チャンネル))
2に等しく、しきい値
1を上回る場合
においてはフィルタリングされた差(x,y)=差(x,y)、そうでなければ
フィルタリングされた差(x,y)=0、列(x)=フィルタリングされた差(x,y)/画像の高さのすべての値yについての和、行(y)=フィルタリングされた差(x,y)/画像の幅のxのすべての値についての和、および、エラー=上記で計算されたすべての列(x)および行(y)の最大値であることによる、請求項2に記載の方法。
【請求項11】
命令が格納されているコンピュータプログラムであって、前記命令は、1つ以上のコンピュータによって実行されると、前記1つ以上のコンピュータに、動作を実行することによって、異なるデバイスにわたって
同様の解像度および同様のビットレートを有する圧縮ビデオを生成させ、前記動作は、
出力ビットレートを識別することと、
入力ビデオの
入力フレームレートを含むパラメータを解析することと、
前記入力ビデオの前記パラメータに基づいて、
前記入力フレームレートと固定持続時間
とを有する
ブラックフレームをレンダリングすることによってブランクビデオを生成することと、
デコーダへの入力として前記ブランクビデオを提供
して、
代表的なビットレートを有する代表的なビデオを
出力することと、
前記代表的なビデオ
の前記代表的なビットレートを前記出力ビットレート
と比較することによって、
実際のビデオのビットレートが前記出力ビットレートに近づくように要求ビットレートを決定することと、
前記実際のビデオを生成するよう、前記要求ビットレートを使用して前記入力ビデオを圧縮することとを含む、コンピュータプログラム。
【請求項12】
前記代表的なビデオを生成することは、前記代表的なビデオ上に幾何学的テクスチャを生成することを含
む、請求項11に記載のコンピュータプログラム。
【請求項13】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
(a)前記実際
のビデオの幅および前記実際
のビデオの高さが、前記出力幅および前記出力高さのしきい値幅値およびしきい値高さ値内にあることと、
(b)前記実際のビデオのフレームの数が前記入力ビデオのフレームの数と同じ数であることと、
を確認することによって前記実際のビデオを照合することを含む、請求項12に記載のコンピュータプログラム。
【請求項14】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
前記実際のビデオの前
記ビットレートが前記出力ビットレートのしきい値ビットレート値内にあることを確認することによって、前記実際のビデオを照合することと、
前記実際
のビデオの
前記ビットレートが前記しきい値ビットレート値内にないと決定することに応答して、前記パラメータを修正し、かつ、修正されたパラメータに基づいて、前記入力ビデオが前記出力幅および前記出力高さにより圧縮されることを要求することとを含む、請求項12に記載のコンピュータプログラム。
【請求項15】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記入力ビデオは、前記出力幅および前記出力高さを使用してさらに圧縮される、請求項11に記載のコンピュータプログラム。
【請求項16】
異なるデバイスにわたって
同様の解像度および同様のビットレートを有する圧縮ビデオを生成するシステムであって、前記システムは、
1つ以上のプロセッサと、
命令を格納するメモリとを含み、前記命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに動作を実行させ、
前記動作は、
出力ビットレートを識別することと、
入力ビデオの
入力フレームレートを含むパラメータを解析することと、
前記入力ビデオの前記パラメータに基づいて、
前記入力フレームレートと固定持続時間
とを
有するブラックフレームをレンダリングすることによってブランクビデオを生成することと、
デコーダへの入力として前記ブランクビデオを提供
して、
代表的なビットレートを有する代表的なビデオを
出力することと、
前記代表的なビデオ
の前記代表的なビットレートを前記出力ビットレート
と比較することによって、
実際のビデオのビットレートが前記出力ビットレートに近づくように要求ビットレートを決定することと、
前記実際のビデオを生成するよう、前記要求ビットレートを使用して前記入力ビデオを圧縮することとを含む、システム。
【請求項17】
前記代表的なビデオを生成することは、前記代表的なビデオ上に幾何学的テクスチャを生成することを含
む、請求項16に記載のシステム。
【請求項18】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
(a)前記実際
のビデオの幅および前記実際
のビデオの高さが、前記出力幅および前記出力高さのしきい値幅値およびしきい値高さ値内にあることと、
(b)前記実際のビデオのフレームの数が前記入力ビデオのフレームの数と同じ数であることと、
を確認することによって前記実際のビデオを照合することを含む、請求項17に記載のシステム。
【請求項19】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記動作はさらに、
前記実際のビデオの前
記ビットレートが前記出力ビットレートのしきい値ビットレート値内にあることを確認することによって、前記実際のビデオを照合することと、
前記実際
のビデオの
前記ビットレートが前記しきい値ビットレート値内にないと決定することに応答して、前記パラメータを修正し、かつ、修正されたパラメータに基づいて、前記入力ビデオが前記出力幅および前記出力高さにより圧縮されることを要求することとを含む、請求項17に記載のシステム。
【請求項20】
前記出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、
前記入力ビデオは、前記出力幅および前記出力高さを使用してさらに圧縮される、請求項16に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への参照
本出願は、2018年11月26日に出願され、安全かつデバイス間で一貫性のあるビデオ圧縮(SAFE AND CROSS DEVICE CONSISTENT VIDEO COMPRESSION)という名称を有する米国仮特許出願第62/771,552号に対する優先権を主張しており、その内容は、本明細書において全文、参照により援用される。
【背景技術】
【0002】
背景
本明細書は、異なるデバイスプラットフォームにわたって一貫性のある圧縮ビデオを生成するビデオアプリケーションに関する。
【0003】
世界中の人々は、毎日何百万ものビデオをキャプチャする。n分の1秒ごとにビデオをエンコードすることによって、ビデオファイルは大きくなる。たとえば、1秒当たり16メガビット(Mbit: megabit)でのエンコードによる1分間のビデオは、120メガバイト(MB: megabyte)になる。ビデオはしばしば、大きなファイルの格納または転送が非実用的であるかまたはコストが極めて高い、マーケットまたは条件においてキャプチャされる。たとえば、デバイスが2Gセルラ接続を使用する場合、または、デバイスストレージが非常に制限される場合である。この問題に対する可能なソリューションは、より小さい圧縮出力ビットレートへのビデオ圧縮を含む。
【0004】
しかしながら、ソフトウェアデコーダおよびエンコーダが使用される場合、デバイスビデオ圧縮は、遅くなり得るか、エラーを含み得るか、または、一貫しないビットレートを有し得るので、ビデオ圧縮には問題がある。エラーは、たとえば、ビデオにおける緑のラインであり得る。ビットレートは、異なる会社によって製造されたデバイスについて異なり得、同じ入力に対して異なるビットレートが作り出され得る。可変性に加えて、ビデオのサイズがその品質と相関するので、より小さいサイズの圧縮ビデオを生成することは不利である。
【0005】
本明細書において提供される背景の記載は、本開示の文脈を一般的に提示することを目的としている。この背景のセクションに記載されている範囲での現在名前が挙げられている発明者の業績、および、出願時において先行技術と見なされ得ない記載の局面は、本開示に対する先行技術として明示的にも暗黙的にも認められない。
【発明の概要】
【課題を解決するための手段】
【0006】
概要
方法は、異なるデバイスにわたって一貫した圧縮ビデオを生成する。方法は、出力ビットレートを識別することを含む。方法は、入力ビデオのパラメータを解析することをさらに含む。方法は、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオを生成することをさらに含む。方法は、デコーダへの入力としてブランクビデオを提供することに基づいて、代表的なビデオを生成することをさらに含む。方法は、代表的なビデオおよび出力ビットレートに基づいて、要求ビットレートを決定することをさらに含む。方法は、実際のビデオを生成するよう、要求ビットレートを使用して入力ビデオを圧縮することをさらに含む。
【0007】
いくつかの実施形態では、代表的なビデオを生成することは、代表的なビデオ上に幾何学的テクスチャを生成することを含み、要求ビットレートを決定することは、代表的なビデオの代表的なビットレートを出力ビットレートと比較することを含み、入力ビデオを圧縮することによって、実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含む。方法はさらに、(a)実際の幅および実際の高さが、出力幅および出力高さのしきい値幅値およびしきい値高さ値内にあることと、(b)実際のビデオのフレームの数が入力ビデオのフレームの数と同じ数であることと、を確認することによって実際のビデオを照合することを含み得る。方法はさらに、実際のビデオの実際のビットレートが出力ビットレートのしきい値ビットレート値内にあることを確認することによって、実際のビデオを照合することと、実際のビットレートがしきい値ビットレート値内にないと決定することに応答して、パラメータを修正し、かつ、修正されたパラメータに基づいて、入力ビデオが出力幅および出力高さにより圧縮されることを要求することを含み得る。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、入力ビデオは、出力幅および出力高さを使用してさらに圧縮される。いくつかの実施形態では、出力ビットレート、出力幅、および出力高さは、ユーザによって特定されるか、または、デフォルト値である。いくつかの実施形態では、入力ビデオを圧縮することは、1つ以上のオーディオストリームを実際のビデオに追加することを含み、方法はさらに、実際のビデオが1つ以上のオーディオストリームを含むことを確認するよう、入力ビデオを実際のビデオと比較することによって、実際のビデオを照合することと、実際のビデオが1つ以上のオーディオストリームを含むことに失敗することに応答して、実際のビデオが失敗したと決定することとを含む。方法は、さらに、出力高さが乗算された出力幅が共通の解像度に等しいことを確認することによって実際のビデオを照合することと、出力高さが乗算された出力幅が共通の解像度に等しくなることに失敗することに応答して、入力ビデオを圧縮するよう、より高いビットレートを使用することとを含み得る。方法では、入力ビデオが圧縮されることを要求することは、実際のビデオを含むよう、入力ビデオからのメタデータをマージすることを含み得る。方法はさらに、入力ビデオ画像フレームを実際のビデオ画像フレームと比較することによって、実際のビデオを照合することを含み得、入力ビデオ画像フレームを実際のビデオ画像フレームと比較することは、各チャンネル値が0.0と1.0との間の浮動小数点数として表されるc個のチャンネルを含むサイズ(x,y)の両方の2つの画像SおよびTが与えられると、差(x,y)が、すべてのチャンネルの和(S(x,y,チャンネル)-T(x,y,チャンネル))2に等しく、しきい値1を上回る場合においてはフィルタリングされた差(x,y)=差(x,y)、そうでなければフィルタリングされた差(x,y)=0、列(x)=フィルタリングされた差(x,y)/画像の高さのすべての値yについての和、行(y)=フィルタリングされた差(x,y)/画像の幅のxのすべての値についての和、および、エラー=上記で計算されたすべての列(x)および行(y)の最大値であることによる。
【0008】
いくつかの実施形態では、命令が格納されている一時的でないコンピュータ読取可能媒体であって、命令は、1つ以上のコンピュータによって実行されると、1つ以上のコンピュータに、動作を実行することによって、異なるデバイスにわたって一貫性のある圧縮ビデオを生成させ、動作は、出力ビットレートを識別することと、入力ビデオのパラメータを解析することと、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオを生成することと、デコーダへの入力としてブランクビデオを提供することに基づいて、代表的なビデオを生成することと、代表的なビデオおよび出力ビットレートに基づいて、要求ビットレートを決定することと、実際のビデオを生成するよう、要求ビットレートを使用して入力ビデオを圧縮することとを含む。
【0009】
いくつかの実施形態では、代表的なビデオを生成することは、代表的なビデオ上に幾何学的テクスチャを生成することを含み、要求ビットレートを決定することは、代表的なビデオの代表的なビットレートを出力ビットレートと比較することを含み、入力ビデオを圧縮することによって、実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含む。動作はさらに、(a)実際の幅および実際の高さが、出力幅および出力高さのしきい値幅値およびしきい値高さ値内にあることと、(b)実際のビデオのフレームの数が入力ビデオのフレームの数と同じ数であることと、を確認することによって実際のビデオを照合することを含み得る。動作はさらに、実際のビデオの実際のビットレートが出力ビットレートのしきい値ビットレート値内にあることを確認することによって、実際のビデオを照合することと、実際のビットレートがしきい値ビットレート値内にないと決定することに応答して、パラメータを修正し、かつ、修正されたパラメータに基づいて、入力ビデオが出力幅および出力高さにより圧縮されることを要求することとを含み得る。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、入力ビデオは、出力幅および出力高さを使用してさらに圧縮される。
【0010】
いくつかの実施形態では、システムは、異なるデバイスにわたって一貫した圧縮ビデオを生成し、システムは、1つ以上のプロセッサと、命令を格納するメモリとを含み、命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに動作を実行させ、動作は、出力ビットレートを識別することと、入力ビデオのパラメータを解析することと、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオを生成することと、デコーダへの入力としてブランクビデオを提供することに基づいて、代表的なビデオを生成することと、代表的なビデオおよび出力ビットレートに基づいて、要求ビットレートを決定することと、実際のビデオを生成するよう、要求ビットレートを使用して入力ビデオを圧縮することとを含む。
【0011】
いくつかの実施形態では、代表的なビデオを生成することは、代表的なビデオ上に幾何学的テクスチャを生成することを含み、要求ビットレートを決定することは、代表的なビデオの代表的なビットレートを出力ビットレートと比較することを含み、入力ビデオを圧縮することによって、実際のビデオが、実際の幅、実際の高さ、および実際のビットレートを有することになる。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含む。動作はさらに、(a)実際の幅および実際の高さが、出力幅および出力高さのしきい値幅値およびしきい値高さ値内にあることと、(b)実際のビデオのフレームの数が入力ビデオのフレームの数と同じ数であることと、を確認することによって実際のビデオを照合することを含み得る。動作はさらに、実際のビデオの実際のビットレートが出力ビットレートのしきい値ビットレート値内にあることを確認することによって、実際のビデオを照合することと、実際のビットレートがしきい値ビットレート値内にないと決定することに応答して、パラメータを修正し、かつ、修正されたパラメータに基づいて、入力ビデオが出力幅および出力高さにより圧縮されることを要求することとを含み得る。いくつかの実施形態では、出力ビットレートを識別することはさらに、出力幅および出力高さを識別することを含み、入力ビデオは、出力幅および出力高さを使用してさらに圧縮される。
【0012】
以下に記載されるさまざまな実施形態は、ビデオを受信するデバイスとは独立して、同様の解像度および同様のビットレートを有する圧縮ビデオを生成する態様を有利に記載する。
【0013】
本開示は、同様の参照番号が同様の要素を指すために使用される添付の図面において、例として示されており、限定として示されていない。
【図面の簡単な説明】
【0014】
【
図1】いくつかの実施形態に従った圧縮ビデオを生成する例示的なシステムのブロック図を示す図である。
【
図2】いくつかの実施形態に従った圧縮ビデオを生成する例示的なデバイスのブロック図を示す図である。
【
図3】いくつかの実施形態に従った圧縮ビデオを生成する別の例示的な方法のフローチャートを示す図である。
【
図4】いくつかの実施形態に従った圧縮ビデオを生成する別の例示的な方法のフローチャートを示す図である。
【発明を実施するための形態】
【0015】
詳細な説明
ビデオアプリケーションは、実際のビデオを生成するよう、入力ビデオを圧縮する要求を受信し得る。当該要求は、実際のビデオの実際のビットレートを取得するために使用される要求ビットレートを含む。要求ビットレートは、実際のビデオの実際のビットレートとは異なり得るが、要求ビットレートによって実際のビデオが実際のビットレートを有することになるのでエンコーダに提供される。以下に記載されるプロセスの結果、ビデオアプリケーションは、ビデオを受信するデバイスとは独立して、同様の解像度および同様のビットレートを有する圧縮ビデオを生成する。
【0016】
いくつかの実施形態において、ビデオアプリケーションは、入力ビデオのパラメータを解析する。当該パラメータは、入力幅、入力高さおよび入力フォーマットを含む。ビデオアプリケーションは、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオを生成する。ビデオアプリケーションは、デコーダへの入力としてブランクビデオを提供することに基づいて、代表的なビデオを生成する。ビデオアプリケーションは、特定された出力幅および出力高さで入力ビデオを圧縮する。
【0017】
例示的なシステム
図1は、圧縮ビデオを生成する例示的なシステム100のブロック図を示す。示されるシステム100は、ビデオサーバ101と、ユーザデバイス115aと、ユーザデバイス115nと、第2のサーバ120と、ネットワーク105とを含む。ユーザ125aはユーザデバイス115aに関連付けられ得、ユーザ125nはユーザデバイス115nに関連付けられ得る。いくつかの実施形態では、システム100は、
図1に示されていない他のサーバまたはデバイスを含んでもよい。
図1および残りの図において、たとえば「103a」といった参照番号の後の文字は、その特定の参照番号を有する要素に対する参照を表す。たとえば「103」といった後に続く文字がない、テキスト中の参照番号は、その参照番号を有する要素の実施形態への一般的な参照を表す。1つのビデオサーバ101、1つのユーザデバイス115a、1つのユーザデバイス115n、1つの第2のサーバ120、および1つのネットワーク105のみが
図1に示されているが、当業者は、
図1が1つ以上のビデオサーバ101、1つ以上のユーザデバイス115a、1つ以上のユーザデバイス115n、1つ以上の第2のサーバ120、および1つ以上のネットワーク105を含み得ることを認識するであろう。
【0018】
ビデオサーバ101は、プロセッサ、メモリ、およびネットワーク通信能力を含み得る。いくつかの実施形態では、ビデオサーバ101はハードウェアサーバである。ビデオサーバ101は、信号線102を介してネットワーク105に通信可能に結合される。信号線102は、イーサネット(登録商標)、同軸ケーブル、光ファイバケーブルなどの有線接続であってもよく、または、Wi-Fi(登録商標)、ブルートゥース(登録商標)もしくは他の無線技術などの無線接続であってもよい。いくつかの実施形態では、ビデオサーバ101は、ネットワーク105を介して、ユーザデバイス115a、ユーザデバイス115n、および第2のサーバ120のうちの1つ以上との間でデータを送受信する。ビデオサーバ101は、ビデオアプリケーション103aおよびデータベース199を含み得る。
【0019】
ビデオアプリケーション103aは、圧縮ビデオをユーザデバイス115a,115nに提供するように動作可能なコードおよびルーチンであり得る。いくつかの実施形態では、ビデオアプリケーション103aは、たとえば、ビデオサーバ101上のデータベース199または第2のサーバ120から入力ビデオを受信する。ビデオアプリケーション103aは、入力ビデオを較正し得、入力ビデオを圧縮ビデオに圧縮し得、圧縮ビデオが予想される属性を有することを照合し得る。たとえば、ビデオアプリケーション103aは、圧縮ビデオが、デフォルト値として提供される解像度およびビットレートまたはユーザによって提供される解像度およびビットレートに合致する解像度およびビットレートを有することを確認し得る。入力ビデオを圧縮することは、入力ビデオからメタデータをコピーし、圧縮ビデオに当該メタデータを追加することを含み得る。
【0020】
いくつかの実施形態では、ビデオアプリケーション103aは、フィールドプログラマブルゲートアレイ(FPGA: field-programmable gate array)または特定用途向け集積回路(ASIC: application-specific integrated circuit)を含むハードウェアを使用して実現され得る。いくつかの実施形態では、ビデオアプリケーション103aは、ハードウェアおよびソフトウェアの組み合わせを使用して実現され得る。
【0021】
データベース199は、入力ビデオ、ブランクビデオ、代表的なビデオ、および実際のビデオを格納し得る。データベース199はさらに、ユーザ125a,125nに関連付けられるソーシャルネットワークデータ、ユーザ125aおよび/またはユーザ125nについてのユーザプレファレンスなどを格納し得る。
【0022】
ユーザデバイス115aは、メモリおよびハードウェアプロセッサを含むコンピューティングデバイスであり得る。たとえば、ユーザデバイス115aは、デスクトップコンピュータ、モバイルデバイス、タブレットコンピュータ、携帯電話、ウェアラブルデバイス、ヘッドマウントディスプレイ、モバイル電子メールデバイス、ポータブルゲームプレーヤ、ポータブル音楽プレーヤ、リーダデバイス、または、ネットワーク105にアクセス可能な別の電子デバイスを含み得る。
【0023】
示される実現例では、ユーザデバイス115aは、信号線108を介してネットワーク105に結合され、ユーザデバイス115nは、信号線110を介してネットワーク105に結合される。信号線108および110は、イーサネット(登録商標)、同軸ケーブル、光ファイバケーブルなどの有線接続であってもよく、または、Wi-Fi(登録商標)、ブルートゥース(登録商標)、もしくは他の無線技術などの無線接続であってもよい。ユーザデバイス115aはユーザ125aによってアクセスされ、ユーザデバイス115nはユーザ125nによってアクセスされる。
【0024】
いくつかの実施形態では、ユーザデバイス115aは、ユーザ125aによって着用されるウェアラブルデバイスに含まれる。たとえば、ユーザデバイス115aは、クリップ(たとえばリストバンド)の部分、ジュエリーの部分、または眼鏡の部分として含まれる。別の例では、ユーザデバイス115aはスマートウォッチであり得る。ユーザ125aは、ユーザ125aによって着用されるデバイスのディスプレイ上で、ビデオアプリケーション103に関連付けられるデータを閲覧し得る。たとえば、ビデオアプリケーション103aは、スマートウォッチまたはスマートリストバンドのディスプレイ上で実際のビデオを表示し得る。
【0025】
いくつかの実施形態では、ビデオアプリケーション103bは、ユーザデバイス115a上に格納され得る。ビデオアプリケーション103bは、ビデオサーバ101から実際のビデオを受信し、ユーザデバイス115aのディスプレイ上に実際のビデオを表示するように動作可能であり得る。
【0026】
ユーザデバイス115nは、メモリおよびハードウェアプロセッサを含むコンピューティングデバイスであり得る。たとえば、ユーザデバイス115nは、デスクトップコンピュータ、モバイルデバイス、タブレットコンピュータ、携帯電話、ウェアラブルデバイス、ヘッドマウントディスプレイ、モバイル電子メールデバイス、ポータブルゲームプレーヤ、ポータブル音楽プレーヤ、リーダデバイス、または、ネットワーク105にアクセス可能な別の電子デバイスを含み得る。
【0027】
いくつかの実施形態では、ユーザデバイス115nは、ビデオアプリケーション103cを含む。ビデオアプリケーション103cは、実際のビデオを受信し、ユーザデバイス115nのディスプレイ上に実際のビデオを表示するように動作可能であり得る。ユーザデバイス115nに表示される実際のビデオは、ユーザデバイス115aに表示される実際のビデオと同じ解像度およびサイズを有し得る。
【0028】
第2のサーバ120は、プロセッサ、メモリ、およびネットワーク通信能力を含み得る。第2のサーバ120は、信号線109を介してネットワーク105にアクセスし得る。第2のサーバ120は、ビデオサーバ101、ユーザデバイス115aおよび/またはユーザデバイス115nにサービスを提供し得る。たとえば、第2のサーバ120は、入力ビデオを生成し得、当該入力ビデオを圧縮のためにビデオサーバ101に提供し得る。
【0029】
示される実現例では、システム100のエンティティは、ネットワーク105を介して通信可能に結合される。ネットワーク105は、従来のタイプであってよく、有線または無線であってもよく、スター構成(star configuration)、トークンリング構成(token ring configuration)、または、他の構成を含む多くの異なる構成を有してもよい。さらに、ネットワーク105は、ローカルエリアネットワーク(LAN: local area network)、ワイドエリアネットワーク(WAN: wide area network)(たとえば、インターネット)、および/または、複数のデバイスが通信し得る他の相互接続されたデータパスを含んでもよい。いくつかの実施形態では、ネットワーク105は、ピアツーピアネットワークであってもよい。ネットワーク105はさらに、さまざまな異なる通信プロトコルでデータを送信するためのテレコミュニケーションネットワークの部分に結合されてもよく、または、当該テレコミュニケーションネットワークの部分を含んでもよい。いくつかの実施形態では、ネットワーク105は、ブルートゥース(登録商標)通信ネットワーク、WiFi(登録商標)、IEEE902.11によって特定されるワイヤレスローカルエリアネットワーク(WLAN: wireless local area network)コンピュータ通信、または、ショートメッセージングサービス(SMS: short messaging service)、マルチメディアメッセージングサービス(MMS: multimedia messaging service)、ハイパーテキスト転送プロトコル(HTTP: hypertext transfer protocol)、ダイレクトデータ接続、電子メールなどを介してデータを送受信するためのセルラ通信ネットワークを含む。
図1は、ユーザデバイス115およびビデオサーバ101に結合される1つのネットワーク105を示すが、実際には、1つ以上のネットワーク105がこれらのエンティティに結合されてもよい。
【0030】
例示的なデバイス
図2は、いくつかの実施形態に従った、圧縮ビデオを生成する例示的なビデオサーバ101のブロック図を示す。
図2はビデオサーバ101として示されているが、機能のいくつかまたはすべてが、全体的または部分的にユーザデバイス115a,115nによって実行されてもよい。ビデオサーバ101は、プロセッサ235、メモリ237、通信ユニット239、およびデータベース199を含み得る。ステップが全てビデオサーバ101またはユーザデバイス115によって実行されるか否かに依存して、付加的なコンポーネントが存在してもよく、または、前述のコンポーネントのうちのいくつかが省略されてもよい。
【0031】
ビデオサーバ101は、ビデオアプリケーション103aをメモリ237に格納し得る。ビデオサーバ101がウェアラブルデバイスである実施形態では、ビデオサーバ101はデータベース199を含まなくてもよい。いくつかの実施形態では、ビデオサーバ101は、バッテリなど、ここに列挙されていない他のコンポーネントを含んでもよい。ビデオサーバ101のコンポーネントは、バス220によって通信可能に結合され得る。
【0032】
プロセッサ235は、演算を実行するとともにディスプレイデバイスに命令を提供するために、演算論理ユニット、マイクロプロセッサ、汎用コントローラ、または、何らかの他のプロセッサアレイを含む。プロセッサ235は、データを処理し、コンプレックスインストラクションセットコンピュータ(CISC: complex instruction set computer)アーキテクチャ、リデュースドインストラクションセットコンピュータ(RISC: reduced instruction set computer)アーキテクチャ、または、命令セットの組み合わせを実現するアーキテクチャを含むさまざまなコンピューティングアーキテクチャを含み得る。
図2は単一のプロセッサ235を含むが、複数のプロセッサ235が含まれてもよい。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、および物理的構成がユーザデバイス115aの部分であってもよい。プロセッサ235は、信号線222を介して他のコンポーネントとの通信のためにバス220に結合される。
【0033】
メモリ237は、プロセッサ235によって実行され得る命令および/またはデータを格納する。命令は、本明細書において記載される技術を実行するためのコードを含み得る。メモリ237は、ダイナミックランダムアクセスメモリ(DRAM: dynamic random access memory)デバイス、スタティックRAM、または、何らかの他のメモリデバイスであってもよい。いくつかの実施形態では、メモリ237はさらに、スタティックランダムアクセスメモリ(SRAM: static random access memory)デバイスもしくはフラッシュメモリなどの不揮発性メモリ、または、ハードディスクドライブ、コンパクトディスクリードオンリメモリ(CD-ROM: compact disc read only memory)デバイス、DVD-ROMデバイス、DVD-RAMデバイス、DVD-RWデバイス、フラッシュメモリデバイス、もしくは、より持続的に情報を格納するための何らかの他の大容量記憶デバイスを含む同様の持続的記憶デバイスおよび媒体を含む。メモリ237は、以下でより詳細に記載されるビデオアプリケーション103を実行するよう動作可能なコードおよびルーチンを含む。メモリ237は、信号線224を介して他のコンポーネントとの通信のためにバス220に結合される。
【0034】
通信ユニット239は、ビデオアプリケーション103がどこに格納され得るかに依存して、ユーザデバイス115aおよびビデオサーバ101の少なくとも一方との間でデータの送受信を行う。いくつかの実施形態では、通信ユニット239は、ネットワーク105または別の通信チャンネルへの直接的な物理接続のためのポートを含む。たとえば、通信ユニット239は、ビデオアプリケーション103がどこに格納され得るかに依存して、ユーザデバイス115aまたはビデオサーバ101との有線通信のためのユニバーサルシリアルバス(USB)、セキュアデジタル(SD)、カテゴリ5ケーブル(CAT-5)、または、同様のポートを含む。いくつかの実施形態では、通信ユニット239は、IEEE802.11、IEEE802.16、ブルートゥース(登録商標)、または別の好適な無線通信方法を含む1つ以上の無線通信方法を使用して、ユーザデバイス115a、ビデオサーバ101、または他の通信チャンネルとデータを交換するための無線トランシーバを含む。通信ユニット239は、信号線226を介して他のコンポーネントとの通信のためにバス220に結合される。
【0035】
いくつかの実施形態では、通信ユニット239は、ショートメッセージングサービス(SMS: short messaging service)、マルチメディアメッセージングサービス(MMS: multimedia messaging service)、ハイパーテキスト転送プロトコル(HTTP: hypertext transfer protocol)、ダイレクトデータ接続、電子メール、または別の好適なタイプの電子通信を介して、セルラ通信ネットワークによりデータを送信および受信するためのセルラ通信トランシーバを含む。いくつかの実施形態では、通信ユニット239は、有線ポートおよび無線トランシーバを含む。通信ユニット239はさらに、ユーザデータグラムプロトコル(UDP: user datagram protocol)、TCP/IP、HTTP、HTTPセキュア(HTTPS)、簡易メール転送プロトコル(SMTP: simple mail transfer protocol)、SPDY、クイックUDPインターネットコネクションズ(QUIC: quick UDP internet connections)などを含むがこれらに限定されない標準的なネットワークプロトコルを使用して、ファイルおよび/またはメディアオブジェクトの配信のために他の従来の接続をネットワーク105に提供する。
【0036】
データベース199は、
図1を参照して上述した機能を提供するデータを格納する一時的でないコンピュータ読取可能記憶媒体であってもよい。データベース199は、DRAMデバイス、SRAMデバイス、フラッシュメモリ、または何らかの他のメモリデバイスであってもよい。いくつかの実施形態では、データベース199はさらに、不揮発性メモリまたは同様の持続的記憶デバイスおよび媒体を含む。当該不揮発性メモリまたは同様の持続的記憶デバイスおよび媒体は、ハードディスクドライブ、CD-ROMデバイス、DVD-ROMデバイス、DVD-RAMデバイス、DVD-RWデバイス、フラッシュメモリデバイス、または持続的に情報を格納するための何らかの他の大容量記憶デバイスを含む。データベース199は、信号線236を介して他のコンポーネントとの通信のためにバス220に結合される。
【0037】
ビデオアプリケーション103aは、エンコーダ202およびデコーダ204を含み得る。
【0038】
エンコーダ202は、圧縮を通じてビデオをエンコードするためのコードおよびルーチンを含み得る。いくつかの実施形態では、エンコーダ202は、ビデオをエンコードするようプロセッサ235によって実行可能な命令のセットを含む。いくつかの実施形態では、エンコーダは、ビデオサーバ101のメモリ237に格納され、プロセッサ235によってアクセス可能かつ実行可能である。
【0039】
いくつかの実施形態では、エンコーダ202は、入力ビデオを較正し、入力ビデオを圧縮ビデオに圧縮し、入力ビデオからのメタデータを圧縮ビデオに追加し、圧縮ビデオが適切な属性を有することを照合する。
【0040】
エンコーダ202は、解像度W(I)×H(I)およびビットレートB(I)の入力ビデオV(I)を受信し得る。目標は、入力ビデオV(I)を圧縮して、解像度W(O)×H(O)および出力ビットレートB(O)に基づいて実際のビデオを生成することである。いくつかの実施形態では、解像度W(O)×H(O)は、ファイルサイズが低減された出力ビデオV(O)を得るという目標に基づいて、ユーザによって特定されるか、または、デフォルト解像度である。入力ビデオと比較して実際のビデオのファイルサイズを低減するためには、W(O)×H(O)はW(I)×H(I)よりも小さくなければならず、および/または、B(O)はB(I)よりも小さくなければならない。
【0041】
エンコーダ202は、以下の問題を解決することにより較正を行う。入力ビデオの圧縮は、ビデオ圧縮を実行して出力ビットレートB(O)を生成するようにエンコーダ202に要求することを必要とする。しかしながら、エンコーダ202は、出力ビットレートB(O)と実質的に異なり得るビットレートB(X)を生成する。その結果、エンコーダは、出力ビットレートB(O)に可能な限り近いビットレートを達成するために、どの要求ビットレートB(Y)が要求されるべきかを決定するように較正を実行する。
【0042】
その結果、エンコーダ202は、入力ビデオV(I)のパラメータを解析する。入力ビデオV(I)の入力幅W(I)、入力高さH(I)、入力フォーマット、入力フレームレートF(I)に基づき要求ビットレートB(Y)が大きく変化するので、これらのパラメータは較正に有用である。
【0043】
エンコーダ202は、W(I)、H(I)、フレームレートF(I)、および、入力ビデオのフォーマットを使用して、固定持続時間D(B)を有する代表的なブランクビデオV(B)を生成する。固定持続時間D(B)は、このステップが迅速に行なわれ得るように選択されるが、短くなりすぎないように選択される。たとえば、固定持続時間D(B)は2~12秒の間であってもよい。エンコーダは、より短いビデオを最適化する傾向があり、これは不正確な較正につながる。代わりに、エンコーダ202は、F(I)×D(B)のブラックフレーム(black frame)をレンダリングすることによってブランクビデオを生成する。これは、当該ブランクビデオが非常に迅速かつ小さなファイルサイズで生成され得るからである。
【0044】
エンコーダ202は、デコーダ204への入力としてブランクビデオV(B)を使用して代表的なビデオV(P)を生成する。デコーダおよびエンコーダは、有効な入力ビデオが代表的なビデオを生成するために必要とされるようにしばしばペアリングされる。V(P)上に幾何学的テクスチャを生成するためにOpenGLのようなグラフィクスフレームワークが使用される。テクスチャは、フレームごとに色を変化させ、実際のビデオの内容を模倣する。生成後、代表的なビデオのV(P)のビットレートが出力ビットレートB(O)と比較され、これにより、要求ビットレートB(Y)が決定され得る。
【0045】
エンコーダ202は、以前のステップにおいて決定された要求ビットレートB(Y)により入力ビデオV(I)をW(O)×H(O)に圧縮するように要求し、解像度幅W(A)×高さH(A)および実際のビットレートB(A)を有する実際のビデオV(A)を得る。エンコーダ202はさらに、このステップにおいて、オーディオストリームをコピーしてもよい。
【0046】
エンコーダ202は、入力ビデオI(V)と実際のビデオV(A)とを比較することによって照合を行う。いくつかの実施形態では、エンコーダ202は、実際の幅および実際の高さが、出力幅および出力高さのしきい値幅値およびしきい値高さ値内にあるか否かを決定する。実際の幅および実際の高さがしきい値幅値およびしきい値高さ値内にない場合、エンコーダ202は、圧縮プロセスが失敗したと決定し得る。いくつかの実施形態では、エンコーダ202は、実際のビデオのフレーム数が入力ビデオのフレーム数と同じ数であるか否かを決定する。実際のビデオのフレーム数が入力ビデオのフレーム数と同じ数でない場合、エンコーダ202は、圧縮プロセスが失敗したと決定し得る。
【0047】
いくつかの実施形態では、エンコーダ202は、実際のビデオの実際のビットレートが出力ビットレートのしきい値ビットレート値内にあることを確認することによって、実際のビデオを照合する。実際のビットレートがしきい値ビットレート値内にない場合、エンコーダ202は、パラメータを修正し、修正されたパラメータに基づいて、入力ビデオが出力幅および出力高さにより圧縮されることを要求し得る。たとえば、エンコーダ202は、代表的なビデオについてより長い固定持続時間を使用し得る。
【0048】
エンコーダ202が、1つ以上のオーディオストリームを実際のビデオに追加した場合または追加することを試みた場合、エンコーダ202は、入力ビデオを実際のビデオと比較し、実際のビデオが1つ以上のオーディオストリームを含むことを確認し得る。実際のビデオが1つ以上のオーディオストリームを含むことに失敗している場合、エンコーダ202は、実際のビデオが、プロセスの開始時に特定された解像度およびビットレートを有することに失敗したと決定し得る。たとえば、解像度およびビットレートは、デフォルト値でもよく、または、ユーザによって特定されてもよい。
【0049】
いくつかの実施形態では、エンコーダ202は、入力ビデオを実際のビデオと比較し、出力高さで乗算された出力幅が共通の解像度に等しいことを確認し得る。エンコーダ202は、すべてのフレームまたはフレームのサブセットに対してこの比較を実行し得る。出力高さで乗算された出力幅が共通の解像度と等しくなることに失敗している場合、エンコーダ202は、より高いビットレートを使用して入力ビデオを圧縮し得る。エンコーダ202は、新しい実際のビデオを生成するとともに、新しい実際のビデオが照合ステップを満たすか否かを確認し得る。
【0050】
多くのエンコーダは、ビデオがキーフレームおよびデルタフレームという2つ以上の異なるタイプのフレームからなる態様でビデオフォーマットをエンコードする。キーフレームは、フレーム内の画像の完全な表現であり、以前のフレームに依存しない。逆に、デルタフレームは、現在のフレームと以前のフレームとの間の差をエンコードする。
【0051】
エンコーダがフレームのサブセットのみを比較する状況では、時間を節約するために、エンコーダ202は、あるフレームのレンダリングをスキップする。しかしながら、入力ビデオおよび実際のビデオのためのキーフレームは異なる位置に配置されてもよい。結果として、いくつかの実施形態では、エンコーダ202は、比較されるべき各フレームについて、入力ビデオおよび実際のビデオの両方におけるキーフレームより前の最も近いキーフレームを決定し、デコーダ204が、比較に必要とされるフレームに到達する前に、キーフレームおよびその後のすべてのデルタフレームをデコードすることを確実にする。
【0052】
エンコーダ202は、異なる技術を使用して、フレーム内の実際の画像を比較し得る。比較に関連付けられる一般的なエラーが存在するので、特定的には、ビデオの左端といったビデオ内のラインが変色するエラーが存在するので、エンコーダ202は、以下の比較を実行し得る。
【0053】
各チャンネル値が0.0と1.0との間の浮動小数点数として表されるc個のチャンネルを含むサイズ(x、y)の両方の2つの画像SおよびTが与えられると、エンコーダ202は、
すべてのチャンネルの和(S(x,y,チャンネル)-T(x,y,チャンネル))2に等しいとして、差(x,y)を計算し、
しきい値1を上回る場合においてはフィルタリングされた差(x,y)=差(x,y)を計算し、そうでなければフィルタリングされた差(x,y)=0、
列(x)=フィルタリングされた差(x,y)/画像の高さのすべての値yについての和、
行(y)=フィルタリングされた差(x,y)/画像の幅のxのすべての値についての和、
エラー=上記で計算されたすべての列(x)および行(y)の最大値
を計算する。
【0054】
エラーをしきい値と比較することによって、画像が十分に類似しているか否かを決定する。
【0055】
エンコーダ202は、メタデータコピーを実行し得る。入力ビデオは、圧縮されると、何らかの付加的なメタデータ、たとえば、作成時間を失い得る。エンコーダ202は、実際のビデオを、入力ビデオからのすべての必要なメタデータにマージすることによって修正し得る。たとえば、作成時間に関して、入力ファイルがMP4ファイルである場合、これは、実際のビデオを作成するよう入力ビデオからMVHD、TKHD、およびMDHDアトムから作成時間をコピーすることからなり得る。
【0056】
デコーダ204は、ビデオをデコードするためのコードおよびルーチンを含み得る。いくつかの実施形態では、デコーダ204は、ビデオをデコードするためにプロセッサ235によって実行可能な命令のセットを含む。いくつかの実施形態では、デコーダは、ビデオサーバ101のメモリ237に格納され、プロセッサ235によってアクセス可能であるとともに実行可能である。
【0057】
いくつかの実施形態では、デコーダ204は、エンコーダ202からブランクビデオV(B)を受け取り、ブランクビデオをデコードし、デコードされたブランクビデオに関連付けられるパラメータをエンコーダに提供する。
【0058】
例示的な方法
図3は、いくつかの実施形態に従った圧縮ビデオを生成するための例示的な方法300のフローチャートを示す。方法300は、ビデオサーバ101に格納されるビデオアプリケーション103aと、
図1のユーザデバイス115aに格納されるビデオアプリケーション103bとの任意の組み合わせによって実行される。
【0059】
ステップ302において、入力ビデオが較正される。たとえば、エンコーダ202は、出力ビットレートB(O)に可能な限り近いビットレートを達成するために、入力ビデオを圧縮して実際のビデオを生成する要求とともに、どの要求ビットレートB(Y)がエンコーダ202に提供されるべきかを決定するように較正を実行する。
【0060】
ステップ304において、入力ビデオは、出力幅および出力高さを使用して実際のビデオに圧縮される。いくつかの実施形態では、入力ビデオが実際のビデオに圧縮されるように要求することにより、実際の幅、実際の高さ、および実際のビットレートを有する実際のビデオが得られる。較正プロセスが良好に機能する場合、実際のビデオは、入力ビデオと同様の解像度(たとえば、実際の幅および実際の高さ)を有するはずである。
【0061】
ステップ306では、実際のビデオが所定の基準を満たす属性を有することが照合される。たとえば、照合は、実際の幅および実際の高さが、出力幅および出力高さのしきい値幅値およびしきい値高さ値内にあることを確認することを含む。実際の幅および実際の高さがしきい値幅およびしきい値高さ内になければ、圧縮が失敗したと決定される。
【0062】
図4は、いくつかの実施形態に従った圧縮ビデオを生成するための別の例示的な方法400のフローチャートを示す。方法400は、ビデオサーバ101に格納されたビデオアプリケーション103aと、
図1のユーザデバイス115aに格納されたビデオアプリケーション103bとの任意の組み合わせによって実行される。
【0063】
ステップ402において、出力ビットレートが識別される。出力ビットレートは、ユーザによって特定され得るか、または、デフォルト値であり得る。さらに、出力幅および出力高さが識別され得る。ステップ404において、入力ビデオのパラメータが解析される。パラメータは、入力幅、入力高さ、および入力フォーマットを含み得る。ステップ406では、入力ビデオのパラメータに基づいて、固定持続時間を有するブランクビデオが生成される。ステップ408において、代表的なビデオは、デコーダ204への入力としてブランクビデオを提供することに基づいて生成される。ステップ410において、代表的なビデオおよび出力ビットレートに基づいて要求ビットレートが決定される。たとえば、要求ビットレートは、代表的なビデオの代表的なビットレートを出力ビットレートと比較することによって決定されてもよい。ステップ412において、入力ビデオは、実際のビデオを生成するよう、要求ビットレートを使用して圧縮される。いくつかの実施形態では、入力ビデオは、出力幅および出力高さを使用してさらに圧縮され得る。
【0064】
上記の記載では、本明細書の完全な理解を提供するために、説明の目的のために、多数の具体的な詳細が記載されている。しかしながら、本開示は、これらの具体的な詳細がなくても実施され得ることが当業者には明白であろう。いくつかの場合では、説明の不明瞭化を避けるために、構造およびデバイスがブロック図の形式で示されている。たとえば、実施形態は、主にユーザインターフェイスおよび特定のハードウェアを参照して上で記載され得る。しかしながら、実施形態は、データおよびコマンドを受信し得る任意のタイプのコンピューティングデバイス、ならびに、サービスを提供する任意の周辺デバイスに適用され得る。
【0065】
本明細書における「いくつかの実施形態」または「いくつかの場合」への参照は、当該実施形態または例に関連して記載される特定の特徴、構造または特性が、記載の少なくとも1つの実現例に含まれ得ることを意味する。本明細書におけるさまざまな場所における「いくつかの実施形態では」という表現の出現は、必ずしもすべて同じ実施形態を参照しているわけではない。
【0066】
上記詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する動作のアルゴリズムおよび記号表現に関して提示されている。これらのアルゴリズム的な記載および表現は、データ処理技術における当業者によって使用される手段であって、それらの作業の内容を他の当業者に最も効果的に伝える手段である。アルゴリズムは、ここでは一般的に、所望の結果に繋がるステップの自己一貫したシーケンスであると考えられる。ステップは、物理的な量の物理的な操作を必要とするものである。通常、必ずしも必要ではないが、これらの量は、格納、転送、組み合わせ、比較、および別の態様の操作が可能な電気的データまたは磁気的データの形態をとる。時には、主に一般的な使用の理由で、これらのデータをビット、値、要素、記号、文字、項または数などと称することが簡便であることが証明されている。
【0067】
しかしながら、これらの用語および同様の用語の全ては、適切な物理的な量に関連付けられるべきであり、これらの量に適用される便利なラベルにすぎないことに留意されるべきである。以下の議論から明白なように別の態様で具体的に言及されない限り、当該記載全体にわたって、「処理」、「計算」、「演算」、「決定」または「表示」などを含む用語を利用する議論は、コンピュータシステムのレジスタおよびメモリ内の物理的(電子的)な量として表されるデータを操作し、コンピュータシステムメモリ、レジスタ、または、他のそのような情報記憶デバイス、送信デバイス、もしくはディスプレイデバイス内の物理的な量として同様に表される他のデータに変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスのアクションおよびプロセスを指すことが理解される。
【0068】
本明細書の実施形態はさらに、上述の方法の1つ以上のステップを実行するためのプロセッサに関し得る。プロセッサは、コンピュータに格納されるコンピュータプログラムによって選択的にアクティベートまたは再構成される特殊目的のプロセッサであってもよい。そのようなコンピュータプログラムは、一時的でないコンピュータ読取可能記憶媒体に格納され得る。一時的でないコンピュータ読取可能記憶媒体は、各々がコンピュータシステムバスに結合される、光ディスク、ROM、CD-ROM、磁気ディスク、RAM、EPROM、EEPROM、磁気カードもしくは光カード、不揮発性メモリを有するUSBキーを含むフラッシュメモリを含む任意のタイプのディスク、または、電子的な命令を格納するのに好適な任意のタイプの媒体を含むが、これらに限定されない。
【0069】
本明細書は、いくつかの完全にハードウェアの実施形態、いくつかの完全にソフトウェアの実施形態、または、ハードウェア要素およびソフトウェア要素の両方を含むいくつかの実施形態の形態をとり得る。いくつかの実施形態では、本明細書は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアにおいて実現される。
【0070】
さらに、記載は、コンピュータもしくは任意の命令実行システムによる使用、または、コンピュータもしくは任意の命令実行システムに関連する使用のためのプログラムコードを提供するコンピュータ使用可能媒体またはコンピュータ読取可能媒体からアクセス可能なコンピュータプログラムプロダクトの形態をとり得る。この説明の目的のために、コンピュータ使用可能媒体またはコンピュータ読取可能媒体は、命令実行システム、装置もしくはデバイスによる使用または命令実行システム、装置もしくはデバイスに関連する使用のためのプログラムを包含、格納、通信、伝搬、または搬送し得る任意の装置であり得る。
【0071】
プログラムコードを格納または実行するのに好適なデータ処理システムは、システムバスを介してメモリ要素に直接的または間接的に結合される少なくとも1つのプロセッサを含む。メモリ要素は、プログラムコードの実際の実行中に使用されるローカルメモリと、バルクストレージと、実行中にバルクストレージからコードを抽出しなければならない回数を低減するために少なくとも何らかのプログラムコードの一時的な格納を提供するキャッシュメモリとを含み得る。
【0072】
上記で論じたシステムが個人情報を収集または使用する状況では、システムは、プログラムまたは機能がユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションまたはアクティビティ、職業、ユーザのプレファレンス、またはユーザの現在位置についての情報)を収集するか否かをコントロールする機会をユーザに与えるか、または、ユーザにとってより関連性があり得るコンテンツをサーバから受信するか否か、および/もしくは、ユーザにとってより関連性があり得るコンテンツをどのように受信すべきかをコントロールする機会をユーザに与える。さらに、特定のデータは、個人を識別可能な情報が取り除かれるように、格納または使用される前に1つ以上の態様で処理され得る。たとえば、ユーザのアイデンティティは、ユーザについて個人を識別可能な情報が決定され得ないように扱われてもよく、または、ユーザの地理的位置は、位置情報が得られる場合、ユーザの特定の位置が決定され得ないように、(たとえば、市、ZIPコード、もしくは州レベルまで)一般化されてもよい。したがって、ユーザは、どのように情報がユーザに関して収集されるかとともにどのように情報がサーバによって使用されるかについてのコントロールを有し得る。