web-dev-qa-db-ja.com

WebRTCで使用されるデフォルトのコーデックを変更するにはどうすればよいですか?

ChromeのWebRTCの実装でコーデックを変更する方法を検討してきましたが、方法がないようです。

ChromeのWebRTCpeer接続で使用されるデフォルトのコーデック(オーディオまたはビデオ)を変更するにはどうすればよいですか?

13
Tony

はい、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ではなくオーディオコーデックになります。

いくつかのサイド:

  • 私が話しているSDPは、ピア接続のcreateOffer関数とcreateAnswer関数の成功コールバックを介して生成され、渡されたものです
  • このタイプのアイデアは、基礎となるシステム(H264、SPEEXなど)でサポートされていることがわかっているADDINGコーデックで機能します。ペイロードを追加し、適切なマッピングとオプション(fmtpがh264に必要です。プロファイルは重要であり、おそらくsprop-parameter-sets)。
  • これは、適切にコーディングされたWebRTCシステム(Firefox、Operaなど)で機能します。Chromeだけでなく、.
13
Benjamin Trent