ChromeのWebRTCの実装でコーデックを変更する方法を検討してきましたが、方法がないようです。
ChromeのWebRTCpeer接続で使用されるデフォルトのコーデック(オーディオまたはビデオ)を変更するにはどうすればよいですか?
はい、Chromeがサポートしている限り、コーデックを好きなように変更できます。現在、オーディオに関しては、サポートされているコーデックはPCMA、PCMU、ISAC、OPUSのみです。 (デフォルト)ビデオの場合、VP8(FireFoxを搭載した一部のシステムではH264)があります。
これらのコーデックをデフォルトとして使用するには、ピア接続でローカルに設定してオファー/アンサーを送信する前に、SDPを変更する必要があります。デフォルトで強制的にChrome= OPUSの代わりにPCMAを送信するように強制しました。
例として:
次のようなデフォルトのオーディオSDPセクションがあるとします(括弧内のメモはsdpの一部ではありません)。
m=audio<media> 49353<port> RTP/SAVPF<proto> 111 103 104 0 8 106 105 13 126 <rtpformats>
c=IN<nettype> IP4<addrtype> 192.168.0.13<address>
a=rtcp:49353<port> IN<nettype> IP4<addresstype> privateIP<connection address>
a=candidate:1204296370 1 udp 2122260223 privateIP 49353 typ Host generation 0 <audioIceCandidate>
a=candidate:1204296370 2 udp 2122260223 privateIP 49353 typ Host generation 0
a=candidate:155969090 1 tcp 1518280447 privateIP 0 typ Host generation 0
a=candidate:155969090 2 tcp 1518280447 privateIP 0 typ Host generation 0
a=ice-ufrag:E7VFzFythTIOaQ6X <ice username>
a=ice-pwd:ZMHFqqXEA8JLjItZcRN4FZDJ <ice-password>
a=ice-options:google-ice <iceoptions>
a=fingerprint:sha-256<encryptType> 66:2D:43:3A:31:7B:46:56:50:D7:CC:75:80:79:5D:88:7D:5D:1B:0E:C7:E6:F9:C4:68:6D:51:7F:4B:32:97:A1<print>
a=setup:actpass <dtls setup mode>
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level <extention map>
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv <mediamode>
a=rtcp-mux <says rtcp mux>
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
PCMAのみを使用したい場合は、m=audio
次の行:m=audio 49353 RTP/SAVPF 8
この方法では、PCMAペイロードのみが考慮されます。次に、そのペイロードに対応しないすべてのrtpmap行を削除する必要があります。つまり、a=rtpmap:
ここで、次の文字は8ではありません。その変更されたsdpをローカルで設定してピアに送信する場合(そして、それらがサポートPCMAである場合...だけでネゴシエーションがPCMAを強制するため、デフォルトである必要はありません。それを提供する場合)、PCMAはOPUSではなくオーディオコーデックになります。
いくつかのサイド:
createOffer
関数とcreateAnswer
関数の成功コールバックを介して生成され、渡されたものですfmtp
がh264に必要です。プロファイルは重要であり、おそらくsprop-parameter-sets
)。