goo blog サービス終了のお知らせ 

日々適当

hibitekitou

HAP

cg |2024-01-29

動画のCodecにHAP Codecsってのがあります。今まで興味なかったので何も調べてこなかったのだけど、必要が生じたのでちょっと調べます。
このCodecは通常AVIやMOVをコンテナとして使用されるそうです。GPUに重い処理を渡すことでCPUで処理するCodecよりも再生パフォーマンスが良いというメリットがあるようでリアルタイム系の描画エンジン(主にゲームエンジン)で使用するときに候補に上がってくるみたいですね。
Codecのフォーマットとしては4種類あり、HAP, HAP Alpha, HAP Q, HAP Q Alphaで大雑把に無印に対してQはデータサイズを犠牲にして画質を向上させたもので、Alphaはアルファチャンネルをサポートということになります。

ffmpegでの変換は

ffmpeg -i sourceFile -c:v hap -format hap_q outputFile.mov

だそうな。-formatオプションには hap_alpha, hap_q,があり、-formatオプションをつけなければhapになる模様。HAP Q Alphaにするにはどうすんだと思うこともないけど、使うことなさそうだからとりあえず無視。

-chunksオプションってのもあり、再生時(デコード時)の使用するCPUコア数を指定する模様。

ということで手元にあったH.264の1280x720のmovファイル(60MB)を変換してみたらですね、1.26GBとかいうサイズになったのだけど、これ、あってんの?
このファイルサイズを許容できるぐらい動画再生のCPUへの負荷軽減ってのはリアルタイム系には重要なテーマってことなんすかね。

HAPについてググってたらUE 5.3に関するページが出てきたのだけど、それによるとこのバージョンからデフォルトでいくつかのフォーマットをサポートするようになり、その中にHAPが含まれるようになったそうです。このCodecは現役ってことですかね(それ以前のバージョンではプラグインを有効にすることで取り扱えたのかな)。ちなみにUnityではアセットを購入することで利用できる模様。Unityで使用している人のレポートを見るとH.264と比較して半分ほどのCPU使用率になるようです。効果が高いけど、ファイルサイズが大きいから高速なストレージは必須ということになるんだろうなあ。

コメント ( 0 )|Trackback ( )
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。