Có, bạn có thể thay đổi các codec được bất cứ điều gì bạn muốn ... miễn là Chrome hỗ trợ nó. Ngay bây giờ, âm thanh khôn ngoan, các codec được hỗ trợ duy nhất là PCMA, PCMU, ISAC và OPUS (mặc định). Đối với Video bạn có VP8 (cũng H264 trên một số hệ thống với FireFox).
Để sử dụng bất kỳ các codec như mặc định, bạn phải sửa đổi SDP của bạn trước khi cài đặt nó tại địa phương trong PeerConnection của bạn và gửi lời đề nghị của bạn/câu trả lời. Tôi đã thử nghiệm thành công buộc Chrome gửi PCMA thay vì OPUS theo mặc định.
Như một ví dụ:
Giả sử bạn có phần SDP âm thanh mặc định của bạn trông giống như sau (thuyết minh này là trong ngoặc là không phải là một phần của 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
Nếu bạn muốn CHỈ sử dụng PCMA, bạn sẽ thay đổi dòng m=audio
thành các mục sau: m=audio 49353 RTP/SAVPF 8
theo cách này chỉ có trọng tải PCMA được xem xét. Sau đó, bạn cần phải loại bỏ tất cả các dòng rtpmap không tương ứng với tải trọng đó, tức là bất kỳ số a=rtpmap:
nào trong đó ký tự tiếp theo KHÔNG phải là 8. Nếu bạn đặt sdp đã sửa đổi cục bộ và gửi cho peer (và nếu chúng H SUP TRỢ PCMA .. .does không phải là mặc định cho chúng như là đàm phán sẽ buộc PCMA nếu bạn chỉ cung cấp nó), sau đó PCMA sẽ được codec âm thanh của bạn và không OPUS.
Couple của asides:
- SDP tôi đang nói về là một trong những tạo ra và đi qua gọi lại thành công của
createOffer
và createAnswer
chức năng của PeerConnection
- Loại ý tưởng này sẽ làm việc cho THÊM các codec mà bạn biết được hỗ trợ bởi các hệ thống lót (H264, SPEEX, v.v.). Chỉ cần đảm bảo thêm trọng tải và các ánh xạ và tùy chọn thích hợp (
fmtp
là cần thiết cho h264 vì các cấu hình quan trọng và có thể là sprop-parameter-sets
).
- Điều này sẽ hoạt động với bất kỳ hệ thống WebRTC được mã hóa thích hợp nào, tức là Firefox, Opera, v.v. Không chỉ chrome.
Nguồn
2014-11-14 14:36:54
Có thể trùng lặp của [Có cách nào để chọn codec trong WebRTC PeerConnection không?] (Http://stackoverflow.com/questions/21402990/is-there-a-way-to-choose-codecs-in- webrtc-peerconnection) – user