Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
I.
INTRODUCTION
stopper for the massive adoption of such services and for the
emergence of a whole new industry around Internet real-time
communication.
In this scenario, there is an increasing effort for the
creation of standardized technologies and services suitable
for defeating fragmentation and for enabling and effective
convergence
of
desktop
WWW
browsers
and
mobile/smartphone platforms. One of the most relevant
initiatives in this area is WebRTC [1]. WebRTC belongs to
the HTML5 ecosystem and is aimed at providing Real Time
multimedia Communications (RTC) on the WWW. It has
awakened significant interest among developers (see
http://www.webrtc.org). In opposition to other previous
proprietary WWW multimedia technologies such as Flash or
Silverlight, WebRTC has been conceived to be open in a
wide sense, both by basing on open standards and by
providing open source software implementations
WebRTC standards are still under development and they
will require some additional time to consolidate, however,
there are a number of ingredients that clearly WebRTC will
be incorporating in the near future. First, it will provide
interoperable multimedia communications through wellestablished standardized protocols, codecs and formats.
Second, it will enable and effective convergence among
desktop WWW platforms and Smartphones. This
convergence shall take place through a double mechanism.
The first is based on the fact that all relevant Smartphone
platforms are adhering to HTML5 and, hence, their WWW
browsers will come with built-in WebRTC capabilities when
the standard consolidates. Second, because the WebRTC
stack is being open sourced with really open licenses, which
makes simple and attractive for any developer or vendor to
incorporate WebRTC capabilities on top of the native APIs
of mobile platforms.
Given this, WebRTC is an opportunity for the creation of
a truly open and interoperable technology, which could
catalyze the emergence of a new generation of novel and
non-fragmented social communication services. However,
for this to happen, the WebRTC ecosystem needs to evolve
further and provide more than pure peer-to-peer video
conferencing, as it does now. In this direction, current efforts
on WebRTC are concentrated on building the client side
capabilities. However, at the server side, only minor
contributions have occurred. Nevertheless, a state-of-the-art
g'
lin
g'
WEBRTC TECHNOLOGIES
Applica2on'
Provider'
lin
III.
B. MediaStream
The MediaStream represents the media plane of the
WebRTC protocol stack and comes with two flavors: local
and remote. Local MediaStreams are used as a handle for
managing the audio and video captured locally (i.e. through
the browser of the local peer) in a webcam or microphone. A
local MediaStream can be rendered through an HTML5
standard <video> tag.
In the same way, a remote MediaStream may carry video
and audio channels and can be rendered using the tag
<video>. However, in this case the media does not come
from the local camera or microphone, but from the remote
peer at the other end of the communication. From a protocol
perspective, the stream traverses the network using the
formats and ICE negotiated candidates. To secure the
communication, SRTP is used, being DTLS one of the
possible
key
exchange
mechanisms.
na
Sig
A. PeerConnection
PeerConnection is the WebRTC component that handles
communication of streaming data between peers. The
capabilities of this component are exposed through a
JavaScript object to developers. This object abstracts a large
number of tedious details and complexities associated to the
inner workings of video and audio including packet loss
concealment, echo cancellation, bandwidth adaptation,
automatic gain control, ICE control for NAT traversal, etc.
Sig
na
JavaScript'
Applica2on'
JavaScript'
Applica2on'
WebRTC'API'
Browser'
WebRTC'API'
Media'+'
ICE'signaling'
Browser'
IV.
Input#
Element#
Output#
Element#
SIP(Servlet(
GStreamer(media(pipeline(
Kurento(Media(Server(
Other#Signaling#
SOAP#
HTTP(Servelet(
Other(JEE((
Server(side(signaling(plane(
Thri6#
interface#
Media(message(bus(
REST#
Media((
Repository(
RAW#HTTP#
Flash(Video((
Server(
SIP#
media#stream#
media#stream#
IP#Network#(remote#clients)#
Media(
proxies(
Media(Session((
Processing'media'elements'
WebRTC'
Bin'
Kurento(Signaling(Server((JBosss)(
RTP/RTCP'stream'
SRTP'
RTP/RTCP'stream'
ICE'
WebRTC'
media'streams'
from/to'network'
Figure 3. Architecture of the Gstreamer webrtcbin component. This
media element implements the procol stack required for receving and
delivering WebRTC multimedia streams. Thanks to it, Kurento Media
Server is capable of combining the GStreamer pipeline architecture with
the WebRTC capabilities.
REFERENCES
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
WWW'
Applica<on'
WebRTC'
stack'
Client''
Signaling''
Plane'
Kurento''
Signaling'Server'
Kurento''
Media'Server'
WebRTC''
Bin'
createOffer()
gotOffer(offer)
setLocalDescription
(offer)
ICE candidates
invite(Client SDP)
INVITE (Client SDP)
Application
logic
accepts call
process(Client SDP)
create(Client SDP)
ICE candidates
SRTP sending Key
getSDPAnswer()
OK(Server SDK)
onOk(Server SDP)
setRemoteDescription
(Server SDP)
addIceCandidate
(Server candidates)
OK(Server SDP)
ACK
SRTP'media'(audio/video)'streams'
gotRemoteStream(stream)
gotRemoteStream
callSuccessful
render
streams
WebRTC'Client'
Kurento'Server'Infrastructure'
Figure 4. Sequence diagram showing the different components, messages and interactions involved in a WebRTC application using the Kurento
infrastructure and the webrtcbin GStreamer module.