以下、本発明の目的、技術手段および利点をより明確にするために、本発明について図面および実施例を参照しながらさらに詳細に説明する。なお、ここに記載された具体的な実施例は、本発明を限定するものではなく、あくまでも本発明を解釈するためのものに過ぎない。
図1は、1つの実施例における動画ファイル処理方法の応用環境を示す図である。図1に示すように、当該動画ファイル処理方法は、動画ファイル処理システムに適用される。当該動画ファイル処理システムは、動画ファイルエクスポート端末110と、動画ファイルプレビュー端末120と、動画ファイル検証端末130と、動画ファイル再生端末140とを含む。
動画ファイルエクスポート端末110は、元動画ファイルに対応するビットマップ画像シーケンスを取得し、ビットマップ画像シーケンスにおけるビットマップ画像が非キービットマップ画像である場合、ビットマップ画像と対応するキービットマップ画像との差異画素領域をピクチャ符号化方式で符号化して、ビットマップ画像に対応する符号化ピクチャを得、ビットマップ画像シーケンスにおける各ビットマップ画像に対応する符号化ピクチャに基づいて、元動画ファイルに対応する動画エクスポートファイルを生成することができる。端末は、ビットマップ画像シーケンスにおけるビットマップ画像と対応するキービットマップ画像とに対して画素比較を行うことによって、ビットマップ画像における差異画素領域を得ることができる。動画エクスポートファイルは、目標フォーマットの動画ファイルであり、例えば、PAGフォーマットの動画ファイルであってもよい。
動画ファイルエクスポート端末110は、元動画ファイルに対応するビットマップ画像シーケンスを取得し、ビットマップ画像シーケンスにおける各ビットマップ画像をカラーチャネルビットマップと透明度チャネルビットマップとに区分し、カラーチャネルビットマップと透明度チャネルビットマップを合成して、合成ビットマップを得、合成ビットマップをビデオ符号化方式で符号化して、ビットマップ画像に対応する符号化ピクチャを得、ビットマップ画像シーケンスにおける各ビットマップ画像に対応する符号化ピクチャに基づいて、元動画ファイルに対応する動画エクスポートファイルを生成することもできる。
動画ファイルエクスポート端末110は、動画基本属性データおよび動画レイヤーデータを含む元動画ファイルの動画ベクトルデータを取得し、動画基本属性データおよび動画レイヤーデータを目標フォーマットのデータ構造で記憶して、元動画ファイルに対応する動画エクスポートファイルを得ることもできる。
動画ファイルプレビュー端末120は、標準マシンで動画の再生過程をシミュレーションして得られた消費時間基準値を取得し、ローカルで動画の再生過程をシミュレーションして得られた消費時間参照値を取得し、目標フォーマットの動画エクスポートファイルを再生して、対応するローカル消費時間パラメータを得、消費時間基準値および消費時間参照値に基づいてローカル消費時間パラメータに対して正規化処理を行って、動画エクスポートファイルの消費時間パラメータを得、そして、動画エクスポートファイルの消費時間パラメータおよびビデオメモリにおける動画エクスポートファイルの占用するサイズのうちの少なくとも1つを動画エクスポートファイルの性能パラメータとして動画エクスポートファイルに書き込むことができる。
動画ファイル検証端末130は、動画エクスポートファイルを取得し、動画エクスポートファイルを解析してバイナリデータを得、バイナリデータにおける性能パラメータ識別子を検索し、バイナリデータにおける性能パラメータ識別子に対応するデータブロックから動画ファイルの動作状況を示す性能パラメータを読み取り、性能パラメータに基づいて動画エクスポートファイルを検証することができる。
動画ファイル再生端末140は、検証に成功した動画エクスポートファイルを取得し、動画エクスポートファイルを解析して動画描画データを取得し、動画描画データに基づいて動画のレンダリングを行った後に動画エクスポートファイルに対応する再生画面を表示することができる。
なお、前記の動画ファイルエクスポート端末110、動画ファイルプレビュー端末120、動画ファイル検証端末130および動画ファイル再生端末140は、同一の端末であってもよいし、独立した端末であってもよく、独立した端末であれば、端末同士はネットワークを介して接続することができる。端末は、具体的に卓上型端末または携帯端末であってもよく、携帯端末は、具体的に携帯電話、タブレット、ノートパソコンなどのうちの少なくとも1種であってもよい。
図2に示すように、1つの具体的な実施例では、動画ファイルエクスポート端末110に動画ファイルエクスポートプラグインPAGExporterを動作させ、当該動画ファイルエクスポートプラグインは、AEクライアントのために開発された目標フォーマットの動画エクスポートファイルをエクスポートするためのものであってもよく、端末は、動画ファイルエクスポートプラグインPAGExporterによって元動画ファイル(xx.aep)を処理して、例えばPAGファイル(xx.PAG)などのような目標フォーマットの動画エクスポートファイルを得ることができる。エクスポート方式は、ベクトルエクスポート方式、ビットマップシーケンスフレームエクスポート方式およびビデオシーケンスフレームエクスポート方式を含み、ユーザは、そのうちの1種のエクスポート方式を選択してエクスポートすることができる。動画ファイルプレビュー端末120に、動画プレビューアPAGViewerを動作させ、動画プレビューアPAGViewerによって、動画ファイルエクスポート端末110を介してエクスポートして得られた動画エクスポートファイルをプレビューし、動画エクスポートファイルの消費時間パラメータを算出し、そして、消費時間パラメータおよびビデオメモリにおける動画エクスポートファイルの占用するサイズのうちの少なくとも1つを動画エクスポートファイルの性能パラメータとして動画エクスポートファイルに書き込むことができる。動画ファイル検証端末130は、動画エクスポートファイルの性能パラメータを検証することができ、検証に成功した場合、動画エクスポートファイルの性能パラメータが予め設定された条件に合致し、当該動画エクスポートファイルを正常に再生することができることを意味する。動画ファイル再生端末140には、動画ファイルを再生するためのソフトウェアツールであるPAG SDKがインストールされ、PAG SDKを動作させることによって動画エクスポートファイルを復号化するための復号化モジュールを実現することができる。そして、PAG SDKは、異なるエクスポート方式で得られた動画ファイルを異なる方式でレンダリングして再生するためのレンダリングモジュールを実現することもできる。
図3に示すように、1つの実施例は、動画ファイル処理方法を提供する。本実施例は、主に当該方法を前記の図1における動画ファイルエクスポート端末110に応用することを例として説明するが、以下では、説明の便宜のために、直接に端末として説明する。図3に示すように、当該画像ファイル処理方法は、具体的に以下のステップを含む。
S302において、元動画ファイルに対応するビットマップ画像シーケンスを取得する。
ここで、元動画ファイルは、原始の動画プロジェクトファイルであり、動画プロジェクトファイルには、例えば動画レイヤーの幅、高さ、位置情報、透明度、回転情報などのような、動画全体が表現可能な動画特殊効果を記述するための動画ベクトルデータを含む。元動画ファイルは、例えばAE(AdobeAfter)ソフトウェアによって設計された拡張子がaepであるエンジニアリングファイルであってもよく、AE SDKによって得ることができる。ビットマップ画像(BitMap)は、ドットマトリクス画像とも呼ばれ、単一の画素点が順に規則的に配列された画素アレイで表される画像であり、そして、ビットマップ画像は、圧縮符号化されていない画像である。ビットマップ画像シーケンスは、元動画ファイルにおける各フレームの動画に対応するビットマップ画像で構成されたシーケンスである。本発明が提供する実施例は、元動画ファイルに基づいて処理を行うものであり、ネイティブコードによって動画ファイルを実現する場合と比べて、開発量の減少およびコストの低減を図ることができる。
1つの実施例では、元動画ファイルに対応するビットマップ画像シーケンスを取得するステップは、元動画ファイルを取得するステップと、元動画ファイルを再生するステップと、元動画ファイルに対応する再生画面を順にスクリーンショットして、元動画ファイルに対応するビットマップ画像シーケンスを得るステップと、を含む。
具体的には、端末は、元動画ファイルを取得して、元動画ファイルの再生過程において、元動画ファイルに対応する再生画面を1フレーム毎にビットマップ画像にスクリーンショットすることによって、対応するビットマップ画像シーケンスを得ることができる。1つの実施例では、AE SDKのスクリーンショット機能によって元動画ファイルの各フレームをスクリーンショットして、各フレームに対応するビットマップ画像を得ることによって、元動画ファイル全体に対応するビットマップ画像シーケンスを得ることができる。
S304において、ビットマップ画像シーケンスにおけるビットマップ画像が非キービットマップ画像である場合、ビットマップ画像と対応するキービットマップ画像との差異画素領域をピクチャ符号化方式で符号化して、ビットマップ画像に対応する符号化ピクチャを得る。
ここで、キービットマップ画像は、ビットマップ画像シーケンスにおけるキーフレームとなるビットマップ画像である。ビットマップ画像シーケンスにおけるビットマップ画像は、再生順序で順に配列され、キービットマップ画像は、ビットマップ画像シーケンスにおける前のビットマップ画像と比べて、より多くの異なる画像情報を持っている。キービットマップ画像における各画素点の画素データは、いずれも符号化されて動画エクスポートファイルに保存される。ビットマップ画像シーケンスにおけるキービットマップ画像以外のビットマップ画像は、非キービットマップ画像となる。
現在処理されているビットマップ画像に対応するキービットマップ画像は、ビットマップ画像シーケンスにおいて現在処理されているビットマップ画像よりも前に位置し、かつ当該ビットマップ画像に最も近いキーフレームとなるビットマップ画像である。現在処理されているビットマップ画像は、ビットマップ画像シーケンスにおけるキービットマップ画像であってもよい。
具体的には、現在処理されているビットマップ画像が非キービットマップ画像である場合、端末は、差異画素領域における各画素点の画素データを圧縮符号化して、当該ビットマップ画像に対応する符号化ピクチャを得ることができ、符号化ピクチャは、実際に画素データをピクチャ符号化方式で圧縮して得られたピクチャバイナリデータである。幾つかの実施例では、ピクチャ符号化方式は、例えばPNG、WebP、JPEGなどのピクチャフォーマットで圧縮符号化することが可能である方式である。
ビットマップ画像は、記憶空間を大きく占用するピクチャファイルフォーマットであるため、画素差異領域をピクチャ符号化方式で符号化してピクチャフォーマットの符号化ピクチャを得ることによって、動画エクスポートファイルのサイズを小さくさせることができる。隣接するビットマップ画像間の差異が小さいため、現在のビットマップ画像と対応するキービットマップ画像とに対して画素比較を行うことによって現在のビットマップ画像における差異画素領域を得て、現在のビットマップ画像と対応するキービットマップ画像との差異画素領域の画素データのみを符号化して符号化ピクチャを得ることによって、動画エクスポートファイル全体のサイズを小さくさせることができる。
1つの実施例では、差異画素領域は、ビットマップ画像シーケンスにおけるビットマップ画像と対応するキービットマップ画像とに対して画素比較を行って、ビットマップ画像における差異画素領域を得るステップによって得る。
差異画素領域は、現在処理されているビットマップ画像のうち対応するキービットマップ画像と画素データが異なる同一位置の画素点で構成された領域である。例えば、現在処理されているビットマップ画像において、画素点A(x,y)の画素データが対応するキービットマップ画像における画素点A’(x,y)と異なると、画素点A(x,y)が現在処理されているビットマップ画像の差異画素領域における画素点に属する。なお、差異画素領域には、画素データが同じである同一位置の画素点が含まれる可能性もあり、例えば、差異画素領域は、画素データが異なる同一位置の全ての画素点で構成された矩形領域である場合、当該矩形領域内には、画素データが同じである同一位置の画素点が含まれる可能性がある。
具体的には、端末は、現在処理されているビットマップ画像と対応するキービットマップ画像とに対して画素比較を行うことによって、現在処理されているビットマップ画像における対応するキービットマップ画像との差異画素点を得て、差異画素点に基づいて現在処理されているビットマップ画像における差異画素領域を決定することができる。端末は、画素差異領域における各画素点の画素データのみを圧縮符号化することができるため、動画エクスポートファイル全体のサイズを小さくさせることができる。
1つの実施例では、ビットマップ画像シーケンスにおけるビットマップ画像と対応するキービットマップ画像とに対して画素比較を行って、ビットマップ画像における差異画素領域を得るステップは、ビットマップ画像シーケンスにおけるビットマップ画像と対応するキービットマップ画像とに対して画素比較を行って、ビットマップ画像における差異画素点を得るステップと、差異画素点に基づいてビットマップ画像における差異画素領域を決定するステップと、を含む。
具体的には、ビットマップ画像シーケンスにおける各ビットマップ画像の寸法が同じであるため、端末は、画素ごとに現在処理されているビットマップ画像の画素データを対応するキービットマップ画像の画素データと比較して、現在処理されているビットマップ画像における差異画素点を得た後、差異画素点に基づいてビットマップ画像における差異画素領域を決定することができる。差異画素領域は、決定した差異画素点をできるだけ多く含む領域であってよく、例えば、全ての差異画素点を含む矩形領域であってもよいし、85%の差異画素点を含む矩形領域であってもよい。
1つの実施例では、ビットマップ画像シーケンスにおけるビットマップ画像と対応するキービットマップ画像とに対して画素比較を行って、ビットマップ画像における差異画素点を得るステップは、ビットマップ画像に対応するキービットマップ画像における各画素点の画素データを取得するステップと、ビットマップ画像における各画素点の画素データを取得するステップと、同一位置の画素点の画素データを比較して、比較した結果に基づいてビットマップ画像における差異画素点を特定するステップと、を含む。
ここで、同一位置の画素点は、2つのビットマップ画像における対応する同一位置にある画素点を指し、例えば、ビットマップ画像における画素点A(x,y)と対応するキービットマップ画像における画素点A’(x,y)とは同じ画素点である。
具体的には、端末は、現在処理されているビットマップ画像における各画素点の画素データを取得し、そして、対応するキービットマップ画像における各画素点の画素データを取得し、その後、画素ごとに同一位置の画素点の画素データを比較する必要があり、ビットマップ画像と対応するキービットマップ画像との同一位置の画素点の画素データが異なると、ビットマップ画像における当該画素点が差異画素点となる。これにより、現在処理されているビットマップ画像における対応するキービットマップ画像に対する全ての差異画素点を見つけることができる。
1つの実施例では、差異画素領域は、矩形画素領域であり、前記の動画ファイル処理方法は、矩形画素領域の寸法と対応するキービットマップ画像の寸法との関係に基づいて、現在処理されているビットマップ画像がキービットマップ画像であるか否かを直接判断するステップをさらに含む。当該ステップは、矩形画素領域の寸法とビットマップ画像の寸法との差異が予め設定された閾値よりも小さい場合、ビットマップ画像がキービットマップ画像であると特定するステップと、矩形画素領域の寸法とビットマップ画像の寸法との差異が予め設定された閾値よりも大きい場合、ビットマップ画像が非キービットマップ画像であると特定するステップと、を含む。
1つの実施例では、矩形画素領域の寸法とビットマップ画像の寸法との差異は、それぞれに含まれる画素点の数の差または数の比で表してもよいし、それぞれの寸法の比で表してもよく、例えば、矩形画素領域の寸法が50*60であり、ビットマップ画像の寸法が100*100である場合、それらの差異が50×60/100×100で表すことができる。
具体的には、端末は、ビットマップ画像シーケンスにおける1番目のビットマップ画像をキービットマップ画像として選択し、ビットマップ画像シーケンスにおける各ビットマップ画像の順序に従って、ビットマップ画像シーケンスにおけるビットマップ画像を順に、それよりも前に位置すると共に最も近いキービットマップ画像と画素比較を行って、各ビットマップ画像における差異画素領域を得ることができる。差異画素領域が矩形画素領域である場合、矩形画素領域の寸法とビットマップ画像の寸法との差異に基づいて、現在処理されているビットマップ画像がキービットマップ画像であるか否かを決定することができる。矩形画素領域の寸法とビットマップ画像の寸法との差異が小さいほど、矩形画素領域の寸法が大きくなり、矩形画素領域の寸法とビットマップ画像の寸法との差異が小さくなり、現在処理されているビットマップ画像と対応するキービットマップ画像との差異情報が多くなることを表すため、現在処理されているビットマップ画像をキービットマップ画像とし、現在処理されているビットマップ画像における各画素点の画素データを符号化して保存する必要がある。処理対象となる次のビットマップ画像に対して、その対応するキービットマップ画像は、現在処理されているビットマップ画像である。矩形画素領域の寸法とビットマップ画像の寸法との差異が大きいほど、矩形画素領域の寸法が小さくなり、現在処理されているビットマップ画像と対応するキービットマップ画像との差異情報が少なくなることを表すため、現在処理されているビットマップ画像を非キービットマップ画像とすることができ、そして、処理対象となる次のビットマップ画像に対して、その対応するキービットマップ画像が現在処理されているビットマップ画像に対応するキービットマップ画像と同じものである。このように類推して、ビットマップ画像シーケンスにおける各ビットマップ画像の矩形画素領域を得るとともに、矩形画素領域に基づいて現在処理されているビットマップ画像がキービットマップ画像であるか否かを決定することができる。
例えば、端末は、ビットマップ画像シーケンスにおける1番目のビットマップ画像をキーフレームとして選択し、次に処理する2番目のビットマップ画像に対して、1番目のビットマップ画像(すなわち、2番目のビットマップ画像と対応するキービットマップ画像)と画素比較を行って、2番目のビットマップ画像の差異画素領域を得ることができ、そして、差異画素領域が全ての画素データが異なる同一位置の画素点を含む矩形画素領域であると、当該矩形画素領域の寸法に基づいて2番目のビットマップ画像がキービットマップ画像であるか否かを決定することができる。2番目のビットマップ画像が非キービットマップ画像であると、前記の過程を繰り返して3番目のビットマップ画像を処理する。2番目のビットマップ画像がキービットマップ画像であると、2番目のビットマップ画像を3番目のビットマップ画像に対応するキービットマップ画像として、前記の過程に従って3番目のビットマップ画像を処理する。このように類推して、ビットマップ画像シーケンスにおける各ビットマップ画像の差異画素領域を得ることができる。
図4は、1つの実施例において現在処理されているビットマップ画像と対応するキービットマップ画像とに対して画素比較を行って得られた差異画素領域を示す図である。図4に示すように、各画素点を各ブロックで表し、現在処理されているビットマップ画像がそれと対応するキービットマップ画像の画像寸法と一致し、画素ごとに比較した後、画素データが同じである画素点を白ブロックで表し、画素データが異なる画素点を黒ブロックで表すると、差異画素領域は、全ての黒ブロックを含む最大の矩形領域、すなわち図中における領域Sであってよく、領域Sには、白ブロックも含まれてもよい。
1つの実施例では、差異画素領域が矩形画素領域である場合、矩形画素領域は、当該領域内の開始画素点の座標および当該矩形画素領域の画素幅、画素高さで表すことができる。開始画素点は、当該矩形画素領域内の左上隅の画素点で表すことができる。勿論、当該画素点は、差異画素点である可能性も差異画素点ではない可能性もあり、矩形画素領域の画素幅、画素高さおよび開始画素点の座標は、共同でビットマップ画像における差異画素領域の位置を決定するために用いることができる。
1つの実施例では、差異画素領域に基づいて現在処理されているビットマップ画像がキービットマップ画像であると特定した場合、現在処理されているビットマップ画像における全ての画素点の画素データを圧縮符号化し、すなわち、ビットマップ画像全体を圧縮符号化する必要がある。この場合、実質的には、ビットマップ画像全体を差異画素領域として理解することができ、そのうちの開始画素点がデフォルトで(0,0)に位置する画素点であり、矩形画素領域の画素幅および画素高さがデフォルトでビットマップ画像自体の画素幅および画素高さである。
このように、動画エクスポートファイルに基づいて復号化して矩形画素領域の画素データを得た後、開始画素点の座標および矩形画素領域の画素幅、画素高さに基づいて対応するキービットマップ画像から画素差異領域の位置を決めて、復号化して得られた矩形画素領域の画素データでキービットマップ画像における位置決めした位置の画素データを置き換えることにより、現在復号化されているビットマップ画像の全ての画素データを得ることができる。
1つの実施例では、ビットマップ画像シーケンスにおけるキービットマップ画像は、ビットマップ画像シーケンスにおける1番目のビットマップ画像をキービットマップ画像として選択するステップと、1番目のビットマップ画像を開始画像とし、予め設定された数置きのビットマップ画像をビットマップ画像シーケンスにおけるキービットマップ画像とするステップとによって決定してもよい。
つまり、ビットマップ画像シーケンスにおける1番目のビットマップ画像を1番目のキービットマップ画像とし、1番目のビットマップ画像における各画素点の画素データがいずれも符号化されて動画エクスポートファイルに記憶され、設定されたキーフレームの間隔に従って、当該1番目のビットマップ画像から、ビットマップ画像シーケンスにおけるビットマップ画像を予め設定された数を間隔するキービットマップ画像とする。例えば、ビットマップ画像シーケンスは55個のビットマップ画像を含み、設定されたキーフレームの間隔が10であると、ビットマップ画像シーケンスにおける1番目のビットマップ画像、11番目のビットマップ画像、21番目のビットマップ画像、31番目のビットマップ画像、41番目のビットマップ画像および51番目のビットマップ画像は全てキービットマップ画像となる。
キービットマップ画像の間の間隔が小さい場合、前記のステップに従ってビットマップ画像シーケンスにおける全てのキービットマップ画像および非キービットマップ画像を決定して、ビットマップ画像シーケンスにおける現在処理されているビットマップ画像の位置に基づいてキービットマップ画像であるか否かを決定することができる。勿論、キービットマップ画像の間の間隔が大きい場合、ビットマップ画像シーケンスには、前記のステップに従って予め設定された間隔で選択されたキービットマップ画像に加えて、他のキービットマップ画像が存在してもよい。
1つの実施例では、前記の動画ファイル処理方法は、
ビットマップ画像シーケンスにおけるビットマップ画像がキービットマップ画像である場合、直接ピクチャ符号化方式でビットマップ画像を符号化して、ビットマップ画像に対応する符号化ピクチャを得るステップをさらに含む。
具体的には、現在処理されているビットマップ画像がキービットマップ画像であると特定した場合、当該ビットマップ画像がそれより前のビットマップ画像と異なる画像情報の大部分を持っていることを表すため、直接ピクチャ符号化方式で当該ビットマップ画像における各画素点の画素データを圧縮符号化する必要があり、得られた符号化ピクチャは、ビットマップ画像全体に対応するものである。
図5は、1つの実施例におけるビットマップ画像シーケンスを示す図である。図5に示すように、ビットマップ画像シーケンスは、キービットマップ画像および非キービットマップ画像を含み、キービットマップ画像に対して、直接ピクチャ符号化方式で圧縮符号化して対応する符号化ピクチャを得、非キービットマップ画像に対して、そのうちの差異画素領域をピクチャ符号化方式で圧縮符号化して、当該ビットマップ画像に対応する符号化ピクチャを得る。
1つの実施例では、差異画素領域は、矩形画素領域であり、前記の動画ファイル処理方法は、矩形画素領域に対応する画素幅、画素高さおよび矩形画素領域における開始画素点の座標を特定するステップと、画素幅、画素高さおよび開始画素点の座標を符号化ピクチャに対応するピクチャ情報に記憶するステップと、をさらに含む。
前述のように、矩形画素領域における開始画素点は、矩形画素領域内の左上隅の画素点であってもよい。開始画素点の座標、および矩形画素領域に対応する画素幅、画素高さを、符号化ピクチャに対応するバイナリデータに記憶し、復号化される時にバイナリデータにおけるこれらのデータに基づいてビットマップ画像における矩形画素領域の位置を決めるために用いることができ、符号化ピクチャを復号化して得られた画素データは、位置決めした位置に対応する画素データである。このように、端末は、ビットマップ画像に対応するキービットマップ画像の画素データおよび当該矩形画素領域の画素データと組み合わせてビットマップ画像全体に対応する画素データを得ることができ、ビットマップ画像全体の画素データに基づいてピクチャを表示することができる。
例えば、ビットマップ画像シーケンスにおける各ビットマップ画像に対応する符号化ピクチャのピクチャ情報をアレイBitMapRectに記憶することができ、当該アレイにおける各要素は、開始画素点の座標(x,y)、差異画素領域の画素幅Width、差異画素領域の画素高さHeightおよび画像データByteDataを含む各ビットマップ画像に対応する符号化ピクチャのピクチャ情報を記憶している。キービットマップ画像に対して、開始点画素の座標が(0,0)であり、差異画素領域の画素幅Widthおよび差異画素領域の画素高さHeightがそれぞれ当該キービットマップ画像の画素幅および画素高さである。
S306において、ビットマップ画像シーケンスにおける各ビットマップ画像に対応する符号化ピクチャに基づいて、元動画ファイルに対応する動画エクスポートファイルを生成する。
具体的には、各ビットマップ画像に対応する符号化ピクチャを得た後、各ビットマップ画像に対応する符号化ピクチャに基づいて目標フォーマットの動画エクスポートファイルを生成することができる。実際には、エクスポートして得られた動画エクスポートファイルに記憶されたのは、各ビットマップ画像に対応する符号化ピクチャのピクチャ情報、すなわちピクチャバイナリデータである。勿論、当該動画エクスポートファイルのエクスポート方式を識別するための情報をさらに含んでもよく、例えば動画のデュレーション、フレームレートおよび背景色などの幾つかの動画基本属性情報を含んでもよい。
動画を再生する必要がある場合、目標フォーマットの動画エクスポートファイルを復号化して、各フレームのピクチャの画素データを得た後に各ピクチャを順次表示すれば、動画エクスポートファイルの再生を実現することができる。具体的には、表示するピクチャがキービットマップ画像である場合、動画エクスポートファイルから得られた当該ピクチャに対応する符号化ピクチャを直接読み取り、当該符号化ピクチャを復号化してキービットマップ画像に含まれる画素データを得た後に当該ピクチャを表示する。表示するピクチャが非キービットマップ画像である場合、当該ピクチャに対応する符号化ピクチャを復号化して、非キービットマップ画像における差異画素領域に対応する画素データを得た後、当該ピクチャに対応するキービットマップ画像に対応する符号化ピクチャが復号化されて得られた画素データ、対応するキービットマップ画像における差異画素領域の位置に基づいて、差異画素領域に対応する画素データでキービットマップ画像における当該位置に対応する画素データを置き換えて、非キービットマップ画像全体に対応する画素データを得ることができ、得られた全ての画素データに基づいて画像を表示することができる。
前記の動画ファイル処理方法は、元動画ファイルに基づいて処理を行っており、ネイティブコードによって動画ファイルを実現する場合と比べて、開発量の減少およびコストの低減を図ることができる。元動画ファイルに対応するビットマップ画像シーケンスにおける各ビットマップ画像をピクチャフォーマットの符号化ピクチャに変換して記憶することにより、元動画ファイルの様々な動画特性データを記憶する必要がなく、各フレームの符号化ピクチャを記憶すればよく、全ての複雑な動画効果を対応すること可能となる。そして、動画エクスポートファイルを復号化する時に、ピクチャフォーマットに従って復号化すればよく、復号化効率が高くなる。さらに、隣接するビットマップ画像の間の差異が小さいため、差異画素領域の画素データのみを符号化して符号化ピクチャを得ることにより、動画エクスポートファイル全体のサイズを減少させることができる。
前記の動画処理方法によって得られた動画エクスポートファイルは、実際にビットマップシーケンスフレームエクスポート方式で得られた目標フォーマットの動画ファイルである。図6は、1つの実施例においてビットマップシーケンスフレームエクスポート方式で元動画ファイルを処理して得られた動画エクスポートファイルのデータ構造を示す図である。動画エクスポートファイル全体は、実際に複数フレームのピクチャで構成されるため、記憶されたのは各フレームのピクチャのピクチャ情報である。記憶されたピクチャ情報は、復号化される時に各フレームのピクチャを復元して表示するためのものである。図6に示すデータ構造は、ビットマップシーケンスフレームエクスポート方式で得られた動画エクスポートファイルの具体的な表現形式を定義し、動画エクスポートファイルを復号化した後にバイナリデータを動画オブジェクトに変換してメモリに記憶することにより、当該動画オブジェクトから、動画エクスポートファイル全体を表し、CompositionType、CompositionAttributesおよびBitmapSequenceを含むBitMapCompositionを読み取ることができる。そのうち、CompositionTypeは、合成タイプを表し、すなわち、対応する復号化方式でデータを解析できるように、当該動画エクスポートファイルがどのような方式でエクスポートされたものであることを表すものである。CompositionAttributesは、合成属性、すなわち当該動画エクスポートファイルの幾つかの基本属性を表す。CompositionAttributesは、具体的には、duration、framerateおよびbackgroundcolorを含み、そのうち、duratioは、動画エクスポートファイル全体が再生時に占用する時間長さを表し、framerateは、当該動画エクスポートファイルに基づいて動画を再生する時のフレームレートを表し、backgroundcoloは、動画の背景色を表す。
BitmapSequenceは、ビットマップシーケンスを表し、各ビットマップ画像に対応する符号化ピクチャで構成されたシーケンスであり、ビットマップ画像シーケンスにおける各ビットマップ画像に対応する符号化ピクチャのピクチャ情報を記述するためのものである。BitmapSequenceは、具体的には、符号化ピクチャ全体が復号化されて再生する時に表現される再生画面の画素幅width、画素高さheightを含む。BitmapSequenceは、各ビットマップ画像に対応する符号化ピクチャのピクチャ情報で構成されたアレイBitmapFrameをさらに含み、当該アレイにおける各要素はいずれもisKeyFrameフィールド、BitmapRectフィールドを含む。isKeyFrameは、符号化ピクチャがキーフレームであるか否かを表し、BitmapRectは、符号化ピクチャのピクチャ情報を表し、具体的に差異画素領域の開始画素点の座標(x,y)、差異画素領域の画素幅width、画素高さheightおよび差異画素領域が符号化された後の符号化ピクチャに対応するバイナリデータByteDataを含む。
幾つかの実施例では、前記の動画処理方法は、ビットマップ画像をカラーチャネルビットマップと透明度チャネルビットマップに区分するステップと、カラーチャネルビットマップと透明度チャネルビットマップを合成して合成ビットマップを得るステップと、合成ビットマップをビデオ符号化方式で符号化して、ビットマップ画像に対応する符号化ピクチャを得るステップと、をさらに含む。
動画エクスポートファイルのサイズをさらに減少させ、そして、後続のクライアントによる動画エクスポートファイルの復号化効率を容易に向上させるために、ビットマップ画像シーケンスにおける各ビットマップ画像をビデオ符号化方式で圧縮符号化することができる。しかし、一般的に、動画は、透明効果を有し、すなわち、得られた元動画ファイルに対応するビットマップ画像シーケンスにおける各ビットマップ画像は、透明チャネルデータを有しているが、ビデオシーケンスにおける各ビデオフレームは、透明効果を有さず、透明チャネルデータを有しないので、ビデオ符号化方式でビットマップ画像シーケンスにおける各ビットマップ画像を符号化する必要がある場合、まずは、ビットマップ画像を不透明な画像に変換する必要がある。
具体的には、ビットマップ画像シーケンスにおける各ビットマップ画像に対して、端末は、画素ごとに各ビットマップ画像の画素データを読み取り、読み取った画素データから色データおよび透明度データを分離し、分離したデータに基づいて対応するカラーチャネルビットマップおよび透明度チャネルビットマップを得た後、カラーチャネルビットマップと透明度チャネルビットマップを合成して、ビットマップ画像に対応する合成ビットマップを得ることができる。カラーチャネルビットマップと透明度チャネルビットマップとの合成は、カラーチャネルビットマップと透明度チャネルビットマップを上下に配置することができ、このように得られた合成ビットマップの高さは、ビットマップ画像の2倍となる。カラーチャネルビットマップと透明度チャネルビットマップを左右に配置してもよく、このように得られた合成ビットマップの幅はビットマップ画像の2倍となる。さらに、端末は、ビデオ符号化方式で各合成ビットマップを圧縮符号化して対応する符号化ピクチャを得、各ビットマップ画像に対応する符号化ピクチャに基づいて目標フォーマットの動画エクスポートファイルを生成することができ、動画エクスポートファイルに記憶されたのは、各フレームの符号化ピクチャのピクチャ情報である。
前記の動画処理方法によって得られた動画エクスポートファイルは、実際にビデオシーケンスフレームエクスポート方式で得られた目標フォーマットの動画ファイルであり、得られた動画エクスポートファイルのサイズがより小さくなり、そして、ビデオ復号化方式で動画エクスポートファイルを復号化することができ、復号化効率がより高くなる。
1つの実施例では、前記の動画処理方法は、
元動画ファイルの動画ベクトルデータを取得するステップであって、動画ベクトルデータは、動画基本属性データおよび動画レイヤーデータを含むステップと、動画基本属性データおよび動画レイヤーデータを目標フォーマットのデータ構造で記憶して、元動画ファイルに対応する動画エクスポートファイルを得るステップとをさらに含む。
ここで、動画ベクトルデータは、元動画ファイルが表現可能な動画特殊効果を記述するためのデータであり、動画は、複数のレイヤー(Layer)によって実現され、動画ベクトルデータは、具体的に各動画レイヤーの動画レイヤーデータを含み、さらに元動画ファイル全体の動画基本属性データを含む。目標フォーマットのデータ構造は、元動画ファイルのレイヤー構造に対する復元であり、端末は、元動画ファイルを取得した後、元動画ファイルから各レイヤーに対応する動画ベクトルデータを読み取り、その後、動画ベクトルデータを目標フォーマットのデータ構造で記憶することができ、得られた動画エクスポートファイルに含まれるデータが元動画ファイルのレイヤー構造と一対一に対応し、動画レイヤー構造に対する復元である。
前記の動画処理方法によって得られた動画エクスポートファイルは、実際にベクトルエクスポート方式で得られた目標フォーマットの動画ファイルである。図7は、1つの実施例においてベクトルエクスポート方式で元動画ファイルを処理して得られた目標フォーマットの動画エクスポートファイルのデータ構造を示す図である。
図7に示すように、動画エクスポートファイル全体は、全てのレイヤーのレイヤー情報を合成して得られたものであり、VectorCompositionは、動画エクスポートファイル全体を表し、CompositionAttributesおよびレイヤーLayerを含む。CompositionAttributesは、動画基本属性データを表し、動画の幅width、高さheightなどを含み、さらに動画全体のデュレーションduration、フレームレートframerate、背景色backgroundcolorなどを含む。Layerは、動画レイヤーデータを表し、各レイヤーに対応するデータを含み、元動画ファイルにおいて異なるタイプのレイヤーを使用する可能性があり、仮想オブジェクト層(NullObjectLayer)、ソリッドレイヤー(SolidLayer)、テキストレイヤー(TextLayer)、形状レイヤー(ShapeLayer)、画像レイヤー(ImageLayer)、プリコンポーズレイヤー(PreComposeLayer)などを含むが、これらに限定されるものではない。
ソリッドレイヤーを例として、対応する記述情報は、レイヤーの幅や高さ、色およびレイヤー属性(LayerAttributes)を含み、レイヤー属性は、基本属性および動画属性グループを含み、基本属性は、レイヤーのデュレーションduration)、レイヤーの開始時間startTime(どのフレームを再生するときに当該レイヤーを取得して使用する必要があるか)および引張パラメータstretchなどを含む。動画属性グループは、transform、mask、trackMatter、layerStyle、effectおよびcontentを含む。1つのレイヤーは、このような6種類の動画属性グループのうちのいずれか1種または複数種の組み合わせによって得られる。
そのうち、transformは、現在のレイヤーの経時的な情報を記録するためのものであり、平行移動、拡大縮小、回転、透明度の変化などの情報を含み、これらの情報を記録することにより、動画の変換効果を復元することができる。maskは、現在のレイヤー内のマスクを表し、主にマスクのマスクモードおよび描画経路情報を記録し、マスクモードは、Addモード、Subtractモード、IntersectモードおよびDifferenceモードを含み、Addモードは、マスクを直接加えて表示することを表す。Subtractモードは、マスクで遮蔽された部分を除去することを表す。Intersectモードは、元図形とマスクとの共通部分を取って表示することを表す。Differenceモードは、元図形とマスクとの非共通部分を取って表示することを表す。trackMatterは、透明度および輝度に基づいて1つのレイヤーを別のレイヤーのマスクとして利用し、レイヤー間のマスクを表し、記録されたのもマスクのマスクモード情報およびマスク描画情報であるが、ここでのモードは、Maskと異なり、trackMatterのモードは、レイヤーの不透明領域に基づいて表示領域を制御することを表すAlphaモード、逆にレイヤーの透明な領域に基づいてレイヤーの表示領域を制御することを表すAlphaInvertedモード、動作原理がAlphaモードと類似し、レイヤーの輝度に基づいて表示領域を制御することを表すLumaモードおよびLumaInvertedモードなどのモードがある。LayerStyleおよびEffectは、現在のレイヤーのフィルタ情報を記録する。contentは、当該レイヤーの描画可能な要素を表し、ピクチャ要素、文字要素および形状要素などを含む。
ベクトルエクスポート方式で得られた目標フォーマットの動画ファイルは、豊富な動画特殊効果を対応することができ、エクスポートされたファイルが極めて小さく、レンダリング時のみにレイヤーのレンダリングデータの論理をキャッシュすることを対応し、さらに動画におけるテキストコンテンツおよびピクチャコンテンツに対する編集を対応する。
図8に示すように、1つの具体的な実施例では、ビットマップシーケンスフレームエクスポート方式で元動画ファイルを処理して動画エクスポートファイルを得る方法は、具体的には、
元動画ファイルを取得するステップ(S802)と、
元動画ファイルを再生するステップ(S804)と、
元動画ファイルに対応する再生画面を順にスクリーンショットして、元動画ファイルに対応するビットマップ画像シーケンスを得るステップ(S806)と、
ビットマップ画像に対応するキービットマップ画像における各画素点の画素データを取得するステップ(S808)と、
ビットマップ画像における各画素点の画素データを取得するステップ(S810)と、
同一位置の画素点の画素データを比較して、比較した結果に基づいてビットマップ画像における差異画素点を特定するステップ(S812)と、
差異画素点に基づいてビットマップ画像における差異画素領域を決定するステップ(S814)と、
矩形画素領域の寸法とビットマップ画像の寸法との差異が予め設定された閾値よりも小さい場合、ビットマップ画像がキービットマップ画像であると特定するステップ(S816)と、
矩形画素領域の寸法とビットマップ画像の寸法との差異が予め設定された閾値よりも大きい場合、ビットマップ画像が非キービットマップ画像であると特定するステップ(S818)と、
ビットマップ画像が非キービットマップ画像である場合、差異画素領域をピクチャ符号化方式で符号化して、ビットマップ画像に対応する符号化ピクチャを得るステップ(S820)と、
ビットマップ画像がキービットマップ画像である場合、直接ピクチャ符号化方式でビットマップ画像を符号化して、ビットマップ画像に対応する符号化ピクチャを得るステップ(S822)と、
ビットマップ画像シーケンスにおける各ビットマップ画像に対応する符号化ピクチャに基づいて、元動画ファイルに対応する動画エクスポートファイルを生成するステップ(S824)と、を含む。
図8は、1つの実施例における動画ファイル処理方法の流れを示すフローチャートである。なお、図8のフローチャートにおける各ステップは、矢印の指示に従って順次表示されているが、これらのステップは必ずしも矢印で示される順番で実行される必要はない。本明細書に特に説明がない限り、これらのステップの実行順序は、厳密に限定されるものではなく、他の順序で実行されてもよい。そして、図8における少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずしも同一のタイミングで実行される必要がなく、異なるタイミングで実行されてもよく、これらのサブステップまたは段階の実行順序も必ずしも逐次的に行われるものではなく、他のステップあるいは他のステップのサブステップまたは段階の少なくとも一部と順番にまたは交互に実行されてもよい。
図9に示すように、1つの実施例は、動画ファイル処理方法を提供する。本実施例は、主に当該方法を前記の図1における動画ファイルエクスポート端末110に応用することを例として説明するが、以下では、説明の便宜のために、直接に端末として説明する。図9に示すように、当該画像ファイル処理方法は、具体的に以下のステップを含む。
S902において、元動画ファイルに対応するビットマップ画像シーケンスを取得する。
ここで、元動画ファイルは、原始の動画プロジェクトファイルであり、動画プロジェクトファイルには、例えば動画レイヤーの幅や高さ、位置情報、透明度、回転情報などのような、動画全体が表現可能な動画特殊効果を記述するための動画ベクトルデータを含む。元動画ファイルは、例えばAE(AdobeAfter)ソフトウェアによって設計された拡張子がaepであるエンジニアリングファイルであってよく、AE SDKによって得ることができる。ビットマップ画像(BitMap)は、ドットマトリクス画像とも呼ばれ、単一の画素点が順に規則的に配列された画素アレイに基づいて示された画像であり、ビットマップ画像は、圧縮符号化されていない画像である。ビットマップ画像シーケンスは、元動画ファイルにおける各フレームの動画に対応するビットマップ画像で構成されたシーケンスである。元動画ファイルに基づいて処理を行う場合、ネイティブコードによって動画ファイルを実現する場合と比べて、開発量の減少およびコストの低減を図ることができる。
1つの実施例では、元動画ファイルに対応するビットマップ画像シーケンスを取得するステップは、元動画ファイルを取得するステップと、元動画ファイルを再生するステップと、元動画ファイルに対応する再生画面を順にスクリーンショットして、元動画ファイルに対応するビットマップ画像シーケンスを得るステップと、を含む。
具体的には、端末は、元動画ファイルを取得し、元動画ファイルの再生過程において元動画ファイルに対応する再生画面を1フレーム毎にビットマップ画像にスクリーンショットすることによって、対応するビットマップ画像シーケンスを得ることができる。1つの実施例では、AE SDKのスクリーンショット機能によって元動画ファイルの各フレームをスクリーンショットして、各フレームに対応するビットマップ画像を得ることによって、元動画ファイル全体に対応するビットマップ画像シーケンスを得ることができる。
S904において、ビットマップ画像シーケンスにおける各ビットマップ画像をカラーチャネルビットマップと透明度チャネルビットマップに区分する。
動画エクスポートファイルのサイズをさらに減少させ、そして、後続のクライアントによる動画エクスポートファイルの復号化効率を容易に向上させるために、ビットマップ画像シーケンスにおける各ビットマップ画像をビデオ符号化方式で圧縮符号化することができる。しかし、一般的に、動画は、透明効果を有し、すなわち、得られた元動画ファイルに対応するビットマップ画像シーケンスにおける各ビットマップ画像は、透明チャネルデータを有しているが、ビデオシーケンスにおける各ビデオフレームは、透明効果を有さず、透明チャネルデータを有しないので、ビデオ符号化方式でビットマップ画像シーケンスにおける各ビットマップ画像を符号化する必要がある場合、まずは、ビットマップ画像を不透明な画像に変換する必要がある。
具体的には、ビットマップ画像シーケンスにおける各ビットマップ画像に対して、端末は、画素ごとに各ビットマップ画像の画素データを読み取り、読み取った画素データから色データおよび透明度データを分離し、分離したデータに基づいて対応するカラーチャネルビットマップおよび透明度チャネルビットマップを得ることができる。ビットマップ画像シーケンスにおける各ビットマップ画像を、ビットマップ画像における各画素点の画素データを色データおよび透明度データに基づいて分割して得られたビットマップ画像の寸法と同じである2つのビットマップ画像である、カラーチャネルビットマップと透明度チャネルビットマップに区分する。
1つの実施例では、ビットマップ画像シーケンスにおけるビットマップ画像をカラーチャネルビットマップと透明度チャネルビットマップに区分するステップは、ビットマップ画像における各画素点の画素データを取得するステップと、画素データから各画素点に対応する色データおよび透明度データを抽出するステップと、各画素点の色データに基づいてビットマップ画像に対応するカラーチャネルビットマップを生成するステップと、各画素点の透明度データに基づいてビットマップ画像に対応する透明度チャネルビットマップを生成するステップと、を含む。
ビットマップ画像において、各画素点の画素データは、色データおよび透明度データを含み、色データは、RGBに対応する値であり、透明度データは、Alphaの値である。Alphaの値は、ある画素点の透明度を表し、Alpha値の区間は、[0,255]であってもよく、[0,255]を[0,1]にマッピングした後に[0,1]の区間に対応する値で表されてもよく、すなわち、Alpha値は、0~1の間の数値であり、0は完全に透明であることを表し、1は完全に不透明であることを表す。
例えば、ビットマップ画像において、点(x,y)に位置する画素データは(RedValue、GreenValue、BuleValue、AlphaValue)であると、区分して得られたカラーチャネルビットマップにおいて点(x,y)に位置する対応する色データは(RedValue、GreenValue、BuleValue)であり、透明度チャネルビットマップにおいて点(x,y)に位置する対応する透明度データはAlphaValueである。
S906において、カラーチャネルビットマップと透明度チャネルビットマップを合成して、合成ビットマップを得る。
具体的には、端末は、ビットマップ画像をカラーチャネルビットマップおよび透明度チャネルビットマップに区分した後、カラーチャネルビットマップと透明度チャネルビットマップを合成して、ビットマップ画像に対応する合成ビットマップを得ることができる。合成ビットマップにおける各画素データは、透明度がなくなる。
1つの実施例では、カラーチャネルビットマップと透明度チャネルビットマップとの合成は、カラーチャネルビットマップと透明度チャネルビットマップを上下に配置することができ、このように得られた合成ビットマップの高さは、ビットマップ画像の2倍となる。カラーチャネルビットマップと透明度チャネルビットマップを左右に配置してもよく、このように得られた合成ビットマップの幅はビットマップ画像の2倍となる。
図10は、1つの実施例においてビットマップ画像を処理して合成ビットマップを得ることを示す図である。図10に示すように、左側は、透明度を有するビットマップ画像である。中間は、それぞれ透明度チャネルビットマップ1002およびカラーチャネルビットマップ1004であり、透明度チャネルビットマップ1002において、黒色領域における各画素点のAlphaValueが0であり、すなわち、完全に透明であることを黒色で表し、白色領域における各画素点のAlphaValueが1であり、すなわち、完全に不透明であることを白色で表す。カラーチャネルビットマップ1004において、各画素点の色データは、表現した色に対応するデータである。右側は、透明度チャネルビットマップ1002とカラーチャネルビットマップ1004を左右に配置して得られた合成ビットマップである。
S908において、ビデオ符号化方式で合成ビットマップを符号化して、ビットマップ画像に対応する符号化ピクチャを得る。
具体的には、ビットマップ画像シーケンスにおける各ビットマップ画像に対応する合成ビットマップを得た後、ビデオ符号化方式で各合成ビットマップを圧縮符号化して、対応する符号化ピクチャを得ることができる。動画エクスポートファイルに記憶されたのは、各フレームの符号化ピクチャのピクチャ情報である。
勿論、幾つかの特別な場合では、動画が透明効果を備えていなく、すなわち、元動画ファイルに対応するビットマップ画像シーケンスにおける各ビットマップ画像に透明チャネルデータが存在しないと、ビットマップ画像シーケンスにおける各ビットマップ画像をカラーチャネルビットマップと透明度チャネルビットマップに区分する必要がなく、ビデオ符号化方式でビットマップ画像を直接符号化して、対応する符号化ピクチャを得ることができる。
S910において、ビットマップ画像シーケンスにおける各ビットマップ画像に対応する符号化ピクチャに基づいて、元動画ファイルに対応する動画エクスポートファイルを生成する。
具体的には、各ビットマップ画像に対応する符号化ピクチャを得た後、各ビットマップ画像に対応する符号化ピクチャに基づいて目標フォーマットの動画エクスポートファイルを生成することができる。実際には、エクスポートして得られた動画エクスポートファイルに記憶されたのは、各ビットマップ画像に対応する符号化ピクチャのピクチャ情報、すなわちピクチャバイナリデータである。勿論、当該動画エクスポートファイルのエクスポート方式を識別するための情報をさらに含んでもよく、例えば動画のデュレーション、フレームレートおよび背景色などの動画基本属性情報を含んでもよい。
動画を再生する必要がある場合、目標フォーマットの動画エクスポートファイルを復号化して、各フレームのピクチャの画素データを得た後に各ピクチャを順次表示すれば、動画エクスポートファイルの再生を実現することができる。具体的には、動画エクスポートファイルを読み取って各符号化ピクチャに対応するピクチャバイナリデータを得た後、ビデオ復号方式でピクチャバイナリデータを復号化して合成ビットマップを還元し、還元した合成ビットマップからカラーチャネルビットマップおよび透明度チャネルビットマップを抽出して、カラーチャネルビットマップにおける各画素点の色データに基づいてピクチャをレンダリングし、透明度チャネルビットマップにおける各画素点の透明度データに基づいてレンダリングしたピクチャに対してマスク処理を行って、透明度を有するビデオフレームを取得し、各ビデオフレームの順序で順次に表示すれば動画の再生を実現することができる。
前記の動画ファイル処理方法は、元動画ファイルに基づいて処理を行っており、ネイティブコードによって動画ファイルを実現する場合と比べて、開発量の減少およびコストの低減を図ることができる。また、各ビットマップ画像をカラーチャネルビットマップと透明度チャネルビットマップに区分して、カラーチャネルビットマップと透明度チャネルビットマップを合成して合成ビットマップを得た後、ビデオ符号化方式で合成ビットマップを符号化して、ビットマップ画像に対応する符号化ピクチャを得ることによって、符号化ピクチャに基づいて生成された動画エクスポートファイルがより小さくなり、そして、ビデオ復号化方式で動画エクスポートファイルを復号化することができ、復号化効率がより高くなる。
前記の動画処理方法によって得られた動画エクスポートファイルは、実際にビデオシーケンスフレームエクスポート方式で得られた目標フォーマットの動画ファイルである。図11は、1つの実施例においてビデオシーケンスフレームエクスポート方式で元動画ファイルを処理して得られた動画エクスポートファイルのデータ構造を示す図である。動画エクスポートファイル全体は、実際に複数フレームのビデオフレームで構成されるため、記憶されたのはビデオフレームのピクチャ情報である。記憶されたピクチャ情報は、復号化される時にビデオフレームを復元して表示するためのものである。図11に示すデータ構造は、ビデオシーケンスフレームエクスポート方式で得られた動画エクスポートファイルの具体的な表現形式を定義し、動画エクスポートファイルを復号化した後にバイナリデータを動画オブジェクトに変換して内部メモリに記憶し、当該動画オブジェクトからVideoCompositionを読み取ることができ、当該VideoCompositionは、動画エクスポートファイル全体を表し、CompositionType、hasAlpha、CompositionAttributesおよびVideoSequenceを含む。そのうち、CompositionTypeは、合成タイプを表し、すなわち、データを対応する復号化方式で解析できるように、当該動画エクスポートファイルがどのような方式でエクスポートされたものであるかことを表すものである。hasAlphaは、当該動画が透明度チャネルを有するか否かを表し、有すればhasAlphaの値が1であり、有しなければhasAlphaの値が0である。CompositionAttributesは、合成属性、すなわち当該動画エクスポートファイルの幾つかの基本属性を表し、duration、framerateおよびbackgroundcolorを含み、そのうち、durationは、動画エクスポートファイル全体が再生時に占用する時間長さを表し、framerateは、当該動画エクスポートファイルに基づいて動画を再生する時のフレームレートを表し、backgroundcolorは、動画の背景色を表す。
VideoSequenceは、ビデオフレームシーケンス、すなわち合成ビットマップをビデオ符号化方式で符号化して得られた符号化ピクチャで構成されたシーケンスを表す。VideoSequenceは、具体的に符号化ピクチャ全体が復号化されて再生する時に表現された再生画面の画素幅width、画素高さheight、フレームレートframerateを含み、さらにビデオデコーダに伝達する必要がある情報パラメータSPSおよびPPSを含み、当該情報パラメータは、ビデオデコーダを初期化するためのものである。VideoSequenceは、さらに各ビットマップ画像に対応する符号化ピクチャのピクチャ情報で構成されたアレイVideoFrameを含み、当該アレイにおける各要素はいずれもisKeyFrameフィールドおよびByteDataを含み、isKeyFrameは、符号化ピクチャがキーフレームであるか否かを表し、ByteDataは、符号化ピクチャに対応するバイナリデータを表す。
図12は、1つの具体的な実施例においてビデオシーケンスフレーム方式でエクスポートして動画エクスポートファイルを得るための流れを示すフローチャートである。図12に示すように、具体的には、
元動画ファイルを取得するステップ(S1202)と、
元動画ファイルを再生するステップ(S1204)と、
元動画ファイルに対応する再生画面を順にスクリーンショットして、元動画ファイルに対応するビットマップ画像シーケンスを得るステップ(S1206)と、
ビットマップ画像における各画素点の画素データを取得するステップ(S1208)と、
画素データから各画素点に対応する色データおよび透明度データを抽出するステップ(S1210)と、
各画素点の色データに基づいてビットマップ画像に対応するカラーチャネルビットマップを生成するステップ(S1212)と、
各画素点の透明度データに基づいてビットマップ画像に対応する透明度チャネルビットマップを生成するステップ(S1214)と、
カラーチャネルビットマップと透明度チャネルビットマップを合成して合成ビットマップを得るステップ(S1216)と、
ビデオ符号化方式で合成ビットマップを符号化して、ビットマップ画像に対応する符号化ピクチャを得るステップ(S1218)と、
ビットマップ画像シーケンスにおける各ビットマップ画像に対応する符号化ピクチャに基づいて、元動画ファイルに対応する動画エクスポートファイルを生成するステップ(S1220)と、を含む。
1つの実施例では、前記の動画ファイル処理方法は、動画ファイルエクスポートプラグインとして端末にインストールすることができ、端末は、当該プラグインによって前記動画ファイル処理方法を実行することができ、すなわち、読み取られた元動画ファイルの動画特殊効果データをベクトルエクスポート方式、ビットマップシーケンスフレームエクスポート方式およびビデオフレームエクスポート方式のうちの1つで処理して、対応する動画エクスポートファイルを得ることができる。
図13は、1つの実施例においてベクトルエクスポート方式でエクスポートしてPAGファイルを得るためのインタフェースを示す図である。PAGExporterプラグインをインストールした後、AEソフトウェアにおいてエクスポートする必要がある元動画ファイルを選択して、メニューにおける番号が1302の「ファイル」(当該「ファイル」は、その名称がファイルである選択肢である)をクリックした場合、ドロップダウンボックスをポップアップし、その後、当該ドロップダウンボックスにおいて番号が1304の「エクスポート」をクリックした場合、別のドロップダウンボックスをポップアップし、次に、当該ドロップダウンボックスにおいて番号が1306の「PAGfile」をクリックし、すなわち、「ファイル」→「エクスポート」→「PAGfile」をこの順番でクリックし、最後に保存パスを選択すれば、PAGフォーマットの動画エクスポートファイルをエクスポートして得ることができる。
図14(a)は、1つの実施例においてシーケンスフレームエクスポート方式でエクスポートしてPAGファイルを得るためのインタフェースを示す図である。PAGExporterプラグインをインストールした後、AEソフトウェアにおいてエクスポートする必要がある元動画ファイルを選択して、メニューにおける番号が1402の「AfterEffectsCC」をクリックした場合、ドロップダウンボックスをポップアップし、その後、当該ドロップダウンボックスにおいて番号が1404の「プリファレンス」をクリックした場合、別のドロップダウンボックスをポップアップし、当該ドロップダウンボックスにおいて番号が1406の「PAGConfig…」をクリックし、すなわち、「AfterEffectsCC」→「プリファレンス」→「PAGConfig…」をこの順番でクリックした場合、図14(b)に示すように設定インタフェースをポップアップする。設定インタフェースにおいて、エクスポートパラメータを設定することができ、エクスポートパラメータは、汎用エクスポートパラメータ1410とシーケンスフレームエクスポートパラメータ1412に分けられ、そのうち、汎用エクスポートパラメータ1410は、画像圧縮品質(0~100に設定することができる)、TAGlevelおよびエクスポートバージョン制御を含み、TAGlevelは、当該動画エクスポートファイルが対応できるSDKバージョンのレベルを指す。汎用エクスポートパラメータ1410のボタンを押下すると、設定インタフェースに画像圧縮品質、TAGlevelおよびエクスポートバージョン制御を表示し、その後、パラメータ設定を行う。また、シーケンスフレームエクスポートパラメータ1420は、エクスポート寸法の上限、キーフレームの間隔、拡大縮小比例およびフレームレートなどを含む。シーケンスフレームエクスポートパラメータ1420のボタンを押下すると、設定インタフェースにエクスポート寸法の上限、キーフレームの間隔、拡大縮小比例およびフレームレートを表示し、その後、パラメータ設定を行う。エクスポートパラメータを設定した後に確認をクリックし、保存パスを選択してエクスポートファイルの拡張子名を「_bmp」または「_BMP」に修正して、ビットマップシーケンスフレームエクスポート方式でエクスポートして得られたPAGファイルを得る。エクスポートファイルの拡張子名を「_video」または「_VIDEO」に修正すると、ビデオシーケンスフレームエクスポート方式でエクスポートして得られたPAGファイルを得る。
図15に示すように、1つの実施例は、動画ファイル処理方法を提供する。本実施例は、主に当該方法を前記の図1における動画ファイルエクスポート端末110に応用することを例として説明するが、以下では、説明の便宜のために、直接に端末として説明する。図15に示すように、当該画像ファイル処理方法は、具体的に以下のステップを含む。
S1502において、元動画ファイルの動画ベクトルデータを符号化して得られた動画エクスポートファイルを取得する。
ここで、元動画ファイルは、原始の動画プロジェクトファイルであり、動画プロジェクトファイルは、動画全体が表現可能な動画特殊効果を記述するためのデータである動画ベクトルデータを含む。動画は、複数のレイヤー(Layer)によって実現され、動画ベクトルデータは、具体的に各動画レイヤーの動画レイヤーデータを含み、さらに元動画ファイル全体の動画基本属性データを含む。端末は、元動画ファイルを取得した後、元動画ファイルから各レイヤーに対応する動画ベクトルデータを読み取り、その後、動画ベクトルデータを目標フォーマットのデータ構造で記憶することができ、得られた動画エクスポートファイルに含まれるデータが元動画ファイルのレイヤー構造と一対一に対応し、動画レイヤー構造に対する復元である。ここで、動画ベクトルデータを符号化して得られた動画エクスポートファイルは、実際にベクトルエクスポート方式で得られた目標フォーマットの動画ファイルである。
S1504において、動画エクスポートファイルを解析して、各レイヤーに対応する動画描画データの静止区間を得る。
動画再生過程は、復号化、レンダリングおよびスクリーン表示を含む。そのうち、復号化は、物理ファイル復号化およびデータ解析を含み、物理ファイル復号化は、原始の動画エクスポートファイルを復号化してバイナリシーケンスを取得し、そして、動画オブジェクトの形式でバイナリシーケンスを内部メモリにロードする過程を指し、動画オブジェクトは、動画エクスポートファイルの全ての動画属性データを含む。
データ解析は、ある動画フレームを再生する必要がある場合、内部メモリから動画オブジェクトを読み取って、動画オブジェクトに基づいて解析して現在の動画フレームの動画描画データを得る過程を指す。レンダリングは、動画フレームに対応する動画描画データから動画フレームのレンダリングデータを算出する過程を指す。スクリーン表示は、動画フレームのレンダリングデータをディスプレイに送信して、ディスプレイに動画フレームを表示させる過程を指す。従って、ここでの動画描画データは、動画フレームを記述するためのデータであり、例えば、ある形状を記述するパス情報などがある。動画エクスポートファイルは、元動画ファイルの動画ベクトルデータを符号化して得られたものであるため、ここでの動画エクスポートファイルは、レイヤー単位で動画全体の効果を記述しており、つまり、1つのレイヤーは、1つの動画フレームに対応してもよいし、複数の動画フレームに対応してもよく、この場合、複数の動画フレームは共に当該レイヤーに対応する動画描画データに基づいてレンダリングする必要がある。
1つのレイヤーが複数の動画フレームに対応する場合、これらの複数の動画フレームは、当該レイヤーに対応する動画描画データの静止区間を構成し、つまり、これらの複数の動画フレームを再生する場合に、いずれも当該レイヤーに対応する動画描画データを必要とする。静止区間は、実際に複数の連続する動画フレームで構成されたフレーム区間であり、例えば、あるレイヤーlayerに対応する動画描画データの静止区間は[m,n]であることは、動画エクスポートファイルのm番目のフレームからn番目のフレームまでの描画にはいずれも当該レイヤーlayerに対応する動画描画データに基づいてレンダリングする必要があり、当該レイヤーに対応する属性値が変化しないことを指す。動画エクスポートファイル全体の動画描画データの静止区間は、含まれる全てのレイヤーの静止区間の共通部分であると理解することができる。
各レイヤーは、より小さい粒子の動画属性グループ(group)で構成されてもよい。ここで、動画属性グループは、変換(transform)、レイヤー内のマスク(mask)、レイヤー間のマスク(trackMatter)、レイヤースタイル(layerStyle)、効果(effect)およびコンテンツ(content)などの6種類の動画属性グループがある。従って、レイヤーに対応する動画描画データの静止区間は、あるレイヤーに含まれる全ての動画属性グループ(group)の静止区間の共通部分を指す。
例えば、動画エクスポートファイルを解析し、動画エクスポートファイルにおけるあるSolidlayerがtransform、maskおよびcontentの3種類の動画属性グループを含んでおり、そして、当該レイヤーが動画属性グループtransformにおいて複数の連続する動画フレーム[t1,t2]における属性値が変化しないと、当該複数の連続する動画フレーム[t1,t2]は、transformという動画属性グループの静止区間を構成する。当該レイヤーの動画属性グループmaskが複数の連続する動画フレーム[m1,m2]において属性値が変化しないと、当該複数の連続する動画フレーム[m1,m2]は、maskという動画属性グループの静止区間を構成する。同様に、複数の連続する動画フレーム[c1,c2]は、Textlayerという動画属性グループの静止区間を構成し、[t1,t2]、[m1,m2]および[c1,c2]で構成された共通部分は、当該Solidlayerに対応する静止区間となる。
各動画属性グループがより小さい粒子の各動画属性値で構成されるため、動画属性グループの静止区間は、当該動画属性グループに含まれる全ての動画属性値が複数の連続する動画フレームにおいて変化しない場合のこれらの複数の連続する動画フレームのフレーム区間を指し、すなわち、動画属性値は、Holdタイプである。動画属性グループにおける動画属性は、時間軸属性とも呼ばれ、すなわち、属性値が再生進度と関係する属性であり、再生進度の変化に伴って増減してもよいし、再生進度に伴ってベジェ曲線となってもよいし、Holdタイプであってもよく、すなわち、ある再生時間範囲内に変化しなくてもよい。
例えば、動画属性グループtransformに含まれる動画属性は、アンカーポイント(anchorpoint)、スケール(scale)、回転(rotation)、透明度(opacity)を含んでおり、複数の連続する画面[t1,t2]は、4つの動画属性において対応する動画属性値がいずれも変化しないと、当該動画属性グループtransformに対応する静止区間は、[t1,t2]となる。
1つの実施例では、端末は、動画を再生する前に、動画エクスポートファイルを解析し、各レイヤーに含まれる動画属性値が変化しない区間範囲を見つけて、各レイヤーに含まれる動画属性グループの静止区間を決定し、その後、全ての動画属性グループの静止区間に対して共通部分を求めて、レイヤーの静止区間を得た後、全てのレイヤーの静止区間に対して共通部分を求めて、動画全体の静止区間を得ることができる。
S1506において、処理対象となるフレームがレイヤーに対応する動画描画データの静止区間に属する場合、キャッシュからレイヤーに対応する動画描画データを取得する。
静止区間における動画フレームに対応する動画描画データが変化しないため、端末は、動画エクスポートファイルを解析して静止区間における開始フレームの動画描画データを得て、開始フレームの動画描画データをキャッシュすることにより、当該静止区間における他の動画フレームをレンダリングして表示する時、キャッシュされた開始フレームの動画描画データに基づいてレンダリングおよび表示を行うことができる。
さらに、静止区間は、レイヤー(Layer)の動画描画データに対応する静止区間と、動画属性グループ(Group)の動画描画データに対応する静止区間とに分けることができるため、端末は、各レイヤーに対応する静止区間における開始フレームに対応する当該レイヤーの動画描画データをキャッシュすることができ、さらに動画属性グループに対応する静止区間における開始フレームに対応する当該動画属性グループの動画描画データをキャッシュすることができる。
具体的には、処理対象となるフレームは、現在のレンダリングおよび表示の対象となる動画フレームであり、端末は、現在の再生進度に基づいて現在再生する動画フレームを算出することができる。処理対象となるフレームがあるレイヤーの動画描画データの静止区間に属する場合、キャッシュされた当該静止区間における開始フレームに対応する当該レイヤーの動画描画データを取得することができる。キャッシュから処理対象となるフレームに対応する開始動画描画データを直接取得することにより、大量の計算を回避し、レンダリング過程における消費時間を減少し、動画の再生をよりスムーズにすることができる。
1つの実施例では、前記の動画ファイル処理方法は、
処理対象となるフレームがレイヤーに対応する動画描画データの静止区間に属しない場合、または、レイヤーに対応する動画描画データに静止区間が存在しない場合、動画エクスポートファイルを解析して得られた動画オブジェクトを取得するステップと、動画オブジェクトを読み取ってレイヤーに対応する動画描画データを得るステップと、をさらに含む。
さらに、処理対象となるフレームがあるレイヤーの動画描画データの静止区間に属しない場合、または、全てのレイヤーに静止区間が存在しない場合、端末は、動画エクスポートファイルを解析して得られた動画オブジェクトを読み取り、動画オブジェクトに基づいて解析して処理対象となるフレームに対応する各レイヤーの動画描画データを得ることができる。
勿論、端末は、各レイヤーに含まれる動画属性グループの静止区間をトラバースし、処理対象となるフレームがトラバースされたレイヤーのある動画属性グループに対応する静止区間に属する場合、キャッシュされた当該静止区間における開始フレームに対応する当該動画属性グループの動画描画データを取得してもよい。処理対象となるフレームがいずれかの動画属性グループに対応する静止区間に属しない場合、または、全ての動画属性グループに対応する静止区間が存在しない場合、動画オブジェクトを解析して処理対象となるフレームの動画描画データを得る必要がある。
S1508において、処理対象となるフレームに対応する各レイヤーの動画描画データに基づいて動画のレンダリングを行う。
具体的には、動画のレンダリングは、動画描画データに基づいて対応するレンダリングデータを算出することであり、レンダリングデータは、表示スクリーンに可視の動画画面を表示させることができる。端末は、処理対象となるフレームに対応する各レイヤーの動画描画データに基づいて処理対象となるフレームに対応する各レイヤーのレンダリングデータを算出して、各レイヤーのレンダリングデータを組み合わせた後にスクリーン表示を行うことができる。
1つの実施例では、前記の動画ファイル処理方法は、
現在のレンダリング進度を取得するステップと、レンダリング進度、動画エクスポートファイルに対応する総フレーム数および総時間長に基づいて処理対象となるフレームのフレーム番号を算出するステップと、各レイヤーに対応する動画描画データの静止区間をトラバースするステップと、静止区間からフレーム番号を見つけた場合、処理対象となるフレームがレイヤーに対応する動画描画データの静止区間に属すると決定するステップと、をさらに含む。
具体的には、スクリーン表示の対象となるレンダリングデータがフレームバッファ(FrameBuffer)に記憶され、フレームバッファに記憶されたレンダリングデータが絶えずに変化しており、端末の表示スクリーンの論理回路はフレームバッファにおけるレンダリングデータを用いて表示スクリーンにおける全ての画素点が表現する画面を周期的にリフレッシュし、この周期は一般的に60Hzであり、すなわち、論理回路のリフレッシュ頻度は60回/秒であり、約16.7msで1回リフレッシュする。従って、一定の時間内にフレームバッファ内のレンダリングデータが変化しないと、端末に表示された画面も変化しなく、フレームバッファのレンダリングデータが絶えずに更新されれば、動画画面を1フレームずつ再生することを実現することができる。
端末は、レンダリングを開始した後、表示スクリーンの定時リフレッシュロジックを起動することにより、フレームバッファからレンダリングデータを周期的に取得してスクリーン表示を行うことができる。そして、端末は、今回のリフレッシュ時の時点および初回のリフレッシュ時の時点を取得し、この2回のリフレッシュ時の時点の間の時間差に基づいて現在のレンダリング進度を算出することができる。例えば、初回のリフレッシュの時間が10ms目であり、2回目のリフレッシュの時間が10+16.7=26.7ms目である場合、レンダリング進度は16.7msである。10回目のリフレッシュの時間は177ms目であり、そして、レンダリング進度は167msである。
動画エクスポートファイルの総フレーム数は、動画エクスポートファイル全体に含まれる動画フレームの総数であり、動画エクスポートファイルを直接解析して得られてもよく、動画エクスポートファイルを解析して得られたフレームレート(framerate)、総時間長(duration)に基づいて算出して得られてもよい。端末は、以下の式に基づいて算出して整数丸めることによって、処理対象となるフレームのフレーム番号を得ることができる。
フレーム番号=レンダリング進度*総フレーム数/総時間長
動画のフレームレートが端末の表示スクリーンのリフレッシュ頻度と異なってもよく、端末の表示スクリーンのリフレッシュ周期が比較的に短いので、複数のリフレッシュ周期でレンダリングされたものが同じフレームのコンテンツであることがあり、すなわち、処理対象となるフレームが現在でレンダリングされて表示された動画フレームと同じものであることがある。この場合、スクリーン表示を繰り返さずに直接戻る。
具体的には、端末は、各レイヤーの動画描画データに対応する静止区間を算出して得た後、各レイヤーの静止区間をトラバースすることができ、あるレイヤーの静止区間から処理対象となるフレームのフレーム番号を見つけた場合、処理対象となるフレームは、当該レイヤーの動画描画データの静止区間に属する。
図16は、1つの実施例においてベクトルエクスポート方式でエクスポートされた動画エクスポートファイルを動画レンダリングするための流れを示すフローチャートである。動画エクスポートファイルの再生を開始する時、まずは表示スクリーンの定時リフレッシュロジックを起動させ、すなわち、一定の周期ごとにフレームバッファからレンダリングデータを取得してスクリーン表示を行う。今回のリフレッシュ後、現在の時点および初回のリフレッシュの時点に基づいて現在のレンダリング進度を算出し、レンダリング進度に基づいて算出した処理対象となるフレームのフレーム番号が前回算出したフレーム番号と同じである場合、レンダリングデータの算出およびスクリーン表示を繰り返す必要がなく、算出した処理対象となるフレームのフレーム番号が前回と異なる場合、クリアスクリーン処理を実行する必要があり、そして、クリアスクリーン処理の後、算出したフレーム番号に基づいて各レイヤーに対応する動画描画データの静止区間をトラバースし、当該フレーム番号がトラバースしたレイヤーに対応する動画描画データの静止区間に属する場合、キャッシュされた当該静止区間における開始フレームの動画描画データを取得し、当該動画描画データに基づいて処理対象となるフレームのレンダリングデータを算出し、当該フレーム番号があるレイヤーに対応する動画描画データの静止区間に属しない場合、動画オブジェクトに基づいて解析して処理対象となるフレームの動画描画データを得た後、レンダリングデータを算出する必要がある。最後に、処理対象となるフレームのレンダリングデータでフレームバッファ内のコンテンツをカバーすると、次回のリフレッシュ時間が到来する時に、処理対象となるフレームのレンダリングデータに基づいてスクリーン表示を行って、処理対象となるフレームの再生画面を表示することができる。
前記の動画ファイル処理方法では、レイヤーに対応する動画描画データの静止区間とは、動画エクスポートファイルに対応する動画フレームにおいて、あるレイヤーに対応するレイヤー属性が変化しない連続する複数の動画フレームで構成されたフレームシーケンスを指す。処理対象となるフレームを表示する必要がある場合、各レイヤーに対応する動画描画データの静止区間をトラバースする必要があり、処理対象となるフレームが当該レイヤーに対応する動画描画データの静止区間に属する場合、キャッシュから当該レイヤーに対応する動画描画データを直接取得することにより、キャッシュを十分に利用して動画描画データの繰り返し算出を減少させ、動画のレンダリング効率を大幅に向上させることができる。
なお、図3、図8、図9、図12、図15および図16のフローチャートにおける各ステップは、矢印の指示に従って順次表示されるが、これらのステップは必ずしも矢印で示される順番で実行される必要はない。本明細書に特に説明がない限り、これらのステップの実行順序は、厳密に限定されるものではなく、他の順序で実行されてもよい。そして、図3、図8、図9、図12、図15および図16における少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずしも同一時刻で実行される必要がなく、異なる時刻で実行されてもよく、これらのサブステップまたは段階の実行順序も必ずしも逐次的に行われるものではなく、他のステップあるいは他のステップのサブステップまたは段階の少なくとも一部と順番にまたは交互に実行されてもよい。
本発明は、動画プレビューアをさらに提供し、図17は、動画プレビューアのインタフェースを示す図である。当該動画プレビューアは、図2における動画ファイルプレビュー端末120において動作する動画プレビューアPAGViewerであってもよい。動画ファイルプレビュー端末は、動画プレビューアによって動画エクスポートファイル(PAGファイル)のプレビューおよび再生を行うことができ、そして、動画エクスポートファイルに対する全体プレビュー、フレーム別プレビューを実現することができる。動画エクスポートファイルをプレビューすることにより、設計者が動画エクスポートファイルにおける各フレームの画面と元動画ファイル(動画プロジェクトファイル)に差異が存在するか否かを容易に確認することができる。そして、動画プレビューアによって、消費時間パラメータを含む動画エクスポートファイルの性能パラメータを算出することができ、クライアントでの動画エクスポートファイルのレンダリング性能の定量的評価を実現することができ、設計者が元動画ファイルを容易に最適化することができる。
動画ファイルプレビュー端末に動画プレビューアをインストールした後、動画エクスポートファイルをダブルクリックすれば、図17に示すようにプレビューすることができ、図17の動画表示領域1702に表示された内容は、動画エクスポートファイルの「人山人海.pag」のプレビュー画面である。
PAGViewerが対応できるショートカットキーおよび機能は、以下のとおりである。
スペースキー:PAGファイルの再生および一時停止を制御する。
Bキー:PAGファイルを再生する時の背景色を切り替え、透明背景とカラー背景との切り替えを対応する。
左キー:フレーム毎にプレビューし、再生方向に1フレーム前進する。
右キー:フレーム毎にプレビューし、再生方向に1フレーム後退する。
Sキー:PAGファイルの現在のフレームをスクリーンショットしてピクチャとしてエクスポートし、現在再生されているPAGファイルと同じレベルのパスに記憶する。
Pキー:動画監視パネルを呼び出しまたは隠し、動画監視パネルは図18に示すとおりである。動画プレビューアによってPAGファイルを開いた後、動画プレビューアは、メニュー領域182と、動画表示領域184と、動画監視パネル186とを含み、動画監視パネル186は、動画ファイル記述領域1862を含み、動画ファイル記述領域は、動画ファイルのフレームレート(FrameRate)、動画の総時間長(Duration)、内部メモリにおける動画ファイルの占用するサイズ(File)、ビデオメモリにおける動画ファイルの占用するサイズ(Graphics)、動画ファイルのレイヤー数(Layer)、動画ファイルにおけるタブコードの最高値(TagLevel)、動画フレームの幅(Width)および動画フレームの高さ(Height)などを表示するためのものであり、動画監視パネル186は、動画フレーム記述領域1864をさらに含み、動画フレーム記述領域1864は、動画ファイルにおける各動画フレームのピクチャ復号化時間またはスクリーンショット復号化時間を表示するためのものであり、さらに各動画フレームのレンダリング時間およびスクリーン表示時間を表示するためにも用いられる。動画フレーム記述領域1864は、各動画フレームの総消費時間(平均復号化時間(Image)+レンダリング時間(Render)+スクリーン表示時間(Present))を記述するための棒グラフをさらに含み、そして、色で各々の消費時間の割合を区別することができる。
ビットマップシーケンスフレームエクスポート方式でエクスポートして得られた動画エクスポートファイルは、実際に複数フレームのピクチャで構成されるため、対応するキャッシュ論理が存在せず、動画エクスポートファイルを再生する時に各フレームのピクチャを復号化してレンダリングデータを得た後に描画する必要がある。具体的には、復号化の時、キービットマップ画像に対応する符号化ピクチャに対して、符号化ピクチャ全体を復号化する必要がある一方、非キービットマップ画像に対応する符号化ピクチャに対して、差異画素領域の位置情報および幅高さ情報に基づいて差異画素領域のみを復号化して差異画素領域のレンダリングデータを得る必要がある。
ビデオシーケンスフレームエクスポート方式でエクスポートして得られた動画エクスポートファイルに対しても、実際に複数フレームのピクチャで構成され、ビットマップシーケンスフレームエクスポートによって得られた動画ファイルの描画方式と類似する。
1つの実施例では、図19に示すように、動画ファイル処理装置1900を提供し、当該装置は、取得モジュール1902と、比較モジュール1904と、符号化モジュール1906と、エクスポートモジュール1908とを含む。そのうち、
取得モジュール1902は、元動画ファイルに対応するビットマップ画像シーケンスを取得するためのものであり、
比較モジュール1904は、ビットマップ画像シーケンスにおけるビットマップ画像と対応するキービットマップ画像とに対して画素比較を行って、ビットマップ画像における差異画素領域を得るためのものであり、
符号化モジュール1906は、ビットマップ画像が非キービットマップ画像である場合、差異画素領域をピクチャ符号化方式で符号化して、ビットマップ画像に対応する符号化ピクチャを得るためのものであり、
エクスポートモジュール1908は、ビットマップ画像シーケンスにおける各ビットマップ画像に対応する符号化ピクチャに基づいて、元動画ファイルに対応する動画エクスポートファイルを生成するためのものである。
1つの実施例では、符号化モジュール1906は、さらにビットマップ画像がキービットマップ画像である場合、直接にピクチャ符号化方式でビットマップ画像を符号化して、ビットマップ画像に対応する符号化ピクチャを得るために用いられる。
1つの実施例では、取得モジュール1902は、さらに、元動画ファイルを取得し、元動画ファイルを再生し、元動画ファイルに対応する再生画面を順にスクリーンショットして、元動画ファイルに対応するビットマップ画像シーケンスを得るために用いられる。
1つの実施例では、比較モジュール1904は、さらにビットマップ画像シーケンスにおけるビットマップ画像と対応するキービットマップ画像とに対して画素比較を行って、ビットマップ画像における差異画素領域を得、差異画素点に基づいてビットマップ画像における差異画素領域を決定するために用いられる。
1つの実施例では、比較モジュール1904は、差異画素点決定ユニットをさらに含み、差異画素点決定ユニットは、ビットマップ画像に対応するキービットマップ画像における各画素点の画素データを取得し、ビットマップ画像における各画素点の画素データを取得し、同一位置の画素点の画素データを比較して、ビットマップ画像における差異画素点を特定するためのものである。
1つの実施例では、差異画素領域は、矩形画素領域であり、動画ファイル処理装置1900は、キービットマップ画像決定モジュールをさらに含み、当該キービットマップ画像決定モジュールは、矩形画素領域の寸法とビットマップ画像の寸法との差異が予め設定された閾値よりも小さい場合、ビットマップ画像がキービットマップ画像であると特定し、矩形画素領域の寸法とビットマップ画像の寸法との差異が予め設定された閾値よりも大きい場合、ビットマップ画像が非キービットマップ画像であると特定するためのものである。
1つの実施例では、動画ファイル処理装置1900は、キービットマップ画像決定モジュールをさらに含み、当該キービットマップ画像決定モジュールは、ビットマップ画像シーケンスにおける1番目のビットマップ画像をキービットマップ画像として選択し、1番目のビットマップ画像を開始画像とし、予め設定された数を間隔するビットマップ画像をビットマップ画像シーケンスにおけるキービットマップ画像とするためのものである。
1つの実施例では、差異画素領域は、矩形画素領域であり、エクスポートモジュール1908は、さらに矩形画素領域に対応する画素幅、画素高さおよび矩形画素領域における開始画素点の座標を特定し、画素幅、画素高さおよび開始画素点の座標を符号化ピクチャに対応するピクチャ情報に記憶するために用いられる。
1つの実施例では、動画ファイル処理装置1900は、区分モジュールと合成モジュールとをさらに含み、区分モジュールは、ビットマップ画像をカラーチャネルビットマップと透明度チャネルビットマップに区分するためのものであり、合成モジュールは、カラーチャネルビットマップと透明度チャネルビットマップを合成して、合成ビットマップを得るためのものである。符号化モジュールは、さらにビデオ符号化方式で合成ビットマップを符号化して、ビットマップ画像に対応する符号化ピクチャを得るために用いられる。
1つの実施例では、動画ファイル処理装置1900は、動画ベクトルデータ取得モジュールをさらに含み、当該動画ベクトルデータ取得モジュールは、元動画ファイルの動画ベクトルデータを取得するためのものであり、動画ベクトルデータは、動画基本属性データおよび動画レイヤーデータを含む。符号化モジュールは、さらに動画基本属性データおよび動画レイヤーデータを目標フォーマットのデータ構造で記憶して、元動画ファイルに対応する動画エクスポートファイルを得るために用いられる。
前記の動画ファイル処理装置1900は、元動画ファイルに基づいて処理を行っており、ネイティブコードによって動画ファイルを実現する場合と比べて、開発量の減少およびコストの低減を図ることができる。また、元動画ファイルに対応するビットマップ画像シーケンスにおける各ビットマップ画像をピクチャフォーマットの符号化ピクチャに変換して記憶することにより、元動画ファイルの様々な動画特性データを記憶する必要がなく、各フレームの符号化ピクチャを記憶すればよく、全ての複雑な動画効果を対応することができる。そして、動画エクスポートファイルを復号化する時に、ピクチャフォーマットに従って復号すればよいので、復号化効率が高くなる。また、隣接するビットマップ画像間の差異が小さいため、現在のビットマップ画像を対応するキービットマップ画像と画素比較を行うことによって現在のビットマップ画像における差異画素領域を得て、差異画素領域の画素データのみを符号化して符号化ピクチャを得ることによって、動画エクスポートファイル全体のサイズを小さくさせることができる。
1つの実施例では、図20に示すように、動画ファイル処理装置2000を提供し、当該装置は、取得モジュール2002と、区分モジュール2004と、合成モジュール2006と、符号化モジュール2008と、エクスポートモジュール2010とを含み、そのうち、
取得モジュール2002は、元動画ファイルに対応するビットマップ画像シーケンスを取得するためのものであり、
区分モジュール2004は、ビットマップ画像シーケンスにおける各ビットマップ画像をカラーチャネルビットマップと透明度チャネルビットマップに区分するためのものであり、
合成モジュール2006は、カラーチャネルビットマップと透明度チャネルビットマップを合成して、合成ビットマップを得るためのものであり、
符号化モジュール2008は、ビデオ符号化方式で合成ビットマップを符号化して、ビットマップ画像に対応する符号化ピクチャを得るためのものであり、
エクスポートモジュール2010は、ビットマップ画像シーケンスにおける各ビットマップ画像に対応する符号化ピクチャに基づいて、元動画ファイルに対応する動画エクスポートファイルを生成するためのものである。
1つの実施例では、取得モジュール2002は、さらに、元動画ファイルを取得し、元動画ファイルを再生し、元動画ファイルに対応する再生画面を順にスクリーンショットして、元動画ファイルに対応するビットマップ画像シーケンスを得るために用いられる。
1つの実施例では、区分モジュール2004は、さらに、ビットマップ画像における各画素点の画素データを取得し、画素データから各画素点に対応する色データおよび透明度データを抽出し、各画素点の色データに基づいてビットマップ画像に対応するカラーチャネルビットマップを生成し、各画素点の透明度データに基づいてビットマップ画像に対応する透明度チャネルビットマップを生成するために用いられる。
前記の動画ファイル処理装置2000は、元動画ファイルに基づいて処理を行っており、ネイティブコードによって動画ファイルを実現する場合と比べて、開発量の減少およびコストの低減を図ることができる。また、各ビットマップ画像をカラーチャネルビットマップと透明度チャネルビットマップに区分して、カラーチャネルビットマップと透明度チャネルビットマップとを合成して合成ビットマップを得た後、ビデオ符号化方式で合成ビットマップを符号化して、ビットマップ画像に対応する符号化ピクチャを得ることによって、符号化ピクチャに基づいて生成された動画エクスポートファイルがより小さくなり、そして、ビデオ復号化方式で動画エクスポートファイルを復号化することができ、復号化効率がより高くなる。
1つの実施例では、図21に示すように、動画ファイル処理装置2100を提供し、当該装置は、ファイル取得モジュール2102と、解析モジュール2104と、キャッシュデータ取得モジュール2106と、レンダリングモジュール2108とを含み、そのうち、
ファイル取得モジュール2102は、元動画ファイルの動画ベクトルデータを符号化して得られた動画エクスポートファイルを取得するためのものであり、
解析モジュール2104は、動画エクスポートファイルを解析して、各レイヤーに対応する動画描画データの静止区間を得るためのものであり、
キャッシュデータ取得モジュール2106は、処理対象となるフレームがレイヤーに対応する動画描画データの静止区間に属する場合、キャッシュからレイヤーに対応する動画描画データを取得するためのものであり、
レンダリングモジュール2108は、処理対象となるフレームに対応する各レイヤーの動画描画データに基づいて動画のレンダリングを行うためのものである。
1つの実施例では、動画ファイル処理装置2100は、動画描画データ解析モジュールをさらに含み、当該動画描画データ解析モジュールは、処理対象となるフレームがレイヤーに対応する動画描画データの静止区間に属しない場合、または、レイヤーに対応する動画描画データに静止区間が存在しない場合、動画エクスポートファイルを解析して得られた動画オブジェクトを取得し、動画オブジェクトを読み取ってレイヤーに対応する動画描画データを得るためのものである。
1つの実施例では、動画ファイル処理装置2100は、静止区間トラバースモジュールをさらに含み、当該静止区間トラバースモジュールは、現在のレンダリング進度を取得し、レンダリング進度、動画エクスポートファイルに対応する総フレーム数および総時間長に基づいて処理対象となるフレームのフレーム番号を算出し、各レイヤーに対応する動画描画データの静止区間をトラバースし、静止区間からフレーム番号を見つけた場合、処理対象となるフレームがレイヤーに対応する動画描画データの静止区間に属すると決定するステップと、をさらに含む。
前記の動画ファイル処理装置2100では、レイヤーに対応する動画描画データの静止区間とは、動画エクスポートファイルに対応する動画フレームにおいて、あるレイヤーに対応するレイヤー属性が変化しない連続する複数の動画フレームで構成されたフレームシーケンスを指す。処理対象となるフレームを表示する必要がある場合、各レイヤーに対応する動画描画データの静止区間をトラバースする必要があり、処理対象となるフレームが当該レイヤーに対応する動画描画データの静止区間に属する場合、キャッシュから当該レイヤーに対応する動画描画データを直接取得することにより、キャッシュを十分に利用して動画描画データの繰り返し算出を減少させ、動画のレンダリング効率を大幅に向上させることができる。
図22は、1つの実施例におけるコンピュータ装置の内部構成を示す図である。当該コンピュータ装置は、具体的に図1における各端末であってもよい。図22に示すように、当該コンピュータ装置は、システムバスを介して接続されたプロセッサ、メモリ、ネットワークインタフェース、入力装置およびディスプレイスクリーンを備えている。そのうち、メモリは、不揮発性記憶媒体と内部メモリとを含む。このコンピュータ装置の不揮発性記憶媒体には、オペレーティングシステムが記憶されており、さらに、プロセッサによって実行される際に、動画ファイル処理方法をプロセッサに実現させるためのコンピュータプログラムが記憶されていてもよい。この内部メモリにも、プロセッサによって実行される際に、動画ファイル処理方法をプロセッサに実行させるためのコンピュータプログラムが記憶されていてもよい。コンピュータ装置の表示スクリーンは、液晶ディスプレイまたは電子インクディスプレイとすることができる。コンピュータ装置の入力装置は、表示スクリーンに被覆されるタッチ層であってもよいし、コンピュータ装置のケースに設けられたボタン、トラックボールまたはタッチパッドであってもよいし、外付けのキーボード、タッチパッドまたはマウス等であってもよい。
当業者が理解できるように、図22に示す構成は、本発明の技術方案に関する一部の構成に過ぎなく、本発明の技術方案を応用するコンピュータ装置を限定するためのものではなく、具体的なコンピュータ装置は、図示した構成よりも多くまたは少ない部材を含んだり、ある部材と組み合わせたり、異なる部材の配置を有したりしてもよい。
1つの実施例では、本発明が提供する動画ファイル処理装置1900は、図22に示すようなコンピュータ装置に動作可能なコンピュータプログラムとして実現することができる。コンピュータ装置のメモリは、例えば図19に示す取得モジュール1902、比較モジュール1904、符号化モジュール1906およびエクスポートモジュール1908などのような、当該動画ファイル処理装置1900を構成する各プログラムモジュールを記憶することができる。各プログラムモジュールで構成されるコンピュータプログラムは、本明細書で説明した本発明の各実施例に係る動画ファイル処理方法におけるステップをプロセッサに実行させる。
例えば、図22に示すコンピュータ装置は、図19に示す動画ファイル処理装置1900における取得モジュール1902によってステップS302を実行することができる。コンピュータ装置は、比較モジュール1904によってステップS304を実行することができる。コンピュータ装置は、符号化モジュール1906によってステップS306を実行することができる。コンピュータ装置は、エクスポートモジュール1908によってステップS308を実行することができる。
1つの実施例では、本発明が提供する動画ファイル処理装置2000は、図22に示すようなコンピュータ装置に動作可能なコンピュータプログラムとして実現することができる。コンピュータ装置のメモリは、例えば図20に示す取得モジュール2002、区分モジュール2004、合成モジュール2006、符号化モジュール2008およびエクスポートモジュール2010などのような、当該動画ファイル処理装置2000を構成する各プログラムモジュールを記憶することができる。各プログラムモジュールで構成されるコンピュータプログラムは、本明細書で説明した本発明の各実施例に係る動画ファイル処理方法におけるステップをプロセッサに実行させる。
例えば、図22に示すコンピュータ装置は、図20に示す動画ファイル処理装置2000における取得モジュール2002によってステップS 902を実行することができる。コンピュータ装置は、区分モジュール2004によってステップS904を実行することができる。コンピュータ装置は、合成モジュール2006によってステップS906を実行することができる。コンピュータ装置は、符号化モジュール2008によってステップS908を実行することができる。コンピュータ装置は、エクスポートモジュール2010によってステップS910を実行することができる。
1つの実施例では、本発明が提供する動画ファイル処理装置2100は、図22に示すようなコンピュータ装置に動作可能なコンピュータプログラムとして実現することができる。コンピュータ装置のメモリは、例えば図21に示すファイル取得モジュール2102、解析モジュール2104、キャッシュデータ取得モジュール2106およびレンダリングモジュール2108などのような、当該動画ファイル処理装置2100を構成する各プログラムモジュールを記憶することができる。各プログラムモジュールで構成されるコンピュータプログラムは、本明細書で説明した本発明の各実施例に係る動画ファイル処理方法におけるステップをプロセッサに実行させる。
例えば、図22に示すコンピュータ装置は、図21に示す動画ファイル処理装置2100におけるファイル取得モジュール2102によってステップS1502を実行することができる。コンピュータ装置は、解析モジュール2104によってステップS1504を実行することができる。コンピュータ装置は、キャッシュデータ取得モジュール2106によってステップS1506を実行することができる。コンピュータ装置は、レンダリングモジュール2108によってステップS1508を実行することができる。
1つの実施例では、メモリとプロセッサを含み、メモリにはコンピュータプログラムが記憶され、コンピュータプログラムがプロセッサに実行される場合に、前記の動画ファイル処理方法のステップをプロセッサに実行させるコンピュータ装置を提供する。ここでの方法の手順は、前記の各実施例の動画ファイル処理方法における手順であってもよい。
1つの実施例では、コンピュータプログラムが記憶され、コンピュータプログラムがプロセッサに実行される場合に、前記の動画ファイル処理方法のステップをプロセッサに実行させるコンピュータ読取可能な記憶媒体を提供する。ここでの動画ファイル処理方法の手順は、前記の各実施例の動画ファイル処理方法における手順であってもよい。
当業者は、前記の実施例の方法を実施するための手順の全部または一部は、コンピュータプログラムによって関連するハードウェアが完了するように指示することができることを理解することができ、当該プログラムは、不揮発性のコンピュータ読取可能な記憶媒体に記憶することができ、当該プログラムが実行されると、前記の各方法の実施例の手順を含み得る。なお、本発明が提供する各実施例に用いられるメモリ、記憶、データベースまたはその他の媒体のいずれについても、不揮発性および/または揮発性のメモリを含むことができる。不揮発性メモリは、ROM(Read Only Memory)、PROM(Programmable Read Only Memory)、EPROM(Electrical Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)またはフラッシュメモリを含んでもよい。揮発性メモリは、RAM(Random Access Memory)または外部キャッシュメモリを含んでもよい。RAMは、特に限定されるものではなく、例えばSRAM(Static RAM)、DRAM(Dynamic RAM)、SDRAM(Synchronous Dynamic RAM)、DDRSDRAM(Double Data Rate Synchronous Dynamic RAM)、ESDRAM(Enhanced Synchronous Dynamic RAM)、SLDRAM(Synchlink Dynamic RAM)、RDRAM(Rambus Direct RAM)、DRDRAM(Direct Rambus Dynamic RAM)、およびRDRAM(Rambus Dynamic RAM)等の種々の形態で実現することができる。
以上の実施例の各技術特徴は任意に組み合わせが可能であり、説明を簡潔にするために、前記実施例における各技術特徴の全ての組み合わせについて説明していないが、これらの技術特徴の組み合わせに矛盾がない限り、本明細書に記載された範囲に含まれると考えられるべきである。
以上の実施例は本発明の幾つかの実施例を示したに過ぎず、具体的かつ詳細に説明したが、本発明の特許請求の範囲を限定するものであると理解すべきではない。なお、当業者であれば、本発明の要旨を逸脱しない範囲において種々の変形、改良が可能であり、それらはいずれも本発明の保護範囲に含まれる。したがって、本発明の保護範囲は添付の特許請求の範囲を参酌すべきである。