Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 1 | # FAQ |
| 2 | |
| 3 | ### What is WebRTC? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 4 | |
| 5 | WebRTC is an open framework for the web that enables Real Time Communications |
| 6 | in the browser. It includes the fundamental building blocks for high-quality |
| 7 | communications on the web, such as network, audio and video components used in |
| 8 | voice and video chat applications. |
| 9 | |
| 10 | These components, when implemented in a browser, can be accessed through a |
| 11 | JavaScript API, enabling developers to easily implement their own RTC web app. |
| 12 | |
| 13 | The WebRTC effort is being standardized on an API level at the W3C and at the |
| 14 | protocol level at the IETF. |
| 15 | |
| 16 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 17 | ### Why should I use WebRTC? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 18 | |
| 19 | We think you'll want to build your next video-chat style application using |
| 20 | WebRTC. Here's why: |
| 21 | |
| 22 | * A key factor in the success of the web is that its core technologies -- |
| 23 | such as HTML, HTTP, and TCP/IP -- are open and freely implementable. |
| 24 | Currently, there is no free, high-quality, complete solution available |
| 25 | that enables communication in the browser. WebRTC enables this. |
| 26 | |
| 27 | * Already integrated with best-of-breed voice and video engines that have |
| 28 | been deployed on millions of endpoints over the last 8+ years. Google does |
| 29 | not charge royalties for WebRTC. |
| 30 | |
| 31 | * Includes and abstracts key NAT and firewall traversal technology, using |
| 32 | STUN, ICE, TURN, RTP-over-TCP and support for proxies. |
| 33 | |
| 34 | * Builds on the strength of the web browser: WebRTC abstracts signaling by |
| 35 | offering a signaling state machine that maps directly to `PeerConnection`. |
| 36 | Web developers can therefore choose the protocol of choice for their usage |
| 37 | scenario (for example, but not limited to, SIP, XMPP/Jingle, et al.). |
| 38 | |
| 39 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 40 | ### What is the Opus audio codec? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 41 | |
| 42 | [Opus][opus-link] is a royalty-free audio codec defined by IETF |
| 43 | RFC 6176. It supports constant and variable bitrate encoding from 6 kbit/s to |
| 44 | 510 kbit/s, frame sizes from 2.5 ms to 60 ms, and various sampling rates from |
| 45 | 8 kHz (with 4 kHz bandwidth) to 48 kHz (with 20 kHz bandwidth, where the |
| 46 | entire hearing range of the human auditory system can be reproduced). |
| 47 | |
| 48 | [opus-link]: http://opus-codec.org/ |
| 49 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 50 | ### What is the iSAC audio codec? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 51 | |
| 52 | iSAC is a robust, bandwidth-adaptive, wideband and super-wideband voice codec |
| 53 | developed by Global IP Solutions, and is used in many Voice over IP (VoIP) and |
| 54 | streaming audio applications. iSAC is used by industry leaders in hundreds of |
| 55 | millions of VoIP endpoints. This codec is included as part of the WebRTC |
| 56 | project. |
| 57 | |
| 58 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 59 | ### What is the iLBC audio codec? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 60 | |
| 61 | iLBC is a free narrowband voice codec that was developed by Global IP |
| 62 | Solutions, and is used in many Voice over IP (VoIP) and streaming audio |
| 63 | applications. In 2004, the final IETF RFC versions of the iLBC codec |
| 64 | specification and the iLBC RTP Profile draft became available. This codec is |
| 65 | included as part of the WebRTC project. |
| 66 | |
| 67 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 68 | ### What is the VP8 video codec? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 69 | |
| 70 | VP8 is a highly-efficient video compression technology developed by the WebM Project. It is the video codec included with WebRTC. |
| 71 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 72 | ### What is the VP9 video codec? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 73 | |
| 74 | Similar to VP8, VP9 is also from the WebM Project. Its a next-generation open video codec. From Chrome 48 on desktop and Android, VP9 will be an optional video codec for video calls. More details in [Google Developers][vp9-link]. |
| 75 | |
| 76 | [vp9-link]: https://developers.google.com/web/updates/2016/01/vp9-webrtc/ |
| 77 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 78 | ### What other components are included in the WebRTC package? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 79 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 80 | #### Audio |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 81 | |
| 82 | WebRTC offers a complete stack for voice communications. It includes not only |
| 83 | the necessary codecs, but other components necessary to great user |
| 84 | experiences. This includes software-based acoustic echo cancellation (AEC), |
| 85 | automatic gain control (AGC), noise reduction, noise suppression, and |
| 86 | hardware access and control across multiple platforms. |
| 87 | |
| 88 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 89 | #### Video |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 90 | |
| 91 | The WebRTC project builds on the VP8 codec, introduced in 2010 as part of the |
| 92 | [WebM Project][webm-link]. It includes components to conceal |
| 93 | packet loss and clean up noisy images, as well as capture and playback |
| 94 | capabilities across multiple platforms. |
| 95 | |
| 96 | [webm-link]: http://www.webmproject.org/ |
| 97 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 98 | #### Network |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 99 | |
| 100 | Dynamic jitter buffers and error concealment techniques are included for audio |
| 101 | and video, which help mitigate the effects of packet loss and unreliable |
| 102 | networks. Also included are components for establishing a peer-to-peer |
| 103 | connection using ICE / STUN / Turn / RTP-over-TCP and support for proxies. |
| 104 | |
| 105 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 106 | ### How do I access the WebRTC code? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 107 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 108 | Go to [https://webrtc.googlesource.com/src][webrtc-repo-link]. |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 109 | |
| 110 | [webrtc-repo-link]: https://webrtc.googlesource.com/src |
| 111 | |
| 112 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 113 | ### How can I test the quality of WebRTC components? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 114 | |
| 115 | We have put sample applications [here][examples-link]. |
| 116 | |
| 117 | [examples-link]: https://webrtc.googlesource.com/src/+/refs/heads/master/docs/native-code/development/index.md#example-applications |
| 118 | |
| 119 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 120 | ### Are WebRTC components subject to change? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 121 | |
| 122 | WebRTC is based on a API that is still under development through efforts at |
| 123 | WHATWG, W3C and IETF. We hope to get to a stable API once a few browser |
| 124 | vendors have implementations ready for testing. Once the API is stable, our |
| 125 | goal will be to offer backwards compatibility and interoperability. The WebRTC |
| 126 | API layer will be our main focus for stability and interoperability. The |
| 127 | components under it may be modified to improve quality, performance and |
| 128 | feature set. |
| 129 | |
| 130 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 131 | ### WebRTC components are open-source. How do I get the source and contribute code? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 132 | |
| 133 | Please see [Getting Started][getting-started-link] and |
| 134 | [Contributing bug fixes][contributing-link] for more information. |
| 135 | |
| 136 | [getting-started-link]: https://webrtc.googlesource.com/src/+/refs/heads/master/docs/native-code/development/index.md |
| 137 | [contributing-link]: https://webrtc.org/support/contributing |
| 138 | |
| 139 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 140 | ### To be a Contributor, do I need to sign any agreements? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 141 | |
| 142 | Yes, each Contributor must sign and return the |
| 143 | [Contributor License Agreement][cla-link] |
| 144 | |
| 145 | [cla-link]: https://developers.google.com/open-source/cla/individual?hl=en |
| 146 | |
| 147 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 148 | ### Do I have to be a programmer to use WebRTC? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 149 | |
| 150 | Yes, to build WebRTC support into a software application or contribute |
| 151 | improvements, programming skills are required. However, usage of the |
| 152 | JavaScript APIs that call WebRTC in the browsers will only require typical web |
| 153 | development skills. |
| 154 | |
| 155 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 156 | ### Is the WebRTC project owned by Google or is it independent? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 157 | |
| 158 | WebRTC is an open-source project supported by Google, Mozilla and Opera. The |
| 159 | API and underlying protocols are being developed jointly at the W3C and IETF. |
| 160 | |
| 161 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 162 | ### Are the WebRTC components from Google's acquisition of Global IP Solutions? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 163 | |
| 164 | Yes. Some components, such as VoiceEngine, VideoEngine, NetEQ, AEC, et al. all |
| 165 | stem from the GIPS acquisition. |
| 166 | |
| 167 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 168 | ### What codecs are supported in WebRTC? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 169 | |
| 170 | The currently supported voice codecs are G.711, G.722, iLBC, and iSAC, and VP8 |
| 171 | is the supported video codec. The list of supported codecs may change in the |
| 172 | future. |
| 173 | |
| 174 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 175 | ### Please explain how WebRTC is free of charge? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 176 | |
| 177 | Some software frameworks, voice and video codecs require end-users, |
| 178 | distributors and manufacturers to pay patent royalties to use the intellectual |
| 179 | property within the software technology and/or codec. Google is not charging |
| 180 | royalties for WebRTC and its components including the codecs it supports (VP8 |
| 181 | for video and iSAC and iLBC for audio). For more information, see the [License |
| 182 | page][license-link]. |
| 183 | |
| 184 | [license-link]: https://webrtc.googlesource.com/src/+/refs/heads/master/docs/license/index.md |
| 185 | |
| 186 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 187 | ### What does this license let me do? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 188 | |
| 189 | Like most BSD licenses, this license allows you to use the WebRTC code with a |
| 190 | minimum of restrictions on your use. You can use the code in proprietary |
| 191 | software as well as open source software. |
| 192 | |
| 193 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 194 | ### Do I need to release the source if I make changes? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 195 | |
| 196 | No, the license does not require you to release source if you make changes. |
| 197 | However, we would love to see any changes you make and possibly incorporate |
| 198 | them, so if you want to participate please visit the |
| 199 | [code review page][code-review-link] and submit some patches. |
| 200 | |
| 201 | [code-review-link]: https://webrtc-review.googlesource.com/ |
| 202 | |
| 203 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 204 | ### Why is there a separate patent grant? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 205 | |
| 206 | In order to decouple patents from copyright, thus preserving the pure BSD |
| 207 | nature of the copyright license, the license and the patent grant are |
| 208 | separate. This means we are using a standard (BSD) open source copyright |
| 209 | license, and the patent grant can exist on its own. This makes WebRTC |
| 210 | compatible with all major license scenarios. |
| 211 | |
| 212 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 213 | ### What if someone gets the code from Google and gives it to me without changes. Do I have a patent grant from Google? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 214 | |
| 215 | Yes, you still have the right to redistribute and you still have a patent |
| 216 | license for Google's patents that cover the code that Google released. |
| 217 | |
| 218 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 219 | ### What if someone makes a change to the code and gives it to me. Do I have a patent license from Google for that change? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 220 | |
| 221 | You still have the right to redistribute but no patent license for the changes |
| 222 | (if there are any patents covering it). We can't give patent licenses for |
| 223 | changes people make after we distribute the code, as we have no way to predict |
| 224 | what those changes will be. Other common licenses take the same approach, |
| 225 | including the Apache license. |
| 226 | |
| 227 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 228 | ### What if Google receives or buys a patent that covers the code I receive sometime after I receive the code. Do I have a patent grant for that patent? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 229 | |
| 230 | Yes, you still have the right to redistribute and you still have a patent |
| 231 | license for Google's patents that cover the code that Google released. |
| 232 | |
| 233 | |
Mirko Bonadei | d881983 | 2020-02-20 14:21:32 | [diff] [blame] | 234 | ### What if my competitor uses the code and brings patent litigation against me for something unrelated to the code. Does he or she still have a patent license? |
Mirko Bonadei | 97ba4be | 2020-02-20 10:53:45 | [diff] [blame] | 235 | |
| 236 | Yes, he/she still has the right to redistribute and he/she still has a patent |
| 237 | license for Google's patents that cover the code that Google released. |