WebRTC と AV1 の現状
去年の Chrome 開発者イベントで 2019 年の後半には WebRTC に AV1 が来るという発表がありました。たださすがに 2019 年には間に合わなさそうですが、libwebrtc には AV1 に関するコミットがここ最近入り始めていたりします。
WebRTC で AV1 が入るとビットレートが抑えられるため、大きな変化が起きます。ただ変換処理が重いという話もでているためどこまで現実的かはわかりません。
とはいえ、海外のイベントなどで発表されている資料を見たりすると 720p あたりまではかなり現実的に動作するレベルまでは来ているようです。
libwebrtc における AV1
commit 499b3b6c7edb95f48e74e0520c48aeae2217ba54
Author: Danil Chapovalov <danilchap@webrtc.org>
AuthorDate: Thu Nov 28 17:38:35 2019 +0100
Commit: Commit Bot <commit-bot@chromium.org>
CommitDate: Fri Nov 29 10:14:20 2019 +0000In RtpDepacketizerAV1 use aggregation header to detect key framesinstead of guessing based on presence of the sequence header OBU.---commit 0682ca9a838a4dafe246a2522e8462b193cb3d9f
Author: Danil Chapovalov <danilchap@webrtc.org>
AuthorDate: Thu Nov 28 16:50:02 2019 +0100
Commit: Commit Bot <commit-bot@chromium.org>
CommitDate: Thu Nov 28 18:01:10 2019 +0000Use AV1 packetizer/depacketizer for AV1 bitstreams---commit 096a46f38f6735716191786775b5de577aca4605
Author: Danil Chapovalov <danilchap@webrtc.org>
AuthorDate: Thu Nov 28 13:42:50 2019 +0100
Commit: Commit Bot <commit-bot@chromium.org>
CommitDate: Thu Nov 28 14:39:02 2019 +0000Implement AV1 RtpPacketizer class---commit dc36829db08673eebd3c829708ff3c4cb566519c
Author: Danil Chapovalov <danilchap@webrtc.org>
AuthorDate: Tue Nov 26 14:48:20 2019 +0100
Commit: Commit Bot <commit-bot@chromium.org>
CommitDate: Wed Nov 27 10:18:45 2019 +0000Add VideoCodecType::kVideoCodecAV1 value
まだ基本的な部分のコードですが開発は淡々と進められていく用に思えます。
WebRTC SFU における AV1
AV1 を WebRTC SFU で使うには RTP ヘッダー拡張への対応が必要になります。また Simulcast と SVC の両方が仕様では想定されています。時雨堂ではパテントの都合上、 Simulcast のみを想定しています。
仕様は日々変わっていますが基本的には RTP 拡張で AV1 かどうかを判断できる仕組みが追加されています。
この RTP 拡張は two-byte の拡張のため、 one-byte のみしか対応していない場合は対応が必要になります。
ちなみに 時雨堂の WebRTC SFU Sora は “a=extmap-allow-mixed” に対応しています。また SDP での RTP 拡張 URL の払い出しや、SDP AV1 への対応も準備万端です。 AV1 が来たらすぐに対応できるように準備を進めています。
今後
まずはブラウザにフィールドトライアルとして組み込まれるまでは待ちの状態になると思います。
その際に検証をしていくための準備をしていくというフェーズになるかと思います。
今前は「いつか来てほしいな」でしたが「そのうち来る」にフェーズが変わったのはとても大きいと思います。今後は AV1 のハードウェアエンコーダ/デコーダ も出てくるでしょう。
実際に AV1 のハードウェアデコーダを積んだチップも出てきているようです。
2160p60 H.264 & HEVC & AV1 (Decode)
2020 年は AV1 が WebRTC で使える年になりそうです。