(57)【要約】  本出願はビデオ符号化方法、装置、コンピュータ可読記憶媒体及びコンピュータ機器に関わり、前記方法は、符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するステップと、現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するステップと、現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するステップと、第２利用可能ビットレートと第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性と第１履歴複雑性に従って、第２利用可能ビットレートと第１利用可能ビットレートとの間でビットレートを調整するステップと、調整された第２利用可能ビットレートに基づき、初期量子化パラメータを更新して、現在量子化パラメータを取得するステップと、現在量子化パラメータに基づき、現在ビデオフレームを符号化するステップとを含む。本出願によって提供される技術案は、より粗い時間粒度でビットレート制御を実現でき、それにより、より広い時間範囲内でのビットレート割り当てを実現し、ビットレート割り当てをより均一にし、符号化の品質を大幅に向上させる。
2021520160.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ機器が実行するビデオ符号化方法であって、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するステップと、
前記現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するステップと、
現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するステップであって、前記第２時間粒度が前記第１時間粒度より細かい時間単位であるステップと、
前記第２利用可能ビットレート及び前記第１利用可能ビットレートに基づいて、前記現在ビデオフレームの複雑性及び前記第１履歴複雑性に従って、前記第２利用可能ビットレートと前記第１利用可能ビットレートとの間でビットレートを調整するステップと、
調整された第２利用可能ビットレートに基づき前記初期量子化パラメータを更新し、現在量子化パラメータを取得するステップと、
前記現在量子化パラメータに基づき、前記現在ビデオフレームを符号化するステップとを含む方法。
【請求項２】
前記現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算する前記ステップは、
前記現在ビデオフレームに対応する第１履歴ビデオフレームシーケンスを決定するステップと、
前記第１履歴ビデオフレームシーケンスにおける各ビデオフレームの複雑性を取得するステップと、
各前記ビデオフレームの複雑性に基づき、前記現在ビデオフレームに対応する第１履歴複雑性を計算するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項３】
各前記ビデオフレームの複雑性に基づき、前記現在ビデオフレームに対応する第１履歴複雑性を計算するステップは、
各前記ビデオフレームの複雑性に基づき、第１履歴平均複雑性を計算するステップと、
各前記ビデオフレームの複雑性に基づき、第１履歴複雑性変動度を計算するステップと、
前記第１履歴平均複雑性と前記第１履歴複雑性変動度とを融合して、第１履歴複雑性を取得するステップと、を含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記現在ビデオフレームに対応する前記第１履歴複雑性は次の式で計算され、
【数１】
2021520160.tif 000025
ここで、Ｐｃｐｌｘｉは現在ビデオフレームｉに対応する第１履歴複雑性を示し、ｓａｔｄａｖｇｉは、前記現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算された第１履歴平均複雑性を示し、ｓａｔｄ  ｖａｒｉは前記現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算された第１履歴複雑性変動を示し、ｓａｔｄａｖｇｉ−ｓａｔｄ ｖａｒｉは第１履歴複雑性変動度を示し、ｓａｔｄｊは前記現在ビデオフレームｉの前のｊ番目のビデオフレームの複雑性を示し、ｗは所定の変動度重み係数を示すことを特徴とする請求項３に記載の方法。
【請求項５】
前記第２利用可能ビットレート及び前記第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性及び前記第１履歴複雑性に従って、前記第２利用可能ビットレートと前記第１利用可能ビットレートとの間でビットレートを調整するステップは、
前記現在ビデオフレームの複雑性を取得するステップと、
前記現在ビデオフレームの複雑性と前記第１履歴複雑性との間の大きさの関係を決定するステップと、 
前記現在ビデオフレームの複雑性が前記第１履歴複雑性より大きい場合、前記第１利用可能ビットレートから第１ビットレートを減らし、前記第１ビットレートを前記第２利用可能ビットレートに増加するステップと、
前記現在ビデオフレームの複雑性が前記第１履歴複雑性より小さい場合、前記第２利用可能ビットレートから第２ビットレートを減らし、前記第２ビットレートを前記第１利用可能ビットレートに増加するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記第１ビットレートと前記現在の第１利用可能ビットレートとは正の相関となり、前記第１ビットレートと、前記現在ビデオフレームの複雑性と前記第１履歴複雑性との差とは正の相関となることを特徴とする請求項５に記載の方法。
【請求項７】
前記第２ビットレートと前記現在の第２利用可能ビットレートとは正の相関となり、前記第２ビットレートと前記第２利用可能ビットレートの充足度とは正の相関となり、前記第２ビットレートと、前記現在ビデオフレームの複雑性と前記第１履歴複雑性との差とは、正の相関となることを特徴とする請求項５に記載の方法。
【請求項８】
前記方法はさらに、
前記第１ビットレートを増加した後、前記第２利用可能ビットレートが第２利用可能ビットレートに対応する最大値を超えた場合、前記第２利用可能ビットレートを第２利用可能ビットレートに対応する最大値に調整するステップと、
前記第２ビットレートを増加した後、前記第１利用可能ビットレートが第１利用可能ビットレートに対応する最大値を超えた場合、前記第１利用可能ビットレートを第１利用可能ビットレートに対応する最大値に調整するステップと、を含むことを特徴とする請求項５に記載の方法。
【請求項９】
前記第１ビットレート、前記第２ビットレートは次の式で計算され、
【数２】
2021520160.tif 000026
ここで、Ａｄｍ_Ｂｉｔｓは第１利用可能ビットレートから減らされた前記第１ビットレートを示し、Ａｄｓ_Ｂｉｔｓは第２利用可能ビットレートから減らされた前記第２ビットレートを示し、ＡｄＲａｔｉｏｎは前記現在ビデオフレームの複雑性と前記第１履歴複雑性との差を示し、ｍ_ｂｕｆｆｅｒは現在の第１利用可能ビットレートを示し、ｓ_ｂｕｆｆｅｒは現在の第２利用可能ビットレートを示し、ｍ_ｂｕｆｆｅｒｍａｘは第１利用可能ビットレートに対応する最大値を示し、ｓ_ｂｕｆｆｅｒｍａｘは第２利用可能ビットレートに対応する最大値を示し、
【数３】
2021520160.tif 000027
は前記第２利用可能ビットレートの充足度を示し、αは所定のバランス調整パラメータを示し、Ｍｉｎは最小値関数を示すことを特徴とする請求項５に記載の方法。
【請求項１０】
前記調整された前記第２利用可能ビットレートに基づき、前記初期量子化パラメータを更新して、現在量子化パラメータを取得する前記ステップは、
前記現在ビデオフレームに対応する第２時間粒度検出ウィンドウにおけるビデオフレームシーケンスを取得するステップと、
前記ビデオフレームシーケンス及び前記現在量子化パラメータに基づき推定された累積符号化ビットレートと、調整された第２利用可能ビットレートとの間が所定のビットレート関係に合うように、現在量子化パラメータが取得されるまで、前記初期量子化パラメータから数値を徐々に大きくするステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記現在量子化パラメータに基づき、前記現在ビデオフレームを符号化する前記ステップは、
前記現在量子化パラメータに基づき、前記現在ビデオフレームに対応する現在量子化ステップサイズを取得するステップと、
前記現在量子化ステップサイズに基づき、前記現在ビデオフレームを符号化することで、前記現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記方法はさらに、
前記現在ビデオフレームが属する目標ビデオフレームシーケンスに対応する目標ビットレートを取得するステップと、
前記目標ビットレート、前記目標ビデオフレームシーケンスのフレームレートに基づき、１フレームあたりの平均割当可能なビットレートを計算するステップと、 
符号化後、前記現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、
前記１フレームあたりの平均割当可能なビットレート、前記実際占有ビットレートに基づき、前記調整された第２利用可能ビットレートを更新して、次のビデオフレームに対応する第２利用可能ビットレートを取得するステップとを含むことを特徴とする請求項１乃至１１のいずれか１項に記載の方法。
【請求項１３】
ビデオ符号化装置であって、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するためのビデオフレーム取得モジュールと、
前記現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するための履歴複雑性計算モジュールと、
現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するための利用可能ビットレート取得モジュールであって、前記第２時間粒度が前記第１時間粒度より細かい時間単位である利用可能ビットレート取得モジュールと、
前記第２利用可能ビットレート及び前記第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性及び前記第１履歴複雑性に従って、前記第２利用可能ビットレートと前記第１利用可能ビットレートとの間でビットレートを調整するためのビットレート調整モジュールステップと、
調整された第２利用可能ビットレートに基づき前記初期量子化パラメータを更新して、現在量子化パラメータを取得するための量子化パラメータ更新モジュールと、
前記現在量子化パラメータに基づき、前記現在ビデオフレームを符号化するための符号化モジュールと、を備えることを特徴とするビデオ符号化装置。
【請求項１４】
コンピュータプログラムが記憶されるコンピュータ可読記憶媒体であって、
前記コンピュータプログラムがプロセッサによって実行されるときに、前記プロセッサに、請求項１乃至１２のいずれか１項に記載の方法のステップを実行させるコンピュータ可読記憶媒体。
【請求項１５】
メモリとプロセッサを含むコンピュータ機器であって、前記メモリにコンピュータプログラムが記憶され、前記コンピュータプログラムが前記プロセッサによって実行されるときに、前記プロセッサに、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するステップと、
前記現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するステップと、
現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するステップであって、前記第２時間粒度が前記第１時間粒度に対してより細かい時間単位であるステップと、
前記第２利用可能ビットレート及び前記第１利用可能ビットレートに基づいて、前記現在ビデオフレームの複雑性及び前記第１履歴複雑性に従って、前記第２利用可能ビットレートと前記第１利用可能ビットレートとの間でビットレートを調整するステップと、
調整された第２利用可能ビットレートに基づき前記初期量子化パラメータを更新して、現在量子化パラメータを取得するステップと、
前記現在量子化パラメータに基づき、前記現在ビデオフレームを符号化するステップと、を実行させるコンピュータ機器。
【請求項１６】
前記コンピュータプログラムが前記プロセッサによって実行されるときに、前記プロセッサに、
前記現在ビデオフレームに対応する第１履歴ビデオフレームシーケンスを決定するステップと、
前記第１履歴ビデオフレームシーケンスにおける各ビデオフレームの複雑性を取得するステップと、
各前記ビデオフレームの複雑性に基づき、前記現在ビデオフレームに対応する第１履歴複雑性を計算するステップと、を実行させることを特徴とする請求項１５に記載のコンピュータ機器。
【請求項１７】
前記コンピュータプログラムが前記プロセッサによって実行されるときに、前記プロセッサに、
各前記ビデオフレームの複雑性に基づき、第１履歴平均複雑性を計算するステップと、
各前記ビデオフレームの複雑性に基づき、第１履歴複雑性変動度を計算するステップと、
前記第１履歴平均複雑性と前記第１履歴複雑性変動度とを融合して、第１履歴複雑性を取得するステップと、を実行させることを特徴とする請求項１６に記載のコンピュータ機器。
【請求項１８】
前記現在ビデオフレームに対応する前記第１履歴複雑性は次の式で計算され、
【数４】
2021520160.tif 000028
ここで、Ｐｃｐｌｘｉは現在ビデオフレームｉに対応する第１履歴複雑性を示し、ｓａｔｄａｖｇｉは前記現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算することで得られた第１履歴平均複雑性を示し、ｓａｔｄ  ｖａｒｉは前記現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算することで得られた第１履歴複雑性変動を示し、ｓａｔｄａｖｇｉ−ｓａｔｄ  ｖａｒｉは第１履歴複雑性変動度を示し、ｓａｔｄｊは前記現在ビデオフレームｉの前のｊ番目のビデオフレームの複雑性を示し、ｗは所定の変動度重み係数を示すことを特徴とする請求項１７に記載のコンピュータ機器。
【請求項１９】
前記コンピュータプログラムが前記プロセッサによって実行されるときに、前記プロセッサに、
前記現在ビデオフレームの複雑性を取得するステップと、 
前記現在ビデオフレームの複雑性と前記第１履歴複雑性との間の大きさの関係を決定するステップと、 
前記現在ビデオフレームの複雑性が前記第１履歴複雑性より大きい場合、前記第１利用可能ビットレートから第１ビットレートを減らし、前記第１ビットレートを前記第２利用可能ビットレートに増加するステップと、
前記現在ビデオフレームの複雑性が前記第１履歴複雑性より小さい場合、前記第２利用可能ビットレートから第２ビットレートを減らし、前記第２ビットレートを前記第１利用可能ビットレートに増加するステップと、を実行させることを特徴とする請求項１５に記載のコンピュータ機器。
【請求項２０】
前記第１ビットレートと前記現在の第１利用可能ビットレートとは正の相関となり、前記第１ビットレートと、前記現在ビデオフレームの複雑性と前記第１履歴複雑性との差とは正の相関となることを特徴とする請求項１９に記載のコンピュータ機器。
【請求項２１】
前記第２ビットレートと前記現在の第２利用可能ビットレートとは正の相関となり、前記第２ビットレートと前記第２利用可能ビットレートの充足度とは正の相関となり、前記第２ビットレートと、前記現在ビデオフレームの複雑性と前記第１履歴複雑性との差とは、正の相関となることを特徴とする請求項１９に記載のコンピュータ機器。
【請求項２２】
前記コンピュータプログラムが前記プロセッサによって実行されるときに、前記プロセッサに、
前記第１ビットレートを増加した後、前記第２利用可能ビットレートが第２利用可能ビットレートに対応する最大値を超えた場合、前記第２利用可能ビットレートを第２利用可能ビットレートに対応する最大値に調整するステップと、
前記第２ビットレートを増加した後、前記第１利用可能ビットレートが第１利用可能ビットレートに対応する最大値を超えた場合、前記第１利用可能ビットレートを第１利用可能ビットレートに対応する最大値に調整するステップと、を実行させることを特徴とする請求項１９に記載のコンピュータ機器。
【請求項２３】
前記第１ビットレート、前記第２ビットレートは次の式で計算され、
【数５】
2021520160.tif 000029
ここで、Ａｄｍ_Ｂｉｔｓは第１利用可能ビットレートから減らされた前記第１ビットレートを示し、Ａｄｓ_Ｂｉｔｓは第２利用可能ビットレートから減らされた前記第２ビットレートを示し、ＡｄＲａｔｉｏｎは前記現在ビデオフレームの複雑性と前記第１履歴複雑性との差を示し、ｍ_ｂｕｆｆｅｒは現在の第１利用可能ビットレートを示し、ｓ_ｂｕｆｆｅｒは現在の第２利用可能ビットレートを示し、ｍ_ｂｕｆｆｅｒｍａｘは第１利用可能ビットレートに対応する最大値を示し、ｓ_ｂｕｆｆｅｒｍａｘは第２利用可能ビットレートに対応する最大値を示し、
【数６】
2021520160.tif 000030
は前記第２利用可能ビットレートの充足度を示し、αは所定のバランス調整パラメータを示し、Ｍｉｎは最小値関数を示すことを特徴とする請求項１９に記載のコンピュータ機器。
【請求項２４】
前記コンピュータプログラムが前記プロセッサによって実行されるときに、前記プロセッサに、
前記現在ビデオフレームに対応する第２時間粒度検出ウィンドウにおけるビデオフレームシーケンスを取得するステップと、
前記ビデオフレームシーケンスと前記現在量子化パラメータに基づき推定された累積符号化ビットレートと、調整された第２利用可能ビットレートとの間が、所定のビットレート関係に合うように、現在量子化パラメータが取得されるまで、前記初期量子化パラメータから数値を徐々に大きくするステップと、を実行させることを特徴とする請求項１５に記載のコンピュータ機器。
【請求項２５】
前記コンピュータプログラムが前記プロセッサによって実行されるときに、前記プロセッサに、
前記現在量子化パラメータに基づき、前記現在ビデオフレームに対応する現在量子化ステップサイズを取得するステップと、
前記現在量子化ステップサイズに基づき、前記現在ビデオフレームを符号化することで、前記現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、を実行させることを特徴とする請求項１５に記載のコンピュータ機器。
【請求項２６】
前記コンピュータプログラムが前記プロセッサによって実行されるときに、前記プロセッサに、
前記現在ビデオフレームが属する目標ビデオフレームシーケンスに対応する目標ビットレートを取得するステップと、
前記目標ビットレート、前記目標ビデオフレームシーケンスのフレームレートに基づき、１フレームあたりの平均割当可能なビットレートを計算するステップと、
符号化後の前記現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、
前記１フレームあたりの平均割当可能なビットレート、前記実際占有ビットレートに基づき、前記調整された第２利用可能ビットレートを更新して、次のビデオフレームに対応する第２利用可能ビットレートを取得するステップと、を実行させることを特徴とする請求項１５乃至２５のいずれか１項に記載のコンピュータ機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１８年１０月３１日にて提出された、出願番号が２０１８１１２８８５３０．５であり、発明の名称が「ビデオ符号化方法、装置、コンピュータ可読記憶媒体及びコンピュータ機器」である中国特許出願に基づく優先権を主張し、その全内容を本出願に援用により組み込む。
［技術分野］  
【０００２】
本出願は、コンピュータ技術分野に関わり、特に、ビデオ符号化方法、装置、コンピュータ可読記憶媒体及びコンピュータ機器に関わる。
【背景技術】
【０００３】
現在、Ｈ．２６４符号化規格は、インターネットビデオ分野において支配的な地位を占めており、帯域幅とストレージリソースは、比較的限られているため、生放送などのビデオに関する技術分野において、一般的にビデオソースを、ビットレートが異なる様々なビデオストリームにトランスコードすることで、ユーザが、自分の帯域幅及びトラフィックの要件に適合するビットレートレベルを選択して、ビデオを視聴することができるようにし、このように、ビデオ視聴プロセスのスムーズ性を保証し、各ビデオ配信サーバの帯域幅も節約することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ビデオ符号化中において、ビットレートをユーザによって設定された範囲内で安定させながら、ビデオの品質をなるべく向上させる方法は、各ビデオ符号器の主な研究内容である。ｘ２６４などのような現在の主流のＨ２６４符号器は、低遅延及びビットレートの安定性を保証するために、細かい時間粒度の範囲内でのみビットレートを制御でき、ビットレートの制御範囲が小さいため、符号化の品質が比較的低くなる。
【０００５】
これに基づいて、上記の符号化方法が、第２時間粒度の範囲内でのみビットレートを制御できるため、符号化の品質が比較的低くなるという技術的問題を解決するための、ビデオ符号化方法、装置、コンピュータ可読記憶媒体及びコンピュータ機器を提供する。
【課題を解決するための手段】
【０００６】
ビデオ符号化方法であって、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するステップと、
前記現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するステップと、
現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するステップであって、前記第２時間粒度が前記第１時間粒度より細かい時間単位であるステップと、
前記第２利用可能ビットレート及び前記第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性及び前記第１履歴複雑性に従って、前記第２利用可能ビットレートと前記第１利用可能ビットレートとの間でビットレートを調整するステップと、
調整された第２利用可能ビットレートに基づき前記初期量子化パラメータを更新し、現在量子化パラメータを取得するステップと、
前記現在量子化パラメータに基づき、前記現在ビデオフレームを符号化するステップと、を含む。
【０００７】
ビデオ符号化装置であって、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するためのビデオフレーム取得モジュールと、
前記現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するための履歴複雑性計算モジュールと、
現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するための利用可能ビットレート取得モジュールであって、前記第２時間粒度が前記第１時間粒度より細かい時間単位である利用可能ビットレート取得モジュールと、
前記第２利用可能ビットレート及び前記第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性及び前記第１履歴複雑性に従って、前記第２利用可能ビットレートと前記第１利用可能ビットレートとの間でビットレートを調整するためのビットレート調整モジュールと、
調整された第２利用可能ビットレートに基づき前記初期量子化パラメータを更新し、現在量子化パラメータを取得するための量子化パラメータ更新モジュールと、
前記現在量子化パラメータに基づき、前記現在ビデオフレームを符号化するための符号化モジュールと、を含む。
【０００８】
コンピュータプログラムが記憶されるコンピュータ可読記憶媒体であって、前記コンピュータプログラムは、プロセッサによって実行されるときに、上記のビデオ符号化方法のステップを前記プロセッサに実行させる。
【０００９】
メモリとプロセッサとを含むコンピュータ機器であって、前記メモリにコンピュータプログラムが記憶されており、前記コンピュータプログラムが前記プロセッサによって実行されるときに、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するステップと、
前記現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するステップと、
現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するステップであって、前記第２時間粒度が前記第１時間粒度より細かい時間単位であるステップと、
前記第２利用可能ビットレート及び前記第１利用可能ビットレートに基づいて、前記現在ビデオフレームの複雑性及び前記第１履歴複雑性に従って、前記第２利用可能ビットレートと前記第１利用可能ビットレートとの間でビットレートを調整するステップと、
調整された第２利用可能ビットレートに基づき前記初期量子化パラメータを更新し、現在量子化パラメータを取得するステップと
前記現在量子化パラメータに基づき、前記現在ビデオフレームを符号化するステップと、を前記プロセッサに実行させる。
【発明の効果】
【００１０】
上記のビデオ符号化方法、装置、コンピュータ可読記憶媒体及びコンピュータ機器によれば、第１利用可能ビットレートは、第１時間粒度での利用可能ビットレートの状況を示し、第２利用可能ビットレートは、第２時間粒度での利用可能ビットレートの状況を示し、第２時間粒度は、第１時間粒度より細かい時間単位であり、第１ビットレートを第２利用可能ビットレートと組み合わせることで、第１時間粒度でのビットレート制御を実現することができ、このように、より広い時間範囲でのビットレート割り当てを実現することができ、ビットレート割り当てをより均一にし、符号化の品質を大幅に向上させる。符号化するときに、現在ビデオフレームに対応する第１履歴複雑性を取得し、これに基づいて、現在ビデオフレームの複雑性、現在の第２利用可能ビットレート、及び現在の第１利用可能ビットレートに従って、第１時間粒度での現在ビデオフレームの符号化複雑性を予測し、これにより、第２利用可能ビットレートを調整することで、調整された第２利用可能ビットレートに基づき、現在ビデオフレームに対応する現在量子化パラメータを決定することができ、最後に、現在量子化パラメータ基づき、現在ビデオフレームを符号化する。
【図面の簡単な説明】
【００１１】
【図１】一実施例におけるビデオ符号化方法の応用環境図である。
【図２】一実施例におけるビデオ符号化方法の概略フローチャートである。
【図３】一実施例において、現在ビデオフレームに対応する第１履歴複雑性を計算するステップの概略フローチャートである。
【図４】一実施例において、各ビデオフレームの複雑性に基づき、現在ビデオフレームに対応する第１履歴複雑性を計算するステップの概略フローチャートである。
【図５】一実施例において、第２利用可能ビットレートと第１利用可能ビットレートとの間でビットレート調整を行うステップの概略フローチャートである。
【図６】一実施例において、第１利用可能ビットレートと第２利用可能ビットレートとの間のビットレート調整の概略図である。
【図７】一実施例において、現在ビデオフレームの前の各ビデオフレームの符号化中に節約されたビットレートを第１利用可能ビットレートに追加する概略図である。
【図８】一実施例におけるビデオ符号化方法のフローチャートである。
【図９】一実施例におけるビデオ符号化装置の構成ブロック図である。
【図１０】一実施例におけるコンピュータ機器の構成ブロック図である。
【発明を実施するための形態】
【００１２】
本出願の目的、技術案及び利点をより明らかにするために、以下は、図面及び実施例を参照して、本出願をさらに詳しく説明する。ここで説明される具体的な実施例は、本出願を限定するものではなく、ただ本出願を解釈するためのものであることは理解すべきである。
【００１３】
図１は一実施例におけるビデオ符号化方法の応用環境図である。図１を参照し、当該ビデオ符号化方法は、ビデオ符号化システムに適用される。当該ビデオ符号化システムは、アナウンサー端末１１０と、ビデオ配信サーバ１２０と、ユーザ端末１３０とを有する。アナウンサー端末１１０とビデオ配信サーバ１２０とはネットワークを介して接続され、ビデオ配信サーバ１２０とユーザ端末１３０とはネットワークを介して接続される。アナウンサー端末１１０、ユーザ端末１３０はデスクトップ端末又は携帯端末であってもよいし、携帯端末は携帯電話、タブレットコンピュータ、ラップトップコンピュータなどのうちの少なくとも１つであってもよい。ビデオ配信サーバ１２０は、独立したサーバ又は複数のサーバからなるサーバクラスタにより実現され、ビデオ配信サーバ１２０はさらに、クラウドサーバ、クラウドデータベース、クラウドストレージ及びＣＤＮ(Ｃｏｎｔｅｎｔ Ｄｅｌｉｖｅｒｙ Ｎｅｔｗｏｒｋ、コンテンツデリバリネットワーク)などの基本的なクラウドコンピューティングサービスを提供するクラウドサーバであってもよい。
【００１４】
ビデオ配信サーバ１２０は、ビデオ符号器とコードストリームコントローラとを含んでもよく、当該ビデオ符号器は、アナウンサー端末１１０によってプッシュされたビデオストリームを符号化し、ビデオが符号化された後に得られたコードストリームをバッファに入れてバッファリングし、その後、ネットワークを介して伝送し、ビットレートコントローラは、ビデオ符号器の量子化パラメータを調整することで、後続のビデオ符号化を行うようにビデオ符号器を制御し、バッファのオーバーフロー又はアンダーフローを防止する。ビデオ配信サーバ１２０はさらに、取得したコードストリームをユーザ端末１３０にプッシュすることもできる。
【００１５】
図２に示すように、一実施例において、ビデオ符号化方法を提供する。本実施例のビデオ符号化方法はコンピュータ機器に適用され、コンピュータ機器は、上記の図１におけるビデオ配信サーバ１２０であってもよいが、これに限定されない。図２を参照し、当該ビデオ符号化方法は具体的に以下のステップを含む。
【００１６】
ステップＳ２０２、符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得する。
【００１７】
ビデオストリームはビデオフレームシーケンスからなる。符号化対象となる現在ビデオフレームは、現在、符号化を必要とするビデオフレームを指す。ビデオストリームを符号化しようとする場合、ビデオフレームシーケンスをビデオ符号器に入力し、ビデオ符号器は、所定の順序に基づき、符号化対象となるビデオフレームを取得して符号化する。
【００１８】
量子化パラメータは、量子化ステップサイズの番号であり、量子化パラメータは量子化ステップサイズに対応付けられ、量子化パラメータに基づき、対応付けられた量子化ステップサイズを取得し、量子化ステップサイズに基づき、現在ビデオフレームに対して量子化符号化を行う。初期量子化パラメータは事前に設定された量子化パラメータであり、現在ネットワークの帯域幅、平均符号化ビットレートなどの実際のニーズに応じて、初期量子化パラメータの大きさを設定してもよい。ビデオフレームシーケンスに対してビデオ符号化を行う際、ビデオフレームシーケンスのうちの、符号化対象となる各ビデオフレームに対して、同じ初期量子化パラメータを配置してもよい。
【００１９】
ステップＳ２０４：現在ビデオフレームに対応する第１履歴複雑性を計算する。
【００２０】
時間粒度は、時間を細分化する単位であり、第２時間粒度は第１時間粒度より細かい時間単位であり、時間単位が細かいほど、当該時間単位が代表する時間帯がより小さいことを示す。例えば、分に対して、秒はより細かい時間粒度であり、秒に対して、ミリ秒はより細かい時間粒度である。一実施例において、第１時間粒度は、分を単位として時間を区画し、第２時間粒度は秒を単位として時間を区画する。また例えば、１分に対して、２分はより細かい時間粒度であり、第１時間粒度は２分を単位として時間を区画することを示し、第２時間粒度は１分を単位として時間を区画することを示す。本出願実施例は、時間単位の区画を限定しなく、第１時間粒度と第２時間粒度も限定しない。
【００２１】
履歴複雑性は現在ビデオフレームに対応する履歴複雑性情報であり、現在ビデオフレームの前にある複数ビデオフレームに対応する複雑性に基づき計算することで得られる。第１履歴複雑性は、第１時間粒度で統計した、現在ビデオフレームに対応する履歴複雑性情報であり、現在ビデオフレームの第１時間粒度での複雑性を予測することで、現在ビデオフレームが第１時間粒度でビットレートを制御した後、ビデオ符号化のために必要なビットレートを予測することができる。第１履歴複雑性が大きいほど、当該第１粒度に対応する時間範囲におけるビデオフレームの複雑性全体が比較的高く、複雑性の変動が大きいことを示し、現在ビデオフレームはより高い複雑性を具備しなければ、現在ビデオフレームを符号化するための、より多いビットレートが割り当てられることがない。
【００２２】
コンピュータ機器は、ビデオフレームシーケンスにおける、現在ビデオフレームの前にある、第１時間粒度に対応する時間範囲における複数ビデオフレームを取得し、取得された複数のビデオフレームの複雑性に基づき、現在ビデオフレームに対応する第１履歴複雑性を統計する。取得された複数のビデオフレームの数量は、第１時間粒度でビットレートを制御する時間範囲に関する。例えば、仮にフレームレートは３０フレーム／秒であり、第１時間粒度でビットレートを制御する時間範囲は１分であり、つまり、１分間のビデオフレームのビデオ符号化に対してビットレート制御を行うと、ビデオフレームシーケンスにおける、現在ビデオフレームの前にある１分内で対応する１８００個ビデオフレームを取得し、第１時間粒度でビットレートを制御する範囲は２分であり、つまり、２分間のビデオフレームのビデオ符号化に対してビットレート制御を行うと、ビデオフレームシーケンスにおける、現在ビデオフレームの前にある２分内で対応する３６００個ビデオフレームを取得する。
【００２３】
いくつかの実施例において、ビデオフレームの複雑性はビデオフレームの予測残差に基づき決定される。ビデオフレームの予測残差に対してｈａｄａｍｏｎｄ変換を行うとともに、絶対和を求めて、ＳＡＴＤ(Ｓｕｍ ｏｆ Ａｂｓｏｌｕｔｅ Ｔｒａｎｓｆｏｒｍｅｄ Ｄｉｆｆｅｒｅｎｃｅ、残差変換絶対値和)を取得し、ＳＡＴＤの値で、ビデオフレームの複雑性を示してもよい。このように、コンピュータ機器は、取得された、現在ビデオフレームの前にある各ビデオフレームのＳＡＴＤに基づき、現在ビデオフレームに対応する第１履歴複雑性を決定する。さらに、ビデオフレームの予測残差に対して、直接的に絶対誤差和を求めて、ＳＡＤ(Ｓｕｍ ｏｆ Ａｂｓｏｌｕｔｅ Ｄｉｆｆｅｒｅｎｃｅ、絶対誤差和)を取得し、ＳＡＤの値で、ビデオフレームの複雑性を示してもよい。さらに、ビデオフレームの予測残差に対して、直接的に平方和を求めて、ＳＳＤ(Ｓｕｍ ｏｆ Ｓｑｕａｒｅｄ Ｄｉｆｆｅｒｅｎｃｅ、誤差の平方和)を取得し、ＳＳＤの値でビデオフレームの複雑性を示してもよい。
【００２４】
ステップＳ２０６：現在の第２利用可能ビットレートと現在の第１利用可能ビットレートを取得する。
【００２５】
第２利用可能ビットレートは、第２時間粒度でビットレートを制御する第２時間粒度ビットレート制御バッファにおける利用可能ビットレートを指し、第２時間粒度ビットレート制御バッファは、現在ビデオフレームの後にあるビデオフレームの複雑性に基づき、第２時間粒度の時間範囲内で現在ビデオフレームの符号化のためのビットレートを制御し、相応的に、第１利用可能ビットレートは、第１時間粒度でビットレートを制御する第１時間粒度ビットレート制御バッファにおける利用可能ビットレートを指し、第１時間粒度ビットレート制御バッファは、現在ビデオフレームの前にあるビデオフレームの複雑性に基づき、第１時間粒度の時間範囲内で現在ビデオフレームの符号化のためのビットレートを制御する。
【００２６】
なお、本実施例では、第１時間粒度ビットレート制御バッファ及び第２時間粒度ビットレート制御バッファに具体的に対応する時間範囲を限定しなく、第１時間粒度ビットレート制御バッファに具体的に対応する時間範囲は０．５分〜５分であってもよく、当該時間範囲におけるそれぞれのビデオフレーム符号化に使用されるビットレートの間の変動が大きくなりすぎることを避けるために、好ましくは、当該時間範囲は１分〜２分であってもよく、第２時間粒度ビットレート制御バッファに具体的に対応する時間範囲は１秒〜５秒であってもよく、フレームの符号化の遅延を低減させるために、好ましくは、当該時間範囲は１秒〜２秒であってもよい。
【００２７】
ビデオ符号化のプロセスにおいて、第２利用可能ビットレートと第１利用可能ビットレートとは動的に変化する値であってもよく、両者は互いに連携して、ビデオ符号化のプロセスにおいて、より広い時間範囲内での平均ビットレートの制御を実現する。一実施例において、コンピュータ機器は、現在ビデオフレームを符号化する前に、第１利用可能ビットレートと第２利用可能ビットレートとの間でビットレートを調整し、現在ビデオフレームの符号化が終了した後、現在ビデオフレームが符号化されることによって実際に占有されるビットレートに基づき、調整された第２利用可能ビットレートを継続的に更新することで、調整された第１利用可能ビットレート、更新された第２利用可能ビットレートに基づき、次のビデオフレームを引き続いて符号化することができる。従って、コンピュータ機器が取得した現在の第２利用可能ビットレートと現在の第１利用可能ビットレートとは、現在ビデオフレームの前のフレームが符号化された後の対応する値である。
【００２８】
ステップＳ２０８：第２利用可能ビットレートと第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性と第１履歴複雑性に従って、第２利用可能ビットレートと第１利用可能ビットレートとの間でビットレートを調整する。
【００２９】
以上に言及するように、ビデオフレームの複雑性は、ビデオフレームの予測残差に基づき決定され、現在ビデオフレームの予測残差に基づき、現在ビデオフレームの複雑性を決定することができる。いくつかの実施例において、コンピュータ機器は現在ビデオフレームの予測残差に基づき、対応するＳＡＴＤ、ＳＳＤ又はＳＡＤを計算し、取得されたＳＡＴＤ、ＳＳＤ又はＳＡＤのうちの少なくとも１つを利用して、現在ビデオフレームの複雑性を判定する。
【００３０】
第２利用可能ビットレートと第１利用可能ビットレートとの間でビットレートを調整する場合、調整の根拠は、主に現在ビデオフレームの複雑性と現在ビデオフレームに対応する第１履歴複雑性との間の大きさの関係であり、調整されるビットレートの大きさは、現在の第２利用可能ビットレート、現在の第１利用可能ビットレート、現在ビデオフレームの複雑性、及び現在ビデオフレームに対応する第１履歴複雑性に関連する。
【００３１】
現在ビデオフレーム複雑性が低い場合、現在ビデオフレームがより小さいビットレートでビデオ符号化されることを示し、第２利用可能ビットレートを小さくして、節約されたビットレートを第１利用可能ビットレートに増加することができ、これにより、後続のビデオフレームは符号化される場合、ビデオフレームの複雑性状況に基づき、第１利用可能ビットレートからビットレートを取得し、現在ビデオフレームの複雑性が高い場合、現在ビデオフレームがビデオ符号化のためのより多いビットレートを必要とすることを示し、第１利用可能ビットレートからビットレートを取得し、第２利用可能ビットレートに増加し、現在ビデオフレームのビデオ符号化の品質を向上させることができる。このように、ビデオフレームシーケンスにおける各ビデオフレームを順次符号化することにより、第１時間粒度に対応する時間範囲における平均ビットレートがユーザの要件を満たすことを保証することができる。
【００３２】
ステップＳ２１０：調整された第２利用可能ビットレートに基づき、初期量子化パラメータを更新して、現在量子化パラメータを取得する。
【００３３】
調整された第２利用可能ビットレートを取得した後、調整された第２利用可能ビットレートに基づき、初期量子化パラメータを更新して、現在量子化パラメータを取得する。現在量子化パラメータの値は、現在ビデオフレームの後にある、第２時間粒度に対応する時間範囲における各ビデオフレームの累積符号化ビットレート、調整された第２利用可能ビットレートに関連する。現在ビデオフレームの後にある、第２時間粒度に対応する時間範囲における各ビデオフレームに対して推定された累積符号化ビットレートが大きいほど、現在量子化パラメータの値が大きくなり、現在ビデオフレームがビデオ符号化された後、占有する実際のビットレートが小さくなり、調整された第２利用可能ビットレートが大きいほど、現在量子化パラメータの値が大きくなり、現在ビデオフレームが符号化された後、占有する実際のビットレートが大きくなる。
【００３４】
一実施例において、調整された第２利用可能ビットレートに基づき、初期量子化パラメータを更新して、現在量子化パラメータを取得するステップＳ２１０は、現在ビデオフレームに対応する第２時間粒度検出ウィンドウにおけるビデオフレームシーケンスを取得するステップと、ビデオフレームシーケンスと現在量子化パラメータに基づき推定された累積符号化ビットレートと、調整された第２利用可能ビットレートとの間が、所定のビットレート関係に合うように、現在量子化パラメータが取得されるまで、初期量子化パラメータから数値を徐々に大きくするステップとを含む。好ましくは、累積符号化ビットレートと調整された第２利用可能ビットレートとの間が所定のビットレート関係に合うことは、実際の必要に応じて設置されてもよく、例えば、累積符号化ビットレートは調整された第２利用可能ビットレートの半分であってもよい。
【００３５】
第２時間粒度検出ウィンドウにおけるビデオフレームシーケンスは、現在ビデオフレームの後にある、第２時間粒度に対応する時間範囲における各ビデオフレームからなるシーケンスである。コンピュータ機器は、現在ビデオフレームの前のフレームを予測する際の対応する予測係数を取得し、第２時間粒度検出ウィンドウにおけるビデオフレームの複雑性を取得し、当該予測係数、ビデオフレームシーケンスにおける各ビデオフレームの複雑性、及び初期量子化パラメータに基づき累積符号化ビットレートを計算し、今回で取得した累積符号化ビットレートと調整された第２利用可能ビットレートとの間が所定のビットレート関係に合わない場合、初期量子化パラメータを大きくし、次に、取得された累積符号化ビットレートと調整された第２利用可能ビットレートとの間が所定のビットレート関係に合うまで、予測係数、ビデオフレームシーケンスにおける各ビデオフレームの複雑性、大きくなった量子化パラメータに基づき、累積符号化ビットレートを再び計算し、現在大きくなった量子化パラメータを現在量子化パラメータとする。
【００３６】
なお、第２時間粒度検出ウィンドウに対応する時間範囲は、第２時間粒度ビットレート制御バッファに対応する時間範囲と一致する。例えば、仮にフレームレートは３０フレーム／秒であり、第２時間粒度ビットレート制御バッファは、２秒内にビデオフレーム符号化に必要なビットレートを制御するために用いられると、第２時間粒度検出ウィンドウに対応する時間範囲は、現在ビデオフレームの２秒後であり、コンピュータ機器は当該２秒間の６０個ビデオフレームからなるビデオフレームシーケンスを取得し、これらの６０個ビデオフレームの、現在量子化パラメータで推定される累積符号化ビットレートを計算する。
【００３７】
一実施例において、推定される累積符号化ビットレートは次の式で計算され、
【数１】
2021520160.tif 000003
【００３８】
ここで、Ｐｒｅｂｉｔｓは第２時間粒度検出ウィンドウにおけるＭ個のビデオフレームに対して計算及び推定された累積符号化ビットレートを示し、Ｍの値は第２時間粒度ビットレート制御バッファに対応する時間範囲及びフレームレートに関連し、ｓａｔｄｊは現在ビデオフレームの後のｊ番目のビデオフレームに対応する複雑性を示し、ｑｐは量子化パラメータであり、ｑｐは初期量子化パラメータから数値を徐々に大きくし、ｃｏｅｆｆ、ｏｆｆｓｅｔ、ｃｏｕｎｔはいずれも現在ビデオフレームｉの前のフレームを予測する際の対応する予測係数である。
【００３９】
初期量子化パラメータを１つの小さい値に設定してから、初期量子化パラメータから数値を徐々に大きくしることができることは理解されるべきであり、このように、ビデオフレームの符号化の品質を向上させるとともに、現在実際に占有されるビットレートは大きくなりすぎないように保証できる。
【００４０】
ステップＳ２１２：現在量子化パラメータに基づき、現在ビデオフレームを符号化する。
【００４１】
一実施例において、現在量子化パラメータに基づき、現在ビデオフレームを符号化するステップは、現在量子化パラメータに基づき、現在ビデオフレームに対応する現在量子化ステップサイズを取得するステップと、現在量子化ステップサイズに基づき、現在ビデオフレームを符号化して、現在ビデオフレームに対応する実際占有ビットレートを取得するステップとを含む。
【００４２】
調整された第２利用可能ビットレートに基づき、初期量子化パラメータを更新して、現在量子化パラメータを取得した後、量子化パラメータと量子化ステップサイズとの間の対応関係に基づき、現在量子化ステップサイズを取得し、現在量子化ステップサイズに基づき、現在ビデオフレームを符号化する。例えば、一般的に、量子化の原理は、次の式で示される。
ＦＱ＝ｒｏｕｎｄ(ｙ／Ｑｓｔｅｐ)
ここで、ｙは量子化前のビデオフレームに対応する予測残差であり、Ｑｓｔｅｐは量子化ステップサイズであり、ＦＱはｙの量子化値である。Ｒｏｕｎｄ(ｘ)関数は、量子化された値に対してバンカーの丸め（Ｂａｎｋｅｒ′ｓ  ｒｏｕｎｄｉｎｇ）を行うことを指し、即ち、量子化された値の最後の桁が４以下の場合、切り捨てられ、量子化された値の最後の桁は６以上の場合、切り上げられ、量子化された値の最後の桁が５の場合、数字５の後ろに数字があれば、５が切り捨てられ、切り上げられ、数字５の後ろに数字がなく、数字５の前の数字が奇数であれば、５が切り捨てられ、切り上げられ、数字５の前の数字は偶数であれば、５が切り捨てられ、切り上げられていない。量子化パラメータと量子化ステップサイズとの対応関係は、具体的に、必要に応じて設置することができる。例えば、現在のビデオ符号化規格では、輝度符号化の場合、量子化パラメータは、０〜５１の整数である５２個の値を合計で有し、量子化ステップサイズは量子化パラメータの増加に連れて増加し、量子化パラメータは６増えるたびに、量子化ステップサイズは１倍増える。現在量子化パラメータは大きいほど、現在ビデオフレームを符号化するために必要なビットレートは少なくなり、その逆、現在量子化パラメータは小さいほど、現在ビデオフレームを符号化するために必要なビットレートは多くなる。
【００４３】
前記ビデオ符号化方法において、第１利用可能ビットレートは第１時間粒度での利用可能ビットレートの状況を示し、当該第１利用可能ビットレートを第２利用可能ビットレートと組み合わせることで、第１時間粒度でのビットレート制御を実現することができ、より広い時間範囲におけるビットレート割り当てを実現することができ、ビットレート割り当てをより均一にし、符号化の品質を大幅に向上させる。符号化するときに、現在ビデオフレームに対応する第１履歴複雑性を取得し、これに基づいて、現在ビデオフレームの複雑性、現在の第２利用可能ビットレート、及び現在の第１利用可能ビットレートに従って、第１時間粒度での現在ビデオフレームの符号化複雑性を予測し、これによって、第２利用可能ビットレートを調整することで、調整された第２利用可能ビットレートに基づき、現在ビデオフレームに対応する現在量子化パラメータを決定することができ、最後に、現在量子化パラメータ基づき、現在ビデオフレームを符号化する。
【００４４】
一実施例において、図３に示すように、現在ビデオフレームに対応する第１履歴複雑性を計算するステップＳ２０４は、以下のステップを含む
ステップＳ３０２：現在ビデオフレームに対応する第１履歴ビデオフレームシーケンスを決定する。
【００４５】
コンピュータ機器はビデオストリームから、現在ビデオフレームの前にある、第１時間粒度に対応する時間範囲における各ビデオフレームを取得することができ、これらのビデオフレームは符号化対象となる現在ビデオフレームの前にあるから、これらのビデオフレームからなるビデオフレームシーケンスは、第１履歴ビデオフレームシーケンスと呼ばれる場合がある。
【００４６】
各ビデオフレームを符号化する場合、第１時間粒度に対応する時間範囲は同じであり、第１時間粒度に対応する時間範囲は、第１時間粒度ビットレート制御バッファに対応する時間範囲と一致する。例えば、第１時間粒度ビットレート制御バッファに対応する時間範囲は１分であれば、第１履歴ビデオフレームシーケンスは現在ビデオフレームの後の１分内の各ビデオフレームからなるシーケンスであり、仮にフレームレートは３０フレーム／秒であれば、現在ビデオフレームｉをビデオ符号化するときに、現在ビデオフレームｉの前の１８００番目のフレームから１番目のフレームからなるシーケンスを、現在ビデオフレームｉに対応する第１履歴ビデオフレームシーケンスとして決定する。
【００４７】
なお、本出願で使用される「現在ビデオフレーム」は、ビデオ符号器が現在処理しているビデオフレームとして説明され、「現在ビデオフレーム」は相対的に変化するビデオフレームである。例えば、「現在ビデオフレーム」の「次のビデオフレーム」を処理する場合、「次のビデオフレーム」を新たな現在ビデオフレームとし、元の「現在ビデオフレーム」を新たな前のビデオフレームとしてもよい。現在ビデオフレームは相対的に変化するビデオフレームであるから、それに応じて、第１履歴ビデオフレームシーケンスも相対的に変化する。
【００４８】
ステップＳ３０４：第１履歴ビデオフレームシーケンスにおける各ビデオフレームの複雑性を取得する。
【００４９】
具体的に、第１履歴ビデオフレームシーケンスにおける各ビデオフレームは符号化されるときに、各ビデオフレームの複雑性が既に計算されたので、現在ビデオフレームを符号化するときに、コンピュータ機器はこれらのビデオフレームの複雑性を直接的に取得できる。ビデオフレームの複雑性の計算方法は既に以上に言及されたので、ここで、贅言していない。
【００５０】
ステップＳ３０６：各ビデオフレームの複雑性に基づき、現在ビデオフレームに対応する第１履歴複雑性を計算する。
【００５１】
第１履歴ビデオフレームシーケンスにおける各ビデオフレームの複雑性を取得した後、各ビデオフレームの複雑性に基づき、現在ビデオフレームに対応する第１履歴複雑性を統計する。第１履歴複雑性は第１履歴平均複雑性と第１履歴複雑性変動度とを含む。
【００５２】
一実施例において、図４に示すように、各ビデオフレームの複雑性に基づき、現在ビデオフレームに対応する第１履歴複雑性を計算するステップＳ３０６は、以下のステップを含む。
ステップＳ４０２：各ビデオフレームの複雑性に基づき、第１履歴平均複雑性を計算する。
【００５３】
各ビデオフレームの複雑性を取得した後、各ビデオフレームの複雑性に対して平均値を求め、取得された平均値を第１履歴平均複雑性とする。第１履歴平均複雑性が大きいほど、現在ビデオフレームの前の、符号化されたビデオフレームの複雑性全体が高いことを示し、現在ビデオフレームはより高い複雑性を具備しなければ、ビデオ符号化のための、より多いビットレートが割り当てられることがない。
【００５４】
一実施例において、第１履歴平均複雑性は次の式で計算され、
【数２】
2021520160.tif 000004
ここで、ｓａｔｄａｖｇｉは、現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算することで得られた第１履歴平均複雑性を示し、ｓａｔｄｊは、現在ビデオフレームｉの前のｊ番目のビデオフレームの複雑性を示す。
【００５５】
ステップＳ４０４：各ビデオフレームの複雑性に基づき、第１履歴複雑性変動度を計算する。
各ビデオフレームの複雑性を取得した後、各ビデオフレームの複雑性に基づき、第１履歴複雑性変動として、第１時間粒度に対応する時間範囲における各ビデオフレームの複雑性の変動を計算してから、第１履歴複雑性変動と第１履歴平均複雑性との間の差を計算し、得られた差を第１履歴複雑性変動度とする。第１履歴複雑性変動度は大きいほど、複雑性変動が激しいことを示し、小さいほど、複雑性変動が弱いことを示す。第１履歴複雑性変動度が大きい場合、現在ビデオフレームはより高い複雑性を具備していないと、ビデオ符号化のためのより多いビットレートが割り当てられることがない。
【００５６】
一実施例において、第１履歴複雑性変動は次の式で計算され、
【数３】
2021520160.tif 000005
ここで、ｓａｔｄ  ｖａｒｉは現在ビデオフレームｉの前のＮ個ビデオフレームに基づき計算することで得られた第１履歴複雑性変動を示し、ｓａｔｄｊは現在ビデオフレームｉの前のｊ番目のビデオフレームの複雑性を示すと、第１履歴複雑性変動度はｓａｔｄａｖｇｉ−ｓａｔｄ  ｖａｒｉで示される。
【００５７】
ステップＳ４０６：第１履歴平均複雑性と第１履歴複雑性変動度とを融合して、第１履歴複雑性を取得する。
【００５８】
第１履歴平均複雑性と第１履歴複雑性変動度とを包括的に考慮することができ、当該両者に基づき計算することで、現在ビデオフレームに対応する第１履歴複雑性を取得する。このように、第１時間粒度に対応する時間範囲におけるビデオフレームの平均複雑性全体が比較的高く、複雑性変動が大きい場合、現在ビデオフレームの複雑性が高いほど、より多くのビットレートを割り当てることができる。
【００５９】
一実施例において、現在ビデオフレームに対応する第１履歴複雑性は、次の式で計算され、
【数４】
2021520160.tif 000006
ここで、Ｐｃｐｌｘｉは現在ビデオフレームｉに対応する第１履歴複雑性を示し、ｗは所定の変動度重み係数を示す。
【００６０】
上記の実施例において、現在ビデオフレームの前にある、第１時間粒度に対応する時間範囲における各ビデオフレームの複雑性を統計することで、統計によって得られた第１履歴複雑性を利用して、現在ビデオフレームをビデオ符号化するために必要なビットレートを増減するかどうかを判定する。
【００６１】
図５に示すように、一実施例において、第２利用可能ビットレートと第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性と第１履歴複雑性に従って、第２利用可能ビットレートと第１利用可能ビットレートとの間でビットレートを調整するステップＳ２０８は、以下のステップを含む。
ステップＳ５０２：現在ビデオフレームの複雑性を取得する。
【００６２】
以上に言及された方法に基づき、現在ビデオフレームの予測残差に基づき、現在ビデオフレームの複雑性を決定する。
【００６３】
ステップＳ５０４：現在ビデオフレームの複雑性と第１履歴複雑性との間の大きさの関係を決定する。
【００６４】
現在ビデオフレームの複雑性から第１履歴複雑性を減算することで、現在ビデオフレームの複雑性変動値を取得し、当該値に基づき、現在ビデオフレームを符号化するために必要なビットレートを増減するかどうかを決定する。
【００６５】
一実施例において、現在ビデオフレームの複雑性と第１履歴複雑性との間の大きさの関係は下の式で示され、
【数５】
2021520160.tif 000007
ここで、ｓａｔｄｉは現在ビデオフレームの複雑性を示し、以上から分かるように、ＡｄＲａｔｉｏｎは０より大きいと、現在ビデオフレームの複雑性が第１履歴複雑性より大きいことを示し、ＡｄＲａｔｉｏｎは０より小さいと、現在ビデオフレームの複雑性が第１履歴複雑性より小さいことを示す。
【００６６】
ステップＳ５０６：現在ビデオフレームの複雑性が第１履歴複雑性より大きい場合、第１利用可能ビットレートから第１ビットレートを減らし、第１ビットレートを第２利用可能ビットレートに増加する。
【００６７】
現在ビデオフレームの複雑性が第１履歴複雑性より大きい場合、現在ビデオフレームにビデオ符号化用のより多いビットレートを割り当てることができることを示し、第１利用可能ビットレートから第１ビットレートを取得し、取得された第１ビットレートを第２利用可能ビットレートに増加し、このように、現在ビデオフレームをビデオ符号化するためのより小さな量子化パラメータを取得することができる。
【００６８】
ステップＳ５０８：現在ビデオフレームの複雑性が第１履歴複雑性より小さい場合、第２利用可能ビットレートから第２ビットレートを減らし、第２ビットレートを第１利用可能ビットレートに増加する。
【００６９】
現在ビデオフレームの複雑性が第１履歴複雑性より小さい場合、現在ビデオフレームをより小さいビットレートでビデオ符号化することを示し、第２ビットレートは、第２利用可能ビットレートから圧縮されて取得され、節約された第２ビットレートを第１利用可能ビットレートに増加し、このように、現在ビデオフレームをビデオ符号化するためのより大きな量子化パラメータを取得することができる。
【００７０】
図６に示すように、一実施例における第１利用可能ビットレートと第２利用可能ビットレートとの間の、ビットレート調整の概略図である。図６を参照し、現在ビデオフレームに対応するＡｄＲａｔｉｏｎに基づき、ＡｄＲａｔｉｏｎが０より大きい場合、第１ビットレートを計算し、第１利用可能ビットレートから第１ビットレートを減らし、第１ビットレートを第２利用可能ビットレートに増加し、ＡｄＲａｔｉｏｎが０より小さい場合、第２ビットレートを計算し、第２利用可能ビットレートから第２ビットレートを減らし、第２ビットレートを第１利用可能ビットレートに増加する。
【００７１】
一実施例において、第１ビットレートと現在の第１利用可能ビットレートとは、正の相関となり、第１ビットレートと、現在ビデオフレームの複雑性と第１履歴複雑性との差とは、正の相関となる。
【００７２】
第１利用可能ビットレートから減らされ、第２利用可能ビットレートに増加するビットレートの値は、現在の第１利用可能ビットレートに関連するとともに、現在ビデオフレームの複雑性と第１履歴複雑性との間の差に関連する。現在の第１利用可能ビットレートは多いほど、第１利用可能ビットレートから取得される第１ビットレートは多くなり、現在ビデオフレームフレームの複雑性は第１履歴複雑性より高いほど、第１利用可能ビットレートから取得される第１ビットレートは多くなる。
【００７３】
一実施例において、第１ビットレートを増加した後、第２利用可能ビットレートが第２利用可能ビットレートに対応する最大値を超えた場合、第２利用可能ビットレートを、第２利用可能ビットレートに対応する最大値に調整する。
【００７４】
第２利用可能ビットレートに対応する最大値は、現在ビデオフレームが属する目標ビデオフレームシーケンスに対応する目標ビットレートに基づき決定され、一般的に、目標ビットレートの１〜２倍であるように設置される。目標ビットレートは、現在の帯域幅、ネットワーク状況に応じてユーザが所望する平均ビットレートであってもよい。
【００７５】
現在ビデオフレームを符号化するときに、使用する量子化パラメータは、調整された第２利用可能ビットレートに基づき決定されるので、小さな量子化パラメータを利用して、現在ビデオフレームを符号化することによる、実際占有ビットレートが高すぎることを避けるために、調整された第２利用可能ビットレートは第２利用可能ビットレートに対応する最大値を超えることができない。
【００７６】
一実施例において、第１ビットレートは次の式で計算され、
【数６】
2021520160.tif 000008
ここで、Ａｄｍ_Ｂｉｔｓは第１利用可能ビットレートから減らされた第１ビットレートを示し、ＡｄＲａｔｉｏｎは現在ビデオフレームの複雑性と第１履歴複雑性との差を示し、ｍ_ｂｕｆｆｅｒ現在の第１利用可能ビットレートを示し、ｓ_ｂｕｆｆｅｒは現在の第２利用可能ビットレートを示し、ｓ_ｂｕｆｆｅｒｍａｘは第２利用可能ビットレートに対応する最大値を示し、αは所定のバランス調整パラメータを示し、Ｍｉｎは最小値関数を示す。αは一般的に、符号化スレッド数ｎの逆数、即ち、
【数７】
2021520160.tif 000009
であるように配置される。
【００７７】
一実施例において、第２ビットレートと現在の第２利用可能ビットレート成とは正の相関となり、第２ビットレートと第２利用可能ビットレートの充足度とは正の相関となり、第２ビットレートと、現在ビデオフレームの複雑性と第１履歴複雑性との差とは、正の相関となる。
【００７８】
第２利用可能ビットレートから減らされ、第１利用可能ビットレートに増加するビットレートの値は、現在の第２利用可能ビットレートに関連するとともに、現在ビデオフレームの複雑性と第１履歴複雑性との間の差に関連し、さらに、現在第２利用可能ビットレートの充足度に関連する。現在の第２利用可能ビットレートが多いほど、第２利用可能ビットレートから取得される第２ビットレートが多くなり、現在ビデオフレームフレームの複雑性が第１履歴複雑性より低いほど、第２利用可能ビットレートから取得される第２ビットレートが多くなり、第２利用可能ビットレートの充足度とは、第２時間粒度ビットレート制御バッファの充満度を指し、現在の第２利用可能ビットレートと第２利用可能ビットレートに対応する最大値との比で示され、充足度が高いほど、第２利用可能ビットレートから取得される第２ビットレートが多くなる。
【００７９】
一実施例において、第２ビットレートを増加した後、第１利用可能ビットレートが第１利用可能ビットレートに対応する最大値を超えた場合、第１利用可能ビットレートを第１利用可能ビットレートに対応する最大値に調整する。
【００８０】
類似するように、第１利用可能ビットレートに対応する最大値は、現在ビデオフレームが属する目標ビデオフレームシーケンスに対応する目標ビットレートに関連し、目標ビットレートが大きいほど、第１利用可能ビットレートに対応する最大値が大きくなる。
【００８１】
後続のビデオフレームを符号化するときに、第１利用可能ビットレートからビットレートを取得し、第２利用可能ビットレートに増加する場合、取得したビットレートと、前回調整された第１利用可能ビットレートの大きさとは正の相関となり、後続の調整された第２利用可能ビットレートが大きすぎて、後続のビデオフレームが符号化中に実際に占有するビットレートが高すぎることを避けるために、調整された第１利用可能ビットレートは第１利用可能ビットレートに対応する最大値を超えることができない。
【００８２】
一実施例において、第１利用可能ビットレートに対応する最大値は、次の式によって示され、
【数８】
2021520160.tif 000010
ここで、平滑化データとは、符号化開始後の一定の持続期間において対応する実際の平均ビットレートが目標ビットレートであることを意味し、ｓｅｃｏｎｄｓは平滑化データの持続期間を示し、ｓｅｃｏｎｄｓは一般的に、３０秒〜１２０秒に設定され、ｂｉｔｒａｔｅは目標ビットレートを示し、λは第１時間粒度ビットレート制御バッファの強度を示し、λを介してｍ_ｂｕｆｆｅｒｍａｘを制御することで、第１時間粒度ビットレート制御の強度を調整し、λは一般的に０．５に設定される。例えば、λは０．５に設定され、ｓｅｃｏｎｄｓは１００ｓに設定されると、１分時間範囲内のビデオ符号化ビットレート制御に対応するｍ_ｂｕｆｆｅｒｍａｘは５０*ｂｉｔｒａｔｅであり、２分時間範囲内のビデオ符号化ビットレート制御に対応するｍ_ｂｕｆｆｅｒｍａｘは２*５０*ｂｉｔｒａｔｅである。
【００８３】
一実施例において、第２ビットレートは次の式で計算され：
【数９】
2021520160.tif 000011
ここで、Ａｄｓ_Ｂｉｔｓは第２利用可能ビットレートから減らされた第２ビットレートを示し、ＡｄＲａｔｉｏｎは現在ビデオフレームの複雑性と第１履歴複雑性との差を示し、ｍ_ｂｕｆｆｅｒｍａｘは第１利用可能ビットレートに対応する最大値を示し、
【数１０】
2021520160.tif 000012
は第２利用可能ビットレートの充足度を示す。
【００８４】
図７に示すように、一実施例における現在ビデオフレームの前の各ビデオフレームが符号化されるときに、節約されたビットレートを第１利用可能ビットレートに追加する概略図である。図７を参照し、目標ビデオフレームシーケンスのフレームレートは３０フレーム／秒であり、第１時間粒度に対応する時間範囲は１分であれば、現在第１利用可能ビットレートには、現在ビデオフレーム、及び現在ビデオフレームの前の１７９９個のビデオフレームが符号化されるときの、節約されたビットレートが含まれる。当該１８００個のビデオフレームによって節約されたビットレートはそれぞれ１０２２、３５２１、０、２２１２１、・・・、２２、１２４であり、現在ビデオフレームが符号化される場合、ビットレートは現在の第１利用可能ビットレートから取得できる。
【００８５】
一実施例において、現在量子化パラメータに基づき、現在ビデオフレームを符号化するステップＳ２１２の後に、ビデオ符号化方法はさらに、現在ビデオフレームが属する目標ビデオフレームシーケンスに対応する目標ビットレートを取得するステップと、目標ビットレート、目標ビデオフレームシーケンスのフレームレートに基づき、１フレームあたりの平均割当可能なビットレートを計算するステップと、符号化後の現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、１フレームあたりの平均割当可能なビットレート、実際占有ビットレートに基づき、調整された第２利用可能ビットレートを更新して、次のビデオフレームに対応する第２利用可能ビットレートを取得するステップとを含む。
【００８６】
目標ビットレートはユーザによって設置された所望のビットレートである。１フレームあたりの平均割当可能なビットレートは、ビデオフレーム複雑性を考慮しない理想的な状況で、各フレームが占有すると予想されるビットレートを指す。１フレームあたりの平均割当可能なビットレートは、各フレームの占有期間と目標ビットレートとの積で示され、各フレームの占有期間はフレームレートの逆数で示めされる。実際占有ビットレートとは、現在ビデオフレームが現在量子化パラメータに基づきビデオ符号化された後、実際に占有するビットレートを指す。具体的に、次のビデオフレームを符号化するときに、取得された現在の第２利用可能ビットレートは、更新された第２利用可能ビットレートである。
【００８７】
一実施例において、更新された第２利用可能ビットレートが第２利用可能ビットレートの最大値より大きい場合、第２利用可能ビットレートの最大値を、次のビデオフレームに対応する現在の第２利用可能ビットレートとする。
【００８８】
一実施例において、１フレームあたりの平均割当可能なビットレート、実際占有ビットレートに基づき、調整された第２利用可能ビットレートを更新するステップは次の式で示され、
【数１１】
2021520160.tif 000013
ここで、ｓ_ｂｕｆｆｅｒａｄｊｕｓｔは第２利用可能ビットレートと第１利用可能ビットレートとの間でビットレートを調整した後に得られた第２利用可能ビットレートを示し、ｂｉｔｓは、現在ビデオフレームが符号化された後に対応する実際占有ビットレートを示し、ｄｕｒａｔｉｏｎは各フレームの占有期間を示し、ｂｉｔｒａｔｅは目標ビットレートを示す。例えば、目標ビデオフレームシーケンスのフレームレートは３０フレーム／秒であれば、各フレームの占有期間ｄｕｒａｔｉｏｎは
【数１２】
2021520160.tif 000014
であり、１フレームあたりの平均割当可能なビットレートは
【数１３】
2021520160.tif 000015
である。
【００８９】
図８に示すように、一実施例におけるビデオ符号化方法のフロ一ブロック図である。図８を参照し、まず、現在ビデオフレームｉと第２時間粒度検出ウィンドウにおけるｎ個のビデオフレームとの複雑性を計算し、ｎの値は第２時間粒度に対応する時間範囲に関連し、複雑性はそれぞれｓａｔｄｉ、ｓａｔｄｉ＋１、ｓａｔｄｉ＋２、・・・、ｓａｔｄｉ＋ｎであり、そして、現在ビデオフレームｉに対応する第１履歴複雑性を計算し、現在ビデオフレームｉの複雑性ｓａｔｄｉと対応する第１履歴複雑性との間の大きさの関係を分析し、大きさの関係に基づき、現在の第１利用可能ビットレートと第２利用可能ビットレートとの間でビットレートを調整し、次に、初期量子化パラメータから始めて、量子化パラメータ、第２時間粒度検出ウィンドウにおける各ビデオフレームの複雑性に基づき、累積符号化ビットレートを計算し、得られた累積符号化ビットレートが調整された第２利用可能ビットレートの半分より小さいかどうかを判定し、そうであれば、更新後に得られた現在量子化パラメータに基づき、現在ビデオフレームｉに対してビデオ符号化を行い、そうではなければ、現在量子化パラメータに基づき計算することで得られる累積符号化ビットレートが調整された第２利用可能ビットレートの半分より小さくなるまで、所定のステップサイズで量子化パラメータを徐々に大きくして、そして、得られた現在量子化パラメータに基づき、現在ビデオフレームに対してビデオ符号化を行うとともに、符号化が終了した後、現在ビデオフレームに対応する実際占有ビットレートに基づき、第２利用可能ビットレートをさらに更新し、このようにして、更新された第２利用可能ビットレートに基づき、次のフレームに対してビデオ符号化を行うことができる。
【００９０】
以下は、第１利用可能ビットレートは分レベル利用可能ビットレートであり、第１利用可能ビットレートは秒レベル利用可能ビットレートであり、分レベル利用可能ビットレートに対応する時間範囲は１分であり、秒レベル利用可能ビットレートに対応する時間範囲が１秒であり、フレームレートが３０フレーム／秒であり、現在ビデオフレームが第１９００フレームであることを例として、本実施例によって提供されるビデオ符号化方法を説明する。
【００９１】
１、現在の分レベル利用可能ビットレートと、現在の秒レベル利用可能ビットレートを取得する。
【００９２】
２、１９００番目のフレームの予測残差に基づき、１９００番目のフレームの複雑性を計算し、１００番目のフレームから１８９９番目のフレームまでの複雑性を取得し、１００番目のフレームから１８９９番目のフレームまでの複雑性平均値と複雑性変動を計算し、複雑性平均値と複雑性変動に基づき、履歴複雑性を統計する。
【００９３】
３、１９００番目のフレームの複雑性が統計された履歴複雑性より大きい場合、現在の分レベル利用可能ビットレート、１９００番目のフレームの複雑性と履歴複雑性との差に基づき、現在の分レベル利用可能ビットレートから減らされるビットレートを計算し、減らされたビットレートを、秒レベル利用可能ビットレートに増加し、１９００番目のフレームの複雑性は統計された履歴複雑性より小さい場合、１９００番目のフレームの複雑性と履歴複雑性との差の絶対値、現在の秒レベル利用可能ビットレート、及び秒レベル利用可能ビットレートの充足度に基づき、現在の秒レベル利用可能ビットレートから減らされるビットレートを計算し、減らされたビットレートを分レベル利用可能ビットレートに増加する。
【００９４】
４、１９０１番目のフレームから１９６０番目のフレームまでの予測残差に基づき、各フレームの複雑性を計算し、初期量子化パラメータ、各フレームの複雑性に基づき、累積符号化ビットレートを計算し、累積符号化ビットレートと調整された秒レベル利用可能ビットレートに基づき、現在量子化パラメータを決定する。
【００９５】
５、現在量子化パラメータに基づき、１９００番目のフレームをビデオ符号化する。
【００９６】
６、符号化が終了した後、１９００番目のフレームの実際占有ビットレートに基づき、秒レベル利用可能ビットレートを更新する。
【００９７】
７、更新された秒レベル利用可能ビットレート、調整された分レベル利用可能ビットレートに基づき、ステップ１からステップ６に従って、１９０１番目のフレームをビデオ符号化する。
【００９８】
具体的な実施例において、ビデオ符号化方法は具体的に、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するステップと、
現在ビデオフレームに対応する第１履歴ビデオフレームシーケンスを決定するステップと、
第１履歴ビデオフレームシーケンスにおける各ビデオフレームの複雑性を取得するステップと、
各ビデオフレームの複雑性に基づき、第１履歴平均複雑性を計算するステップと、
各ビデオフレームの複雑性に基づき、第１履歴複雑性変動度を計算するステップと、
第１履歴平均複雑性と第１履歴複雑性変動度とを融合して、第１履歴複雑性を取得するステップと、
現在の第２利用可能ビットレートと現在の第１利用可能ビットレートを取得するステップと、
現在ビデオフレームの複雑性を取得するステップと、
現在ビデオフレームの複雑性と第１履歴複雑性との間の大きさの関係を決定するステップと、
現在ビデオフレームの複雑性が第１履歴複雑性より大きい場合、第１利用可能ビットレートから第１ビットレートを減らし、第１ビットレートを第２時間粒度コード利用可能ビットレートに増加し、第１ビットレートを増加した後、第２利用可能ビットレートが第２利用可能ビットレートに対応する最大値を超えた場合、第２利用可能ビットレートを第２利用可能ビットレートに対応する最大値に調整するステップと、
現在ビデオフレームの複雑性が第１履歴複雑性より小さい場合、第２利用可能ビットレートから第２ビットレートを減らし、第２ビットレートを第１利用可能ビットレートに増加し、第２ビットレートを増加した後、第１利用可能ビットレートが第１利用可能ビットレートに対応する最大値を超えた場合、第１利用可能ビットレートを第１利用可能ビットレートに対応する最大値に調整するステップと、
現在ビデオフレームに対応する第２時間粒度検出ウィンドウにおけるビデオフレームシーケンスを取得するステップと、
ビデオフレームシーケンスと現在量子化パラメータに基づき推定された累積符号化ビットレートと、調整された第２利用可能ビットレートとの間が所定のビットレート関係に合うように、現在量子化パラメータが取得されるまで、初期量子化パラメータから数値を徐々に大きくするステップと、
現在量子化パラメータに基づき、現在ビデオフレームに対応する現在量子化ステップサイズを取得するステップと、
現在量子化ステップサイズに基づき、現在ビデオフレームを符号化して、現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、
現在ビデオフレームが属する目標ビデオフレームシーケンスに対応する目標ビットレートを取得するステップと、
目標ビットレート、目標ビデオフレームシーケンスのフレームレートに基づき、１フレームあたりの平均割当可能なビットレートを計算するステップと、
１フレームあたりの平均割当可能なビットレート、実際占有ビットレートに基づき、調整された第２利用可能ビットレートを更新して、次のビデオフレームに対応する第２利用可能ビットレートを取得するステップと、を含む。
【００９９】
前記ビデオ符号化方法において、第１利用可能ビットレートは第１時間粒度での利用可能ビットレートの状況を示し、第２利用可能ビットレートは第２時間粒度での利用可能ビットレートの状況を示し、第２時間粒度は第１時間粒度より細かい時間単位であり、第１利用可能ビットレートを第２利用可能ビットレートと組み合わせることで、第１時間粒度でのビットレート制御を実現することができ、このように、より広い時間範囲におけるビットレート割り当てを実現することができ、ビットレート割り当てをより均一にし、符号化の品質を大幅に向上させる。符号化するときに、現在ビデオフレームに対応する第１履歴複雑性を取得し、これに基づいて、現在ビデオフレームの複雑性、現在の第２利用可能ビットレート、及び現在の第１利用可能ビットレートに従って、第１時間粒度での現在ビデオフレームの符号化複雑性を予測し、これによって、第２利用可能ビットレートを調整することで、調整された第２利用可能ビットレートに基づき、現在ビデオフレームに対応する現在量子化パラメータを決定し、最後に、現在量子化パラメータ基づき、現在ビデオフレームを符号化する。
【０１００】
理解すべきは、前記実施例における各ステップは、フローチャートにおける矢印の指示に従って、順次に表示されるが、これらのステップは必ずしも矢印によって指示される順序に従って、順次に実行されていない。本明細書において明らかに説明されていない限り、これらのステップの実行は厳しい順序制限がなく、これらのステップは他の順序で実行されてもよい。そして、フローチャートにおけるステップの少なくとも一部は、複数のサブステップ又は複数の段階を含んでもよく、これらのサブステップ又は段階は必ずしも同時に実行される必要がなく、異なる時刻に実行されてもよく、これらのサブステップ又は段階の実行順序も、必ずしも順次に実行される必要がなく、他のステップ又は他のステップのサブステップ、或いは段階の少なくとも一部と、順番又は交互に実行されてもよい。
【０１０１】
一実施例において、図９に示すように、ビデオ符号化装置９００を提供し、当該装置は、ビデオフレーム取得モジュール９０２と、履歴複雑性計算モジュール９０４と、利用可能ビットレート取得モジュール９０６と、ビットレート調整モジュール９０８と、量子化パラメータ更新モジュール９１０と、符号化モジュール９１２とを含み、
ビデオフレーム取得モジュール９０２は、符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するためのものであり、
履歴複雑性計算モジュール９０４は、現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するためのものであり、
利用可能ビットレート取得モジュール９０６は、現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するためのものであり、第２時間粒度は第１時間粒度より細かい時間単位であり、
ビットレート調整モジュール９０８は、第２利用可能ビットレートと第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性と第１履歴複雑性に従って、第２利用可能ビットレートと第１利用可能ビットレートとの間でビットレートを調整するためのものであり、
量子化パラメータ更新モジュール９１０は、調整された第２利用可能ビットレートに基づき、初期量子化パラメータを更新して、現在量子化パラメータを取得するためのものであり、
符号化モジュール９１２は、現在量子化パラメータに基づき、現在ビデオフレームを符号化するためのものである。
【０１０２】
一実施例において、履歴複雑性計算モジュール９０４はさらに、現在ビデオフレームに対応する第１履歴ビデオフレームシーケンスを決定し、第１履歴ビデオフレームシーケンスにおける各ビデオフレームの複雑性を取得し、各ビデオフレームの複雑性に基づき、現在ビデオフレームに対応する第１履歴複雑性を計算する。
【０１０３】
一実施例において、履歴複雑性計算モジュール９０４はさらに、各ビデオフレームの複雑性に基づき、第１履歴平均複雑性を計算し、各ビデオフレームの複雑性に基づき、第１履歴複雑性変動度を計算し、第１時間粒度履歴平均複雑性と第１履歴複雑性変動度とを融合して、第１履歴複雑性を取得する。
【０１０４】
一実施例において、現在ビデオフレームに対応する第１履歴複雑性は次の式で計算され、
【数１４】
2021520160.tif 000016
ここで、Ｐｃｐｌｘｉは現在ビデオフレームｉに対応する第１履歴複雑性を示し、ｓａｔｄａｖｇｉは現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算することで得られた第１履歴平均複雑性を示し、ｓａｔｄ  ｖａｒｉは現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算することで得られた第１履歴複雑性変動を示し、ｓａｔｄａｖｇｉ−ｓａｔｄ  ｖａｒｉは第１履歴複雑性変動度を示し、ｓａｔｄｊは現在ビデオフレームｉの前のｊ番目のビデオフレームの複雑性を示し、ｗは所定の変動度重み係数を示す。
【０１０５】
一実施例において、ビットレート調整モジュール９０８はさらに、現在ビデオフレームの複雑性を取得し、現在ビデオフレームの複雑性と第１履歴複雑性との間の大きさの関係を決定し、現在ビデオフレームの複雑性が第１履歴複雑性より大きい場合、第１利用可能ビットレートから第１ビットレートを減らし、第１ビットレートを第２利用可能ビットレートに増加し、現在ビデオフレームの複雑性が第１履歴複雑性より小さい場合、第２利用可能ビットレートから第２ビットレートを減らし、第２ビットレートを第１利用可能ビットレートに増加する。
【０１０６】
一実施例において、第１ビットレートと現在の第１利用可能ビットレートとは正の相関となり、第１ビットレートと、現在ビデオフレームの複雑性と第１履歴複雑性との差とは、正の相関となる。
【０１０７】
一実施例において、第２ビットレートと現在の第２利用可能ビットレート成とは正の相関となり、第２ビットレートと第２利用可能ビットレートの充足度とは正の相関となり、第２ビットレートと、現在ビデオフレームの複雑性と第１履歴複雑性との差とは、正の相関となる。
【０１０８】
一実施例において、ビットレート調整モジュール９０８はさらに、第１ビットレートを増加した後、第２利用可能ビットレートが第２利用可能ビットレートに対応する最大値を超えた場合、第２利用可能ビットレートを第２利用可能ビットレートに対応する最大値に調整し、第２ビットレートを増加した後、第１利用可能ビットレートが第１利用可能ビットレートに対応する最大値を超えた場合、第１利用可能ビットレートを第１利用可能ビットレートに対応する最大値に調整する。
【０１０９】
一実施例において、第１ビットレート、第２ビットレートは次の式で計算され、
【数１５】
2021520160.tif 000017
ここで、Ａｄｍ_Ｂｉｔｓは第１利用可能ビットレートから減らされた第１ビットレートを示し、Ａｄｓ_Ｂｉｔｓは第２利用可能ビットレートから減らされた第２ビットレートを示し、ＡｄＲａｔｉｏｎは現在ビデオフレームの複雑性と第１履歴複雑性との差を示し、ｍ_ｂｕｆｆｅｒは現在の第１利用可能ビットレートを示し、ｓ_ｂｕｆｆｅｒは現在の第２利用可能ビットレートを示し、ｍ_ｂｕｆｆｅｒｍａｘは第１利用可能ビットレートに対応する最大値を示し、ｓ_ｂｕｆｆｅｒｍａｘは第２利用可能ビットレートに対応する最大値を示し、
【数１６】
2021520160.tif 000018
は第２利用可能ビットレートの充足度を示し、αは所定のバランス調整パラメータを示し、Ｍｉｎは最小値関数を示す。
【０１１０】
一実施例において、量子化パラメータ更新モジュール９１０はさらに、現在ビデオフレームに対応する第２時間粒度検出ウィンドウにおけるビデオフレームシーケンスを取得し、ビデオフレームシーケンスと現在量子化パラメータに基づき推定された累積符号化ビットレートと、調整された第２利用可能ビットレートとの間が所定のビットレート関係に合うように、現在量子化パラメータが取得されるまで、初期量子化パラメータから数値を徐々に大きくする。
【０１１１】
一実施例において、符号化モジュール９１２はさらに、現在量子化パラメータに基づき、現在ビデオフレームに対応する現在量子化ステップサイズを取得し、現在量子化ステップサイズに基づき、現在ビデオフレームを符号化して、現在ビデオフレームに対応する実際占有ビットレートを取得する。
【０１１２】
一実施例において、ビデオ符号化装置はさらに、第２利用可能ビットレート更新モジュールを含み、第２利用可能ビットレート更新モジュールは、現在ビデオフレームが属する目標ビデオフレームシーケンスに対応する目標ビットレートを取得し、目標ビットレート、目標ビデオフレームシーケンスのフレームレートに基づき、１フレームあたりの平均割当可能なビットレートを計算し、符号化後の現在ビデオフレームに対応する実際占有ビットレートを取得し、１フレームあたりの平均割当可能なビットレート、実際占有ビットレートに基づき、調整された第２利用可能ビットレートを更新して、次のビデオフレームに対応する第２利用可能ビットレートを取得する。
【０１１３】
前記ビデオ符号化装置９００において、第１利用可能ビットレートは第１時間粒度での利用可能ビットレートの状況を示し、当該第１利用可能ビットレートを第２利用可能ビットレートと組み合わせることで、第１時間粒度でのビットレート制御を実現することができ、それにより、より広い時間範囲におけるビットレート割り当てを実現することができ、ビットレート割り当てをより均一にし、符号化の品質を大幅に向上させる。符号化するときに、現在ビデオフレームに対応する第１履歴複雑性を取得し、これに基づいて、現在ビデオフレームの複雑性、現在の第２利用可能ビットレート、及び現在の第１利用可能ビットレートに従って、第１時間粒度での現在ビデオフレームの符号化複雑性を予測し、これによって、第２利用可能ビットレートを調整することで、調整された第２利用可能ビットレートに基づき、現在ビデオフレームに対応する現在量子化パラメータを決定し、最後に、現在量子化パラメータ基づき、現在ビデオフレームを符号化する。
【０１１４】
図１０は一実施例におけるコンピュータ機器の内部構成図を示す。当該コンピュータ機器は具体的に図１のビデオ配信サーバ１２０であってもよい。図１０に示すように、当該コンピュータ機器は、システムバスを介して接続されたプロセッサと、メモリと、ネットワークインターフェースとを含む。メモリは不揮発性記憶媒体と内部メモリとを含む。当該コンピュータ機器の不揮発性記憶媒体にはオペレーティングシステム、及びコンピュータプログラムが記憶され、当該コンピュータプログラムはプロセッサによって実行されるときに、プロセッサにビデオ符号化方法を実現させる。当該内部メモリにはコンピュータプログラムが記憶されてもよく、当該コンピュータプログラムはプロセッサによって実行されるときに、プロセッサにビデオ符号化方法を実行させる。
【０１１５】
当業者が理解できるように、図１０に示される構成は、本出願の技術案が適用されるコンピュータ機器に対する限定ではなく、本出願の技術案に関する一部の構成のブロック図のみであり、具体的なコンピュータ機器は図示より多い又はより少ない部品を有してもよく、或いは、いくつかの部品を組み合わせるか、又は異なる部品配置を有してもよい。
【０１１６】
一実施例において、本出願によって提供されるビデオ符号化装置９００はコンピュータプログラムの形で実現されてもよく、コンピュータプログラムは図１０に示されるコンピュータ機器で実行され得る。コンピュータ機器のメモリには、当該ビデオ符号化装置９００を構成する各プログラムモジュール、例えば、図９に示されるビデオフレーム取得モジュール９０２、履歴複雑性計算モジュール９０４、利用可能ビットレート取得モジュール９０６、ビットレート調整モジュール９０８、量子化パラメータ更新モジュール９１０及び符号化モジュール９１２が記憶される。各プログラムモジュールからなるコンピュータプログラムは、プロセッサに、本明細書で説明される本出願の各実施例のビデオ符号化方法におけるステップを実行させる。
【０１１７】
例えば、図１０に示されるコンピュータ機器は、図９に示されるビデオ符号化装置９００におけるビデオフレーム取得モジュール９０２を介してステップＳ２０２を実行することができる。コンピュータ機器は、履歴複雑性計算モジュール９０４を介してステップＳ２０４を実行することができる。コンピュータ機器は、利用可能ビットレート取得モジュール９０６を介してステップＳ２０６を実行することができる。コンピュータ機器は、調整モジュール９０８を介してステップＳ２０８を実行することができる。コンピュータ機器は、量子化パラメータ更新モジュール９１０を介してステップＳ２１０を実行することができる。コンピュータ機器は、符号化モジュール９１２を介してステップＳ２１２を実行することができる。
【０１１８】
一実施例において、メモリとプロセッサとを含むコンピュータ機器を提供し、メモリにはコンピュータプログラムが記憶され、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するステップと、
現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するステップと、
現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するステップであって、第２時間粒度が第１時間粒度より細かい時間単位であるステップと、
第２利用可能ビットレートと第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性と第１履歴複雑性に従って、第２利用可能ビットレートと第１利用可能ビットレートとの間でビットレートを調整するステップと、
調整された第２利用可能ビットレートに基づき、初期量子化パラメータを更新して、現在量子化パラメータを取得するステップと、
現在量子化パラメータに基づき、現在ビデオフレームを符号化するステップとを実行させる。
【０１１９】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
現在ビデオフレームに対応する第１履歴ビデオフレームシーケンスを決定するステップと、
第１履歴ビデオフレームシーケンスにおける各ビデオフレームの複雑性を取得するステップと、
各ビデオフレームの複雑性に基づき、現在ビデオフレームに対応する第１履歴複雑性を計算するステップと、を実行させる。
【０１２０】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
各ビデオフレームの複雑性に基づき、第１履歴平均複雑性を計算するステップと、
各ビデオフレームの複雑性に基づき、第１履歴複雑性変動度を計算するステップと、
第１履歴平均複雑性と第１履歴複雑性変動度とを融合して、第１履歴複雑性を取得するステップと、を実行させる。
【０１２１】
他の実施例において、現在ビデオフレームに対応する第１履歴複雑性は、次の式で計算され、
【数１７】
2021520160.tif 000019
ここで、Ｐｃｐｌｘｉは現在ビデオフレームｉに対応する第１履歴複雑性を示し、ｓａｔｄａｖｇｉは現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算することで得られた第１履歴平均複雑性を示し、ｓａｔｄ  ｖａｒｉは現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算することで得られた第１履歴複雑性変動を示し、ｓａｔｄａｖｇｉ−ｓａｔｄ  ｖａｒｉは第１履歴複雑性変動度を示し、ｓａｔｄｊは現在ビデオフレームｉの前のｊ番目のビデオフレームの複雑性を示し、ｗは所定の変動度重み係数を示す。
【０１２２】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
現在ビデオフレームの複雑性を取得するステップと、
現在ビデオフレームの複雑性と第１履歴複雑性との間の大きさの関係を決定するステップと、
現在ビデオフレームの複雑性が第１履歴複雑性より大きい場合、第１利用可能ビットレートから第１ビットレートを減らし、第１ビットレートを第２利用可能ビットレートに増加するステップと、
現在ビデオフレームの複雑性が第１履歴複雑性より小さい場合、第２利用可能ビットレートから第２ビットレートを減らし、第２ビットレートを第１利用可能ビットレートに増加するステップと、を実行させる。
【０１２３】
他の実施例において、第１ビットレートと現在の第１利用可能ビットレートとは正の相関となり、第１ビットレートと、現在ビデオフレームの複雑性と第１履歴複雑性との差とは、正の相関となる。
【０１２４】
他の実施例において、第２ビットレートと現在の第２利用可能ビットレート成とは正の相関となり、第２ビットレートと第２利用可能ビットレートの充足度とは正の相関となり、第２ビットレートと、現在ビデオフレームの複雑性と第１履歴複雑性との差とは、正の相関となる。
【０１２５】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
第１ビットレートを増加した後、第２利用可能ビットレートが第２利用可能ビットレートに対応する最大値を超えた場合、第２利用可能ビットレートを第２利用可能ビットレートに対応する最大値に調整するステップと、
第２ビットレートを増加した後、第１利用可能ビットレートが第１利用可能ビットレートに対応する最大値を超えた場合、第１利用可能ビットレートを第１利用可能ビットレートに対応する最大値に調整するステップと、を実行させる。
【０１２６】
他の実施例において、第１ビットレート、第２ビットレートは次の式で計算され、
【数１８】
2021520160.tif 000020
ここで、Ａｄｍ_Ｂｉｔｓは第１利用可能ビットレートから減らされた第１ビットレートを示し、Ａｄｓ_Ｂｉｔｓは第２利用可能ビットレートから減らされた第２ビットレートを示し、ＡｄＲａｔｉｏｎは現在ビデオフレームの複雑性と第１履歴複雑性との差を示し、ｍ_ｂｕｆｆｅｒは現在の第１利用可能ビットレートを示し、ｓ_ｂｕｆｆｅｒは現在の第２利用可能ビットレートを示し、ｍ_ｂｕｆｆｅｒｍａｘは第１利用可能ビットレートに対応する最大値を示し、ｓ_ｂｕｆｆｅｒｍａｘは第２利用可能ビットレートに対応する最大値を示し、
【数１９】
2021520160.tif 000021
は第２利用可能ビットレートの充足度を示し、αは所定のバランス調整パラメータを示し、Ｍｉｎは最小値関数を示す。
【０１２７】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
現在ビデオフレームに対応する第２時間粒度検出ウィンドウにおけるビデオフレームシーケンスを取得するステップと、
ビデオフレームシーケンスと現在量子化パラメータに基づき推定された累積符号化ビットレートと、調整された第２利用可能ビットレートとの間が、所定のビットレート関係に合うように、現在量子化パラメータが取得されるまで、初期量子化パラメータから数値を徐々に大きくするステップとを実行させる。
【０１２８】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
現在量子化パラメータに基づき、現在ビデオフレームに対応する現在量子化ステップサイズを取得するステップと、
現在量子化ステップサイズに基づき、現在ビデオフレームを符号化して、現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、を実行させる。
【０１２９】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
現在ビデオフレームが属する目標ビデオフレームシーケンスに対応する目標ビットレートを取得するステップと、
目標ビットレート、目標ビデオフレームシーケンスのフレームレートに基づき、１フレームあたりの平均割当可能なビットレートを計算するステップと、
符号化後の現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、
１フレームあたりの平均割当可能なビットレート、実際占有ビットレートに基づき、調整  された第２利用可能ビットレートを更新して、次のビデオフレームに対応する第２利用可能ビットレートを取得するステップと、を実行させる。
【０１３０】
一実施例において、コンピュータプログラムが記憶されるコンピュータ可読記憶媒体を提供し、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するステップと、
現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するステップと、
現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するステップであって、第２時間粒度が第１時間粒度より細かい時間単位であるステップと、
第２利用可能ビットレートと第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性と第１履歴複雑性に従って、第２利用可能ビットレートと第１利用可能ビットレートとの間でビットレートを調整するステップと、
調整された第２利用可能ビットレートに基づき、初期量子化パラメータを更新して、現在量子化パラメータを取得するステップと、
現在量子化パラメータに基づき、現在ビデオフレームを符号化するステップと、を実行させる。
【０１３１】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
現在ビデオフレームに対応する第１履歴ビデオフレームシーケンスを決定するステップと、
第１履歴ビデオフレームシーケンスにおける各ビデオフレームの複雑性を取得するステップと、
各ビデオフレームの複雑性に基づき、現在ビデオフレームに対応する第１履歴複雑性を計算するステップと、を実行させる。
【０１３２】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
各ビデオフレームの複雑性に基づき、第１履歴平均複雑性を計算するステップと、
各ビデオフレームの複雑性に基づき、第１履歴複雑性変動度を計算するステップと、
第１履歴平均複雑性と第１履歴複雑性変動度とを融合して、第１履歴複雑性を取得するステップと、を実行させる。
【０１３３】
他の実施例において、現在ビデオフレームに対応する第１履歴複雑性は次の式で計算され、
【数２０】
2021520160.tif 000022
ここで、Ｐｃｐｌｘｉは現在ビデオフレームｉに対応する第１履歴複雑性を示し、ｓａｔｄａｖｇｉは現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算することで得られた第１履歴平均複雑性を示し、ｓａｔｄ  ｖａｒｉは現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算することで得られた第１履歴複雑性変動を示し、ｓａｔｄａｖｇｉ−ｓａｔｄ  ｖａｒｉは第１履歴複雑性変動度を示し、ｓａｔｄｊは現在ビデオフレームｉの前のｊ番目のビデオフレームの複雑性を示し、ｗは所定の変動度重み係数を示す。
【０１３４】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
現在ビデオフレームの複雑性を取得するステップと、
現在ビデオフレームの複雑性と第１履歴複雑性との間の大きさの関係を決定するステップと、
現在ビデオフレームの複雑性が第１履歴複雑性より大きい場合、第１利用可能ビットレートから第１ビットレートを減らし、第１ビットレートを第２利用可能ビットレートに増加するステップと、
現在ビデオフレームの複雑性が第１履歴複雑性より小さい場合、第２利用可能ビットレートから第２ビットレートを減らし、第２ビットレートを第１利用可能ビットレートに増加するステップと、を実行させる。
【０１３５】
他の実施例において、第１ビットレートと現在の第１利用可能ビットレートとは正の相関となり、第１ビットレートと、現在ビデオフレームの複雑性と第１履歴複雑性との差とは、正の相関となる。
【０１３６】
他の実施例において、第２ビットレートと現在の第２利用可能ビットレート成とは正の相関となり、第２ビットレートと第２利用可能ビットレートの充足度とは正の相関となり、第２ビットレートと、現在ビデオフレームの複雑性と第１履歴複雑性との差とは、正の相関となる。
【０１３７】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
第１ビットレートを増加した後、第２利用可能ビットレートが第２利用可能ビットレートに対応する最大値を超えた場合、第２利用可能ビットレートを第２利用可能ビットレートに対応する最大値に調整するステップと、
第２ビットレートを増加した後、第１利用可能ビットレートが第１利用可能ビットレートに対応する最大値を超えた場合、第１利用可能ビットレートを第１利用可能ビットレートに対応する最大値に調整するステップと、を実行させる。
【０１３８】
他の実施例において、第１ビットレート、第２ビットレートは次の式で計算され、
【数２１】
2021520160.tif 000023
ここで、Ａｄｍ_Ｂｉｔｓは第１利用可能ビットレートから減らされた第１ビットレートを示し、Ａｄｓ_Ｂｉｔｓは第２利用可能ビットレートから減らされた第２ビットレートを示し、ＡｄＲａｔｉｏｎは現在ビデオフレームの複雑性と第１履歴複雑性との差を示し、ｍ_ｂｕｆｆｅｒは現在の第１利用可能ビットレートを示し、ｓ_ｂｕｆｆｅｒは現在の第２利用可能ビットレートを示し、ｍ_ｂｕｆｆｅｒｍａｘは第１利用可能ビットレートに対応する最大値を示し、ｓ_ｂｕｆｆｅｒｍａｘは第２利用可能ビットレートに対応する最大値を示し、
【数２２】
2021520160.tif 000024
は第２利用可能ビットレートの充足度を示し、αは所定のバランス調整パラメータを示し、Ｍｉｎは最小値関数を示す。
【０１３９】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
現在ビデオフレームに対応する第２時間粒度検出ウィンドウにおけるビデオフレームシーケンスを取得するステップと、
ビデオフレームシーケンスと現在量子化パラメータに基づき推定された累積符号化ビットレートと、調整された第２利用可能ビットレートとの間が所定のビットレート関係に合うように、現在量子化パラメータが取得されるまで、初期量子化パラメータから数値を徐々に大きくすることで、ステップと、を実行させる。
【０１４０】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
現在量子化パラメータに基づき、現在ビデオフレームに対応する現在量子化ステップサイズを取得するステップと、
現在量子化ステップサイズに基づき、現在ビデオフレームを符号化して、現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、を実行させる。
【０１４１】
他の実施例において、コンピュータプログラムはプロセッサによって実行されるときに、プロセッサに、
現在ビデオフレームが属する目標ビデオフレームシーケンスに対応する目標ビットレートを取得するステップと、
目標ビットレート、目標ビデオフレームシーケンスのフレームレートに基づき、１フレームあたりの平均割当可能なビットレートを計算するステップと、
符号化後の前記現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、
前記１フレームあたりの平均割当可能なビットレート、前記実際占有ビットレートに基づき、調整された第２利用可能ビットレートを更新して、次のビデオフレームに対応する第２利用可能ビットレートを取得するステップと、を実行させる。
【０１４２】
当業者は、前述の実施形態の方法におけるプロセスの全部又は一部が、コンピュータプログラムを介して関連するハードウェアに命令することによって完成され得ることを理解することができ、前記プログラムは不揮発性コンピュータ可読記憶媒体に記憶でき、当該プログラムが実行される場合、上記の各方法の実施例のプロセスを含み得る。本出願で提供される各実施例において使用される、メモリ、ストレージ、データベース又は他の媒体への言及は、いずれも不揮発性及び／又は揮発性メモリを含み得る。不揮発性メモリには、読み取り専用メモリ(ＲＯＭ)、プログラム可能なＲＯＭ(ＰＲＯＭ)、電気プログラマブルＲＯＭ(ＥＰＲＯＭ)、電気消去可能プログラマブルＲＯＭ(ＥＥＰＲＯＭ)又はフラッシュメモリが含まれてもよい。揮発性メモリには、ランダムアクセスメモリ (ＲＡＭ)や外部高速キャッシュメモリが含まれてもよい。限定ではなく、説明として、ＲＡＭは、スタティックＲＡＭ(ＳＲＡＭ)、ダイナミックＲＡＭ(ＤＲＡＭ)、同期型ＤＲＡＭ(ＳＤＲＡＭ)、ダブルデータレートＳＤＲＡＭ(ＤＤＲＳＤＲＡＭ)、拡張型ＳＤＲＡＭ(ＥＳＤＲＡＭ)、同期チェーン(Ｓｙｎｃｈｌｉｎｋ)ＤＲＡＭ(ＳＬＤＲＡＭ)、ラムバス(Ｒａｍｂｕｓ) ダイレクトＲＡＭ(ＲＤＲＡＭ)、ダイレクトラムバスダイナミックＲＡＭ (ＤＲＤＲＡＭ)、及びラムバスダイナミックＲＡＭ(ＲＤＲＡＭ)などの様々な形態で利用できる。
【０１４３】
以上の実施例の各技術的特徴は、任意に組み合わせることができ、説明を簡潔するために、上記の実施例における各技術的特徴の全ての可能な組み合わせについて説明していないが、これらの技術的特徴の組み合わせは、矛盾がない限り、いずれも本明細書に記載された範囲と見なされるべきである。
【０１４４】
以上の実施例は、本出願のいくつかの実施形態を表すだけであり、それらの説明は、具体的且つ詳細であるが、本出願の特許範囲を限定するものとして解釈されるべきではない。注意すべきことは、当業者にとって、本出願の構想から逸脱することなく、若干の変形及び改良を行うことができ、これらはすべて本出願の保護範囲に属する。従って、本出願の特許の保護範囲は、添付の特許請求の範囲に従うものとする。
【符号の説明】
【０１４５】
１１０  アナウンサー端末
１２０  ビデオ配信サーバ
１３０  ユーザ端末
９００  ビデオ符号化装置
９０２  ビデオフレーム取得モジュール
９０４  履歴複雑性計算モジュール
９０６  利用可能ビットレート取得モジュール
９０８  調整モジュール
９０８  ビットレート調整モジュール
９１０  量子化パラメータ更新モジュール
９１２  符号化モジュール
【図１】
2021520160.tif 000031
【図２】
2021520160.tif 000032
【図３】
2021520160.tif 000033
【図４】
2021520160.tif 000034
【図５】
2021520160.tif 000035
【図６】
2021520160.tif 000036
【図７】
2021520160.tif 000037
【図８】
2021520160.tif 000038
【図９】
2021520160.tif 000039
【図１０】
2021520160.tif 000040
【手続補正書】
【提出日】令和2年10月27日(2020.10.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ機器が実行するビデオ符号化方法であって、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するステップと、
前記現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するステップと、
現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するステップであって、前記第２時間粒度が前記第１時間粒度より細かい時間単位であるステップと、
前記第２利用可能ビットレート及び前記第１利用可能ビットレートに基づいて、前記現在ビデオフレームの複雑性及び前記第１履歴複雑性に従って、前記第２利用可能ビットレートと前記第１利用可能ビットレートとの間でビットレートを調整するステップと、
調整された第２利用可能ビットレートに基づき前記初期量子化パラメータを更新し、現在量子化パラメータを取得するステップと、
前記現在量子化パラメータに基づき、前記現在ビデオフレームを符号化するステップとを含む方法。
【請求項２】
前記現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算する前記ステップは、
前記現在ビデオフレームに対応する第１履歴ビデオフレームシーケンスを決定するステップと、
前記第１履歴ビデオフレームシーケンスにおける各ビデオフレームの複雑性を取得するステップと、
各前記ビデオフレームの複雑性に基づき、前記現在ビデオフレームに対応する第１履歴複雑性を計算するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項３】
各前記ビデオフレームの複雑性に基づき、前記現在ビデオフレームに対応する第１履歴複雑性を計算するステップは、
各前記ビデオフレームの複雑性に基づき、第１履歴平均複雑性を計算するステップと、
各前記ビデオフレームの複雑性に基づき、第１履歴複雑性変動度を計算するステップと、
前記第１履歴平均複雑性と前記第１履歴複雑性変動度とを融合して、第１履歴複雑性を取得するステップと、を含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記現在ビデオフレームに対応する前記第１履歴複雑性は次の式で計算され、
【数１】
2021520160.tif 000041
そのうち、Ｐｃｐｌｘｉは現在ビデオフレームｉに対応する第１履歴複雑性を示し、ｓａｔｄａｖｇｉは、前記現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算された第１履歴平均複雑性を示し、ｓａｔｄ  ｖａｒｉは前記現在ビデオフレームｉの前のＮ個のビデオフレームに基づき計算された第１履歴複雑性変動を示し、ｓａｔｄａｖｇｉ−ｓａｔｄ ｖａｒｉは第１履歴複雑性変動度を示し、ｓａｔｄｊは前記現在ビデオフレームｉの前のｊ番目のビデオフレームの複雑性を示し、ｗは所定の変動度重み係数を示すことを特徴とする請求項３に記載の方法。
【請求項５】
前記第２利用可能ビットレート及び前記第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性及び前記第１履歴複雑性に従って、前記第２利用可能ビットレートと前記第１利用可能ビットレートとの間でビットレートを調整するステップは、
前記現在ビデオフレームの複雑性を取得するステップと、 
前記現在ビデオフレームの複雑性と前記第１履歴複雑性との間の大きさの関係を決定するステップと、 
前記現在ビデオフレームの複雑性が前記第１履歴複雑性より大きい場合、前記第１利用可能ビットレートから第１ビットレートを減らし、前記第１ビットレートを前記第２利用可能ビットレートに増加するステップと、
前記現在ビデオフレームの複雑性が前記第１履歴複雑性より小さい場合、前記第２利用可能ビットレートから第２ビットレートを減らし、前記第２ビットレートを前記第１利用可能ビットレートに増加するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記第１ビットレートと前記現在の第１利用可能ビットレートとは正の相関となり、前記第１ビットレートと、前記現在ビデオフレームの複雑性と前記第１履歴複雑性との差とは正の相関となることを特徴とする請求項５に記載の方法。
【請求項７】
前記第２ビットレートと前記現在の第２利用可能ビットレートとは正の相関となり、前記第２ビットレートと前記第２利用可能ビットレートの充足度とは正の相関となり、前記第２ビットレートと、前記現在ビデオフレームの複雑性と前記第１履歴複雑性との差とは、正の相関となることを特徴とする請求項５に記載の方法。
【請求項８】
前記方法はさらに、
前記第１ビットレートを増加した後、前記第２利用可能ビットレートが第２利用可能ビットレートに対応する最大値を超えた場合、前記第２利用可能ビットレートを第２利用可能ビットレートに対応する最大値に調整するステップと、
前記第２ビットレートを増加した後、前記第１利用可能ビットレートが第１利用可能ビットレートに対応する最大値を超えた場合、前記第１利用可能ビットレートを第１利用可能ビットレートに対応する最大値に調整するステップと、を含むことを特徴とする請求項５に記載の方法。
【請求項９】
前記第１ビットレート、前記第２ビットレートは次の式で計算され、
【数２】
2021520160.tif 000042
そのうち、Ａｄｍ_Ｂｉｔｓは第１利用可能ビットレートから減らされた前記第１ビットレートを示し、Ａｄｓ_Ｂｉｔｓは第２利用可能ビットレートから減らされた前記第２ビットレートを示し、ＡｄＲａｔｉｏｎは前記現在ビデオフレームの複雑性と前記第１履歴複雑性との差を示し、ｍ_ｂｕｆｆｅｒは現在の第１利用可能ビットレートを示し、ｓ_ｂｕｆｆｅｒは現在の第２利用可能ビットレートを示し、ｍ_ｂｕｆｆｅｒｍａｘは第１利用可能ビットレートに対応する最大値を示し、ｓ_ｂｕｆｆｅｒｍａｘは第２利用可能ビットレートに対応する最大値を示し、
【数３】
2021520160.tif 000043
は前記第２利用可能ビットレートの充足度を示し、αは所定のバランス調整パラメータを示し、Ｍｉｎは最小値関数を示すことを特徴とする請求項５に記載の方法。
【請求項１０】
前記調整された前記第２利用可能ビットレートに基づき、前記初期量子化パラメータを更新して、現在量子化パラメータを取得する前記ステップは、
前記現在ビデオフレームに対応する第２時間粒度検出ウィンドウにおけるビデオフレームシーケンスを取得するステップと、
前記ビデオフレームシーケンス及び前記現在量子化パラメータに基づき推定された累積符号化ビットレートと、調整された第２利用可能ビットレートとの間が所定のビットレート関係に合うように、現在量子化パラメータが取得されるまで、前記初期量子化パラメータから数値を徐々に大きくするステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記現在量子化パラメータに基づき、前記現在ビデオフレームを符号化する前記ステップは、
前記現在量子化パラメータに基づき、前記現在ビデオフレームに対応する現在量子化ステップサイズを取得するステップと、
前記現在量子化ステップサイズに基づき、前記現在ビデオフレームを符号化することで、前記現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記方法はさらに、
前記現在ビデオフレームが属する目標ビデオフレームシーケンスに対応する目標ビットレートを取得するステップと、
前記目標ビットレート、前記目標ビデオフレームシーケンスのフレームレートに基づき、１フレームあたりの平均割当可能なビットレートを計算するステップと、 
符号化後、前記現在ビデオフレームに対応する実際占有ビットレートを取得するステップと、
前記１フレームあたりの平均割当可能なビットレート、前記実際占有ビットレートに基づき、前記調整された第２利用可能ビットレートを更新して、次のビデオフレームに対応する第２利用可能ビットレートを取得するステップとを含むことを特徴とする請求項１乃至１１のいずれか１項に記載の方法。
【請求項１３】
ビデオ符号化装置であって、
符号化対象となる現在ビデオフレーム及び初期量子化パラメータを取得するためのビデオフレーム取得モジュールと、
前記現在ビデオフレームに対応する第１時間粒度の第１履歴複雑性を計算するための履歴複雑性計算モジュールと、
現在の第２時間粒度の第２利用可能ビットレート及び現在の第１時間粒度の第１利用可能ビットレートを取得するための利用可能ビットレート取得モジュールであって、前記第２時間粒度が前記第１時間粒度より細かい時間単位である利用可能ビットレート取得モジュールと、
前記第２利用可能ビットレート及び前記第１利用可能ビットレートに基づいて、現在ビデオフレームの複雑性及び前記第１履歴複雑性に従って、前記第２利用可能ビットレートと前記第１利用可能ビットレートとの間でビットレートを調整するためのビットレート調整モジュールステップと、
調整された第２利用可能ビットレートに基づき前記初期量子化パラメータを更新して、現在量子化パラメータを取得するための量子化パラメータ更新モジュールと、
前記現在量子化パラメータに基づき、前記現在ビデオフレームを符号化するための符号化モジュールと、を備えることを特徴とするビデオ符号化装置。
【請求項１４】
プロセッサに、請求項１乃至１２のいずれか１項に記載の方法のステップを実行させるコンピュータプログラム。
【請求項１５】
メモリとプロセッサを含むコンピュータ機器であって、前記メモリにコンピュータプログラムが記憶され、前記コンピュータプログラムが前記プロセッサによって実行されるときに、前記プロセッサに、請求項１乃至１２のいずれか１項に記載の方法のステップを実行させるコンピュータ機器。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
ビデオ配信サーバ１２０は、ビデオ符号器とコードストリームコントローラとを含んでもよく、当該ビデオ符号器は、アナウンサー端末１１０によってプッシュされたビデオストリームを符号化し、ビデオが符号化された後に得られたコードストリームをバッファに入れてバッファリングし、その後、ネットワークを介して伝送し、コードストリームコントローラは、ビデオ符号器の量子化パラメータを調整することで、後続のビデオ符号化を行うようにビデオ符号器を制御し、バッファのオーバーフロー又はアンダーフローを防止する。ビデオ配信サーバ１２０はさらに、取得したコードストリームをユーザ端末１３０にプッシュすることもできる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
時間粒度は、時間を細分化する単位であり、第２時間粒度は第１時間粒度より細かい時間単位であり、時間単位が細かいほど、当該時間単位が代表する時間帯がより小さいことを示す。例えば、分に対して、秒はより細かい時間粒度であり、秒に対して、ミリ秒はより細かい時間粒度である。一実施例において、第１時間粒度は、分を単位として時間を区画し、第２時間粒度は秒を単位として時間を区画する。また例えば、２分に対して、１分はより細かい時間粒度であり、第１時間粒度は２分を単位として時間を区画することを示し、第２時間粒度は１分を単位として時間を区画することを示す。本出願実施例は、時間単位の区画を限定しなく、第１時間粒度と第２時間粒度も限定しない。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００９０
【補正方法】変更
【補正の内容】
【００９０】
以下は、第１利用可能ビットレートは分レベル利用可能ビットレートであり、第２利用可能ビットレートは秒レベル利用可能ビットレートであり、分レベル利用可能ビットレートに対応する時間範囲は１分であり、秒レベル利用可能ビットレートに対応する時間範囲が１秒であり、フレームレートが３０フレーム／秒であり、現在ビデオフレームが第１９００フレームであることを例として、本実施例によって提供されるビデオ符号化方法を説明する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１０３
【補正方法】変更
【補正の内容】
【０１０３】
一実施例において、履歴複雑性計算モジュール９０４はさらに、各ビデオフレームの複雑性に基づき、第１履歴平均複雑性を計算し、各ビデオフレームの複雑性に基づき、第１履歴複雑性変動度を計算し、第１履歴平均複雑性と第１履歴複雑性変動度とを融合して、第１履歴複雑性を取得する。
【国際調査報告】
2021520160.tif 000044
2021520160.tif 000045
2021520160.tif 000046
2021520160.tif 000047