The static function RTCRtpSender.getCapabilities()
returns an RTCRtpCapabilities
object describing the codecs and capabilities supported by the RTCRtpSender
.
You can, similarly, obtain the capabilities of RTCRtpReceiver
s by calling the static function RTCRtpReceiver.getCapabilities()
.
Syntax
let rtpCapabilities = RTCRtpSender.getCapabilities(kind);
Parameters
kind
- A
DOMString
indicating the type of media for which you wish to get the sender's capability to receive. All browsers support the primary media kinds:audio
andvideo
.
Return value
An RTCRtpCapabilities
object stating what capabilities the browser has for sending the specified media kind over an RTCPeerConnection
. If the browser doesn't have any support for the given media kind, the returned value is null
.
Description
As a static function, this is always called using the form:
capabilities = RTCRtpSender.getCapabilities("audio");
The returned set of capabilities is the most optimistic possible list. It is entirely possible that certain combinations of options may fail to work when you actually try to use them.
Calling RTCRtpSender.getCapabilities()
doesn't prime the browser in any way to handle media. Nothing is loaded, fetched, or otherwise prepared. It's simply a means of determining what might be usable before starting to try to access media.
Because the set of capabilities available tend to be stable for a length of time (people don't install and uninstall codecs and the like very often), the media capabilities can in whole or in part provide a cross-origin method for identifying a user. For that reason, in privacy-sensitive contexts, the browser may choose to obscure the capabilities; this might be done, for example, by leaving out rarely-used codec configurations.
Example
The function below returns a Boolean indicating whether or not the device supports sending H.264 video on an RTCRtpSender
.
Since RTCRtpSender.getCapabilities()
actually only indicates probable support, H.264 support might still fail even after getting a positive response from this function.
function canSendH264() { let capabilities = RTCRtpSender.getCapabilities("video"); capabilities.codecs.forEach((codec) => { if (codec.mimeType === "video/H264") { return true; } }); return false; }
Specifications
Specification | Status | Comment |
WebRTC 1.0: Real-time Communication Between BrowsersThe definition of 'RTCRtpSender.getCapabilities()' in that specification. | Candidate Recommendation |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
getCapabilities()
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
? |
IE
No support No |
Opera
Full support Yes |
Safari
? |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
? |
Opera Android
Full support Yes |
Safari iOS
? |
Samsung Internet Android
Full support Yes |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
RTCRtpSender.getCapabilities() static function by Mozilla Contributors is licensed under CC-BY-SA 2.5.