######################### AV1 ######################### :最終更新日: 2021-04-05 WebRTC への対応状況 =================== 2021 年 4 月 13 日にリリースされる Chrome M90 にて AV1 に対応します。 RTP Payload Format For AV1 ========================== WebRTC で AV1 を利用するためには RTP Payload Format が定義されている必要があります。その仕様がオープンになっています。 `RTP Payload Format For AV1 `_ RTP の対応 ---------- 特に必要なさそうです。 RTP ヘッダー拡張への対応 ------------------------ H.264 や VPX 系ではどんなコーデックを使っているかどうかの判断は SDP レイヤー、または Payload の中身を見る必要がありましたが、 AV1 では RTP 拡張を利用する方向で進んでいるようです。 RTP ヘッダー拡張は RTP ヘッダーに存在しないものをあとで追加できる仕組みです。 AV1 の RTP ヘッダー拡張は 2 バイトヘッダーと呼ばれる仕組みを利用しています。AV1 を WebRTC で利用するにはまず 2 バイトヘッダーとの混在への対応が必要になります。 Chrome ではデフォルトで ``a=extmap-allow-mixed`` 有効になっています。 SDP への対応 ------------ 現時点では a=rtpmap で利用するコーデック名は ``AV1X`` となっていますが、これは今後 ``AV1`` となるようです。 また a=fmtp のパラメータに profile と level_idx が含まれていることが必須になるようです。 WebRTC で AV1 を利用する際の m= はおそらくこうなるだろうという SDP を書き出してみました。 :: m=video 9 UDP/TLS/RTP/SAVPF 120 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:Orx1 a=ice-pwd:7k939Q8Pm5YCHbiuWRBc6y+D a=ice-options:trickle a=fingerprint:sha-256 72:2C:4E:47:24:DD:15:25:5B:5D:AA:24:E7:05:53:3A:05:E0:D8:5D:5D:7F:B6:A0:AA:52:AB:99:D5:C3:EF:05 a=setup:actpass a=mid:1 a=extmap:14 urn:ietf:params:rtp-hdrext:toffset a=extmap:13 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:12 urn:3gpp:video-orientation a=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07 a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=sendonly a=rtcp-mux a=rtcp-rsize a=rtpmap:96 AV1/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=fmtp:96 profile=0; level_idx=0; a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:114 red/90000 a=rtpmap:115 rtx/90000 a=fmtp:115 apt=114 a=rtpmap:116 ulpfec/90000 a=extmap が AV1 のものが用意されるかどうかはまだ発表されていないため、記載していません。 資料 ==== - `a technial overview of the AV1 - YouTube `_ - Google のシニア AV1 エンジニアの方の発表動画です