DropBox H.264 可逆圧縮の詳細
Olga Krovyakova著 - 2023 年 10 月 6 日に修正、2019 年 4 月 3 日に作成。
数週間前、Dropbox のエンジニアが人気テレビ番組の Pied Piper アルゴリズムを再作成したという記事に遭遇しました。 Dropbox は H.264 および JPEG ファイル用の可逆圧縮アルゴリズムを開発し、私たちのチームはこのソリューションを評価し、具体的な詳細を収集することに取り組みました。
目を半分にして、再圧縮された H.264 ファイルは H.264 ではなくなり、一時的なストレージとしてのみ使用できることに気付きました。さらに、この圧縮方法は、ファイルがコーダーとして CAVLC を使用した場合、またはファイルが最大サイズの PU および TU ブロックでコーディングされた場合という 2 つの条件下で効果的になる可能性があります。どちらの条件も、H.264 コーデックが最大速度コーディングに設定されている場合にのみ満たされます。
パイドパイパープロジェクトについて
ビデオもその一つです 最も重い したがって、ビデオ処理、転送、ストレージ サービスが実行可能なソリューションとして圧縮を考慮する必要があるのも不思議ではありません。ただし、いくつかの選択肢があります。 2015 年 8 月、DropBox は、H.264 標準ビデオ ファイル用のオリジナルではあるが不完全なアルゴリズムという、この問題に対する自社のビジョンを発表しました。同社は顧客のファイルのストレージに主に焦点を当てています。平均的なユーザーは、これらのファイルがどのように保存されているかについてはほとんど気にしません。重要なのは、まったく同じファイルをそのまま、つまりアップロードされた方法でダウンロードすることです。したがって、DropBox アルゴリズムはロスレスアルゴリズムです。その上、 圧縮の結果はソース形式のビデオ ファイルではありません。
私たちの記事は、さまざまなファイル形式の圧縮におけるこのアルゴリズムの効率を評価することを目的としています。この目的のために、Solveig Multimedia のを使用します。 ゾンド265、 補助ツールとしての H.264 および H.265 ビデオ ファイルのアナライザー。
の効率の推定 パイドパイパー プロジェクトコンプレッサー
コンプレッサーのソース コードとテスト ファイルは、次の場所から入手できます。 GitHub 。まず、コンプレッサーをコンパイルし、テスト ファイルを推定します。その後、実際のビデオ ファイルに対する効果を測定します。
圧縮
具体的なガイドライン パイドパイパー コンプレッサーのコンパイルは Linux でのみ使用できます。実際、これは単一のファイル「piedpiper_make」スクリプトです。したがって、Linux Ubuntu x64 をロードし、3 つのコマンドを入力する必要があります。
コンパイル後、現在のフォルダーに圧縮ファイルがあるかどうかを確認します。
- h264dec – 圧縮および解凍の実行可能ファイル
- so.0、libopenh264.so – 動的補助ライブラリとそれへのリンク。
次のコマンドで圧縮を実行した場合:
./h264dec ./ソースファイル.264 ./宛先ファイル.pip、
減圧:
./h264dec ./圧縮ファイル.pip ./解凍ファイル.264。
パイドパイパー テストファイル
Git リポジトリによると、DropBox チームは次のファイルをテスト素材として使用しました: 「black.264」、「tibby.264」、「walk.264」、「BA1_FT_C.264」、「BAMQ2_JVC_C.264」。これらを Zond にアップロードします。 265 を実行し、同じ方法で圧縮されていることを確認します (Zond 265 のスクリーンショットを参照) ビットストリーム タブ、写真。 「tibby.264」ファイルの場合は 1 ~ 3)。ファイルの主なプロパティは、CAVLC の使用 (PPS、entropy_coding_mode_flag: 0) と B フレームなし (SPS、max_num_reorder_frames: 0) です。効率テストのために最初の 3 つのファイルを選択しました。
写真。 1.「tibby.264」ファイルのシーケンス パラメーター セット (SPS) ブロック
写真。 2.「tibby.264」ファイルのピクチャパラメータセットブロック
写真。 3.「tibby.264」ファイルのビデオストリーム構造
その他のテストファイル
ユーザーは、ビデオ ファイルを取得するために、カメラ (携帯電話など) でビデオを撮影したり、多数のビデオ サービス (YouTube、VK、Vimeo、Facebook など) からダウンロードしたり、または次のツールを使用したりすることができます。録音機能を備えたソフトウェア。
通常の携帯電話ビデオクリップとして「VID_20150917_131139.264」ファイルを選択します。前のサンプルと同様に、これには B フレームが含まれていませんが、算術コーダーとして CAVLC ではなく CABAC が使用されています。コンプレッサーは YouTube ファイルに対してエラーを返すため (B フレームが含まれ、CABAC が使用されます)、これらのファイルはテスト フレームワークの後に残しておきます。
再コーディング対応ソフトウェアを選択する場合、 ffmpeg コンソールユーティリティ (「libx264」モジュール)。さらに言えば、圧縮は「超高速」プリセットでのみ可能であり、「超高速」プリセットでは結果が得られないことがわかります。テストファイルは「tractor-ultrafast.264」、「tractor-superfast.264」です。
試験結果
テスト結果を表 1 および 2 に示します。PU および TU ブロックの定量的データは、Zond 265 ソフトウェアを使用して収集されました ( Stream Stats タブ)。写真。図 4 は、「tibby.264」ファイル データのスクリーンショットを示しています。
写真。 4. PU および TU は、「tibby.264」ファイルのデータをブロックします
表 1.笛吹き男 コンプレッサー。効率テストの結果。
表 2.笛吹き男 コンプレッサー。効率テストの結果。
上の表が示すように、現在のバージョンの パイドパイパー このアルゴリズムは、ファイルがコーダーとして CAVLC を使用する場合、またはファイルが最大サイズの PU および TU ブロックでコーディングされている場合の 2 つのシナリオでのみ機能します。これらのシナリオでは、H.264 コーデックによる最大速度のコーディングが必要です。どうやら、これらすべてはかなり大きなファイルに要約されるようです。によって作成されたファイルは次のとおりです。 ffmpeg libx264 を使用したコーデック、「超高速」プリセットがオン。
今のところはそれだけです。私たちのチームとともにこの調査に時間を割いていただいたことに感謝いたします。フィードバックをお待ちしております。
Olga Krovyakova は、2010 年から Solveig Multimedia のテクニカル サポート マネージャーを務めています。
彼女は、ビデオ スプリッター、HyperCam、WMP トリマー プラグイン、AVI Trimmer+、TriMP4 などの会社製品に関する多くのテキストおよびビデオ ガイドラインの著者です。
彼女は毎日プログラムを使って作業しているため、プログラムがどのように機能するかをよく知っています。 ご質問がある場合は、 support@solveigmm.com経由で Olga までお問い合わせください。彼女は喜んでお手伝いします!