Я искал способ изменить кодек в реализации Chrome в WebRTC, но, похоже, это не так.Как я могу изменить кодек по умолчанию, используемый в WebRTC?
Как изменить используемый кодек по умолчанию (аудио или видео) в соединении WebRTCpeer в Chrome?
Я искал способ изменить кодек в реализации Chrome в WebRTC, но, похоже, это не так.Как я могу изменить кодек по умолчанию, используемый в WebRTC?
Как изменить используемый кодек по умолчанию (аудио или видео) в соединении WebRTCpeer в Chrome?
Да, вы можете изменить кодек на все, что захотите ... пока Chrome поддерживает его. Прямо сейчас, аудио-мудрый, единственными поддерживаемыми кодеками являются PCMA, PCMU, ISAC и OPUS (по умолчанию). Для видео у вас есть VP8 (также H264 на некоторых системах с FireFox).
Чтобы использовать любой из этих кодеков по умолчанию, вы должны изменить SDP, прежде чем устанавливать его локально в своем peerconnection и отправить свое предложение/ответ. Я успешно протестировал приложение Chrome для отправки PCMA вместо OPUS по умолчанию.
В качестве примера:
Say у вас есть раздел 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
функций PeerConnectionfmtp
необходим для h264, поскольку профили важны и, возможно, sprop-parameter-sets
).Привет, Benjamin Благодаря вашему совету, мне удалось изменить аудиокодек (Opus для PCMA). Однако, когда я пытался изменить видеокодек (до h.264), видео ничего не показывает. Поддерживает ли Chrome изменение видеокодека? – Tony
Хром не поддерживает H.264 в настоящее время, Firefox я считаю, что если базовая система делает (я видел, что firefox предлагает это как вариант в своих последних выпусках). –
@BenjaminTrent: Не могли бы вы поделиться основной документацией, как улучшить качество Opus или iSac? Где найти руководство по SDP, касающееся аудиокодека, пожалуйста? – YumYumYum
Возможный дубликат [Есть ли способ выбрать кодеки в WebRTC PeerConnection?] (Http://stackoverflow.com/questions/21402990/is-there-a-way-to-choose-codecs-in- webrtc-peerconnection) – user