Tak, możesz zmienić kodek na dowolny, pod warunkiem, że Chrome go obsługuje. W tej chwili audio, jedynymi obsługiwanymi kodekami są PCMA, PCMU, ISAC i OPUS (domyślnie). Dla wideo masz VP8 (także H264 na niektórych systemach z FireFox).
Aby użyć dowolnego z tych kodeków jako domyślnego, należy zmodyfikować swoje SDP przed ustawieniem go lokalnie w swoim peerconnection i wysłaniu oferty/odpowiedzi. Testowałem pomyślnie, zmuszając Chrome domyślnie do wysyłania PCMA zamiast OPUS.
Jako przykład:
że masz swój punkt SDP domyślne audio, który wygląda następująco (noty są w nawiasach nie są częścią 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
Jeśli chciał TYLKO użyj PCMA, zmieniłbyś linię m=audio
na następującą: m=audio 49353 RTP/SAVPF 8
w ten sposób bierze się pod uwagę tylko ładunek PCMA. Następnie musisz usunąć wszystkie linie rtpmap, które nie odpowiadają temu ładunkowi, czyli dowolne a=rtpmap:
, gdzie następny znak NIE jest numerem 8. Jeśli ustawisz zmodyfikowany sdp lokalnie i wyślesz go do swojego peera (i jeśli POMAGAJĄ PCMA .. . nie muszą być dla nich domyślne, ponieważ negocjacje wymuszą na PCMA, jeśli tylko to zaoferujesz), wtedy PCMA będzie twoim kodekiem audio, a nie OPUS.
Para asides:
- SDP mówię to jeden generowane i przekazywane za pośrednictwem zwrotnego sukces
createOffer
i createAnswer
funkcji peerconnection
- Tego rodzaju pomysł zadziała za dodanie kodeki, które znasz, są obsługiwane przez systemy underlaying (H264, SPEEX, itp.). Po prostu pamiętaj o dodaniu ładunku, a odpowiednie odwzorowania i opcje (
fmtp
są potrzebne dla h264, ponieważ profile są ważne i prawdopodobnie sprop-parameter-sets
).
- Będzie to działać z każdym odpowiednio zakodowanym systemem WebRTC, np. Firefox, Opera itp. Nie tylko chrom.
Możliwy duplikat [Czy istnieje sposób wyboru kodeków w WebRTC PeerConnection?] (Http://stackoverflow.com/questions/21402990/is-there-a-way-to-choose-codecs-in- webrtc-peerconnection) – user