AV1 単語

5件

エーブイワン

3.1千文字の記事
  • twitter
  • facebook
  • はてな
  • LINE

AV1のロゴAV1またはAOMedia Video 1とは、Alliance for Open Media(以下AOMedia)が開発する動画圧縮規格の一つである。2018年3月28日AOMedia Video Codec 1.0として正式に仕様開された。ニコニコ動画でも採用の動きがある、詳細は後述する。

概要

VP8VP9の直接的な後継としてH.264など既存動画圧縮技術の置き換えをしている。その最大の特徴はロイリティフリーであることで、H.265で発生した複雑怪奇なパテントプール問題や不透明特許使用料問題を解決するものとして注されている。

開発の中心を担うAOMediaAmazonアップルARM、シスコ、FacebookGoogleIBMインテルマイクロソフトMozillaAI半導体メーカー NVIDIANetflixなどと、現代の代表的なIT界の巨人が参加メンバーとなっている。

特徴

動画投稿サイトやVODなどストリーミング向けに設計されている。エンコードに計算を要する一方、再生負荷は相対的に小さい。再生数が多い動画コーデックをAV1にすることで動画転送量を下げ、回線輻輳を抑えることができる。ただ圧縮率に対して計算コストが高くアーカイブ用途にはあまり向かない。

その性質は個人や小規模な運用より大規模事業者向けという趣があり、変換コスト<回線コストが成り立つケースにおいて威を発揮する規格とも言える。パーソナルユースでは再生することはあっても作成する機会は少ないかもしれない。ブロードキャスト用途もアップロードを負荷の低いコーデックに任せ、配信サーバーでAV1に変換送出など間接的な使用が多いのではないかとされる。直接配信はハードウェア支援など環境整備を待つ必要がある。

再生にかかる負荷が相対的に小さいとはいえH.264など既存のコーデックより要される性は高い。特にバッテリー駆動で省電められる携帯端末や非力な組み込み機器には再生支援は不可欠となる。策定メンバー半導体企業が居るのもこのため。それでも余程古い機器でもない限り最適化によってFullHD程度の解像度であればソフトウェアデコードでも再生できるようになってきている。

ニコニコ動画との関係

上述の通り再生負荷は相対的に小さいが逆にエンコード時間、計算コストはとても大きい。それはひとえに雑巾絞りに喩えられるような圧縮技術の採用にある。もととなった既存コーデックの発展形でありつつもパテント回避のため新規の圧縮技法を導入した結果、最適な結果を得るため動画の解析にとてつもない量の時間が必要になってしまった。

現状、リファレンス実装のlibaom最適化の進んでいる第三者実装SVT-AV1でさえリアルタイムエンコードは厳しく、AV1の高画質が活きる設定(cpu-used=0や1程度)ではCore i9だろうがThreadripperだろうが1080pで数十fpsも怪しい状況である。現実的な速度リアルタイム動作させようとすれば品質を落とすしかなく、これではH.265VP9から移行する利点がんでしまう。

ニコニコ生放送を擁するドワンゴとしてもそれではいけないということで

ハードウェア支援を自前でやろうということにしたらしい。

いやいやニコニコ半導体企業じゃないでしょなんで?な話だが、圧縮と回路技術に明るいエンジニアが社内にいたらしく、エンコードパラメータは限定されるが2019年3月時点で720p 30fpsの性を達成した。内製とか家電メーカーかよという気もするがもともとニコニコにはH.265配信をFPGA実装して配信テストをした実績がありハードウェアに強いエンジニアが在籍してる模様。なぜAOMに参加しないのか。

それはそれとして蓄積ニコニコ動画の方がAV1対応するかは未だ不明である。ただYouTube2018年9月15日からベータ版として既にAV1配信を開始している。Googleはスケールしないなら分割エンコードすればいいじゃないとばかりに力技で運用しているという噂もある。そのため回線コストで元が取れるならニコニコ動画も追随する可性は十分にあると思われる。AWSを札束で殴ればドワンゴだって対抗できるのかもしれない。

とりあえず使ってみたい人は

  1. ここexitからlibaomFFmpegexitダウンロード
  2. aomenc.exeエンコーダ

動画をy4m化
>ffmpeg -i src.mp4 -pix_fmt yuv420p -f yuv4mpegpipe temp.y4m

Opus化
>ffmpeg -i src.mp4 -c:a libopus -b:a (ビットレート[kbps]) audio.opus

1パス
>aomenc --threads=(使用CPUコア数) --end-usage=vbr --passes=2 --pass=1 --fpf=FirstPassStatisticsFile.fpf --cpu-used=1 --tile-columns=(縦分割数) --tile-rows=(横分割数) --color-primaries=(色間) --transfer-characteristics=(ガンマ) --matrix-coefficients=(YUV⇔RGB変換式) --output=FirstPassStatisticsFile.fpf temp.y4m

2パス
>aomenc --threads=(使用CPUコア数) --end-usage=vbr --passes=2 --pass=2 --target-bitrate=(ビットレート[kbps]) --fpf=FirstPassStatisticsFile.fpf --cpu-used=1 --tile-columns=(縦分割数) --tile-rows=(横分割数) --color-primaries=(色間) --transfer-characteristics=(ガンマ) --matrix-coefficients=(YUV⇔RGB変換式) --output=video.webm temp.y4m

とMUX
>ffmpeg -i audio.opus -i video.webm -c:v copy -c:a copy out.webm

libaomパイプとy4mファイル(生のYUVデータに簡単なメタ情報をつけたコンテナ)二通りの入サポートしている。ただしパイプ入Inter Prediction [フレーム間予測]や2-Passエンコードにおいて制限や予期せぬ動作を招くためあまり勧められていない。パイプ入cpu-used=0(複雑度最高)だとエンコーダーが落ちてしまう。
ただファイル読み込むにしても、y4mは単純な形式な故にタイムコード字幕などのメタデータ、そしてカラープロファイルを保持できない。ソースVFR(スマホで撮した動画など)であればCFRにしておくかタイムコード情報timecode v1なりnhmlとして、メタデータffmetadataで別途書き出してMUXするなど工夫する必要がある。

関連リンク

関連項目

この記事を編集する

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

急上昇ワード改

最終更新:2024/05/19(日) 15:00

ほめられた記事

最終更新:2024/05/19(日) 15:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP