AV1単語

エーブイワン

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するなど工夫する必要がある。

関連リンク

関連項目

【スポンサーリンク】

スマホ版URL:
https://dic.nicovideo.jp/t/a/av1

この記事の掲示板に最近描かれたお絵カキコ

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

AV1

1 ななしのよっしん
2019/05/12(日) 03:34:39 ID: 6gCP2i+rjm
AOMが後継規格を作るならVP8VP9がVPXとなるように同じくAVXとか呼ばれるようになるのかな
タイトル:AV1ロゴ
画像をクリックして再生!!
 
Twitterで紹介する

2 ななしのよっしん
2019/05/14(火) 17:50:36 ID: O5LFEFhMBs
>AV1リアルタイムハードウェアエンコーダを開発しました
>https://dwango.github.io/articles/av1hwencoder/exit
>ドワンゴの研究開発部ではAV1ハードウェアエンコーダを開発し、2019年3月時点で720p 30fpsリアルタイムを達成
>設計上の最大性1080p 30fpsリアルタイム処理であり、これはチューニング次第で達成できる見込み

niconico_av1すごいな
3 ななしのよっしん
2019/05/16(木) 00:17:07 ID: C5u+v1XFFn
GPGPUで並列化するコード書きましたとかじゃなくてFPGAに載せちゃったかー、難易度ウルトラだよこれ。うまく立ち回れれば多少BtoBでも稼げるんじゃね。
4 ななしのよっしん
2019/05/16(木) 08:12:45 ID: QOOgo/E+pP
誤字がある
ATV-AV1じゃなくてSVT-AV1
5 ななしのよっしん
2019/05/23(木) 05:30:53 ID: 9U4wudnNNc
ニコニコとの関わりで言えば
去年配信の処理システムを共同で開発したソシオネクストAOMediaプロモーターメンバーに入ってるね
6 ななしのよっしん
2019/06/06(木) 06:53:07 ID: rxy9SPoe8n
libaomよりdav1dのほうがいいよ。