AV1

最終更新日

2019-05-15

WebRTC への対応状況

Building Modern Web Media Experiences: Picture-in-Picture and AV1 (Chrome Dev Summit 2018) この動画の AV1 Rollout という部分で WebRTC には 2019 の後半で対応というのが発表されています。

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 バイトヘッダーと呼ばれる仕組みを利用しています。Chrome や Safari は 1 バイトと 2 バイトのヘッダーを混在させる仕組みに対応していますが、 Firefox はまだ対応していません。

AV1 を WebRTC で利用するにはまず 2 バイトヘッダーとの混在への対応が必要になります。

SDP Signaling for Support of Mixed One-Byte and Two-Byte Header Extensions の a=extmap-allow-mixed を実装する必要があります。

Chrome ではすでに RTCConfiguration.offerExtmapAllowMixed - Chrome Platform Status にて対応済みですので利用可能です。

RTP 拡張を利用するためには SDP で a=extmap が必要になるのですが、 AV1 に関してはまだ公開されていません。

SDP への対応

a=rtpmap で利用するコーデック名は 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 のものが用意されるかどうかはまだ発表されていないため、記載していません。

資料