2014-11-14 16 views
7

Tôi đã googling một cách để thay đổi codec trong việc triển khai WebRTC của Chrome, nhưng dường như không có cách nào.Làm cách nào để thay đổi Codec mặc định được sử dụng trong WebRTC?

Làm thế nào tôi có thể thay đổi các codec mặc định được sử dụng (âm thanh hoặc video) trong một kết nối WebRTCpeer trong Chrome?

+0

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

Trả lời

10

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 createOffercreateAnswer 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.
+0

Xin chào, Benjamin Nhờ lời khuyên của bạn, tôi đã quản lý để thay đổi codec âm thanh (Opus sang PCMA). Tuy nhiên, khi tôi cố gắng thay đổi codec video (thành h.264), video không hiển thị gì cả. Chrome có hỗ trợ thay đổi codec video không? – Tony

+2

Chrome không hỗ trợ H.264 ở tất cả hiện tại, Firefox tôi có tin rằng nếu hệ thống cơ bản không (tôi đã thấy firefox cung cấp nó như là một tùy chọn trong bản phát hành mới nhất của nó). –

+2

@BenjaminTrent: Bạn có thể chia sẻ tài liệu chính về cách cải thiện chất lượng Opus hoặc iSac không? Tìm hướng dẫn sử dụng SDP liên quan đến codec âm thanh ở đâu? – YumYumYum

Các vấn đề liên quan