VVC エンコーダーとは?
VVC (Versatile Video Coding) は、次世代動画符号化規格である H.266 に対応するとされる次世代動画符号化方式です。H.265 に対応する HEVC (High Efficiency Video Coding) コーデックがさらに進化したバージョンとして、HEVC より 40% 程の圧縮効率を実現します。HEVC は、H.264 に対応する AVC (Advanced Video Coding) コーデックで同じ品質の動画データを圧縮する場合と比較し、約 25% ~ 50% の効率化を実現します。VVC に関する詳細につきましては、以下の動画 (英語) をご覧ください。
[su_youtube url=”https://www.youtube.com/watch?v=TVM5Yy6lBjM” autoplay=”yes”]
VVC 開発への取り組みを開始するためのステップ
この記事では、VVC エンコーダーを基礎からビルドする方法を紹介します。
前提条件
- Linux マシン (この記事では 17.10 を使用します)
- git
- cmake
- gcc
- 任意のソースストリーム (.yuv)
ステップ 1: ビルド
Fraunhofer の VTM (VVC テストモデル) バージョンのエンコーダーを使用します。
git clone https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM.git
次に、以下のコードを実行します。
cd VVCSoftware_VTM/ mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j4 cd ../bin #こちらはすべてバイナリーとなります
上記の結果、以下のバイナリーを取得します。
ls DecoderAnalyserAppStatic DecoderAppStatic EncoderAppStatic parcatStatic SEIRemovalAppStatic StreamMergeAppStatic umake
ステップ 2: エンコードおよびデコード
先程取得したバイナリーが正常に動作するかを確認する必要があります。そこで、ストリームをエンコードおよびデコードすることにより、確認を行います。./EncoderAppStatic --help
を入力することで、すべての利用可能なパラメーターを確認して必要なパラメーターを選択できますが、よりシンプルな例をご紹介します。
./EncoderAppStatic -i vicue_test_432x240_420_8_500.yuv -wdt 432 -hgt 240 -c encoder_randomaccess_vtm.cfg -f 5 -fr 30
説明:
- encoder_randomaccess_vtm.cfg
は、VVCSoftware_VTM/cfg
のファイルです。vicue_test_432x240_420_8_500.yuv
は、シンプルなソースストリームです。
パラメーター:
-i
: インプットストリーム-wdt
: ストリームの幅-hgt
: ストリームの高さ-c
: 使用する構成ファイル-f
: エンコードするフレーム数 (この記事では速度を考慮して 5 フレームを設定します。)-fr
: フレームレート
ストリームをデコードする場合:
./DecoderAppStatic -b str.bin -o rec_decoded.yuv
パラメーター:
-b
: エンコードされたインプット-o
: アウトプットの再構築
VTM をビルドし、エンコードやデコードを行うことができるようになりました。これで、VVC やメディア情報の詳細の調査を始めるための基礎を構築することができました。
現在、VVC は国際標準化が進められている段階ですが、ViCue Soft 社では、HEVC まで対応するビデオコーデック向け解析ソフトウェア VQ Analyzer 製品を提供しています。
ビデオコーデックによるビデオ解析を加速するたくさんの新機能を提供する最新版 v.4.1.0 は、無償評価版にてお試しください。
この記事は、ViCue Soft 社の Technology Blog に公開されている「Fast and save dive into VVC (H.266) development」の日本語参考訳です。