SlideShare a Scribd company logo
1 of 31
Creating rich WebRTC Applications
with Kurento
Luis Lopez
lulop@kurento.org
Who I am
http://www.kurento.org - lulop@kurento.org
2
Associate Professor
Escuela Técnica Superior de Ingenieros de Telecomunicación
Universidad Rey Juan Carlos (south Madrid)
Researcher in the area of RTC
• http://www.nubomedia.eu
• http://www.fiware.org
FOSS enthusiast
• Kurento project lead: http://www.kurento.org
• NUBOMEDIA Community lead: http://www.nubomedia.eu
Real-Time media Communications
http://www.kurento.org - lulop@kurento.org
3
Capture Encode Cipher Transport Transport Decipher Decode RenderNetwork
The media plane
The signaling plane
I wan to call you, do you accept?
Yes, do it in this way
WebRTC to the rescue.
Before WebRTC
First wave of
WebRTC technologies
Begin End
• APIs
• Standards
• FOSS
Development
experience
when working with
real-time media
Common WebRTC application (p2p communications)
WebRTC video stream
http://www.kurento.org - lulop@kurento.org
4
WebRTC infrastructures
http://www.kurento.org - lulop@kurento.org
5
Peer-to-Peer WebRTC Application (without media infrastructure)
WebRTC video stream
WebRTC Application based on media infrastructure
media infrastructure
WWW VS (Web)RTC applications
http://www.kurento.org - lulop@kurento.org
6
Control
Multimedia
Application logic
(developers’ code)
Multimedia Capabilities
Recording
Transcoding
Routing
Mixing
Analyzing
Etc.
Media
Traffic
RTC Media APIs
Multimedia Clients
Events
Application Signaling
Control
WWW
Application logic
(developers’ code)
Database Capabilities
Data storage
Data recovery
Data querying
Data processing
Etc.
DD.BB. API
WWW Clients
Events
Application Signaling
http://www.kurento.org - lulop@kurento.org
7
http://www.kurento.org - lulop@kurento.org
8
Control
Multimedia
Application logic
(developers’ code)
Multimedia Capabilities
Recording
Transcoding
Routing
Mixing
Analyzing
Etc.
RTC Media APIs
Events
Kurento: a WebRTC infrastructure an
its APIs
http://www.kurento.org - lulop@kurento.org
9
Control
Multimedia
Application logic
(developers’ code)
Recording
Transcoding
Routing
Mixing
Analyzing
Adapting
Media
Traffic
RTC Media APIs
Multimedia Clients
Events
Application Signaling
Computer
vision
Augmented
reality
Blending
Etc.
Multimedia Capabilities
Kurento Media Server
(KMS)
Kurento Client API
Kurento Room API
Kurento Tree API
Cooking Kurento
http://www.kurento.org -
lulop@kurento.org
10
10
The Kurento FOSS Community
http://www.kurento.org - lulop@kurento.org
11
Community support WebRTC worldwide reference
International awards More than 300 companies
Very active mailing list
First result in Google
The Kurento FOSS project
http://www.kurento.org - lulop@kurento.org
12
• http://www.kurento.org
– Main web site
• https://www.twitter.com/kurentoms
– Main social channel
• https://groups.google.com/forum/#!forum/kurento
– Main mailing list
• https://github.com/kurento
– Main repository
• https://www.youtube.com/channel/UCFtGhWYqahVlzMgGNtEmKug
– Kurento Youtube channel
Developing with KMS:
The Kurento Client API
http://www.kurento.org - lulop@kurento.org
13
SinkSRC
Sink
SRC
SRCSink
Sink
Media Element
• Provides a specific media
functionality
› Send/receive media
› Process media
› Transform media
• Exchange media through
› Sources
› Sinks
Media pipeline
• Chain of media elements
implementing the desired media
logic.
• The Media API provides the
capability of creating media
pipelines by joining media
elements of the toolbox
Media Element
Sink
SRC
A modular API
• Modular in the sense of modularity*
– Isolation
• Internal states of a module don’t affect the rest
– Abstracion
• Internal states are hidden behind an interface
– Composability
• Interface must enable module recombination and assembly
– Reusability
• If a module has it, you can use it
– Extensibility
• If a module does not have it, you can add it.
http://www.kurento.org - lulop@kurento.org
14
* Baldwin, Carliss Young, and Kim B. Clark. Design rules: The power of modularity. Vol. 1. MIT press, 2000
The paradigm of modularity
http://www.kurento.org - lulop@kurento.org
15
The Kurento Client API in one word
http://www.kurento.org - lulop@kurento.org
16
sourceElement.connect(sinkElement)
connect
http://www.kurento.org - lulop@kurento.org
17
Kurento hello world
//MediaPipeline is a holder of media elements
MediaPipeline pipeline = kurento.createMediaPipeline();
//Create your media elements
WebRtcEndpoint webRtcEndpoint =
new WebRtcEndpoint.Builder(pipeline).build();
//Connect your media elements
webRtcEndpoint.connect(webRtcEndpoint);
http://www.kurento.org - lulop@kurento.org
18
Control
Multimedia
Application logic
(developers’ code)
Recording
Transcoding
Routing
Mixing
Analyzing
Adapting
Kurento Media APIs
Multimedia Clients
Events
Application Signaling
Computer
vision
Augmented
reality
Blending
Etc.
Multimedia Capabilities
//Where to render the local and remote streams
var options = {
localVideo : videoInput,
remoteVideo : videoOutput,
onicecandidate : onIceCandidate }
//Start media capture and communications
webRtcPeer =
new kurentoUtils.WebRtcPeer.WebRtcPeerSendrecv(
options,
function(error) {
if (error) return console.error(error);
webRtcPeer.generateOffer(onOffer);
});
Application Server Code (Java)
Client Server Code
Application source for Spring (Java EE)
Application source for Node.js (JavaScript)
Recording
http://www.kurento.org - lulop@kurento.org
SinkSRC
Sink
//MediaPipeline is a holder of media elements
MediaPipeline pipeline = kurento.createMediaPipeline();
//Create your media elements
WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build();
RecorderEndpoint recorderEndpoint = new RecorderEndpoint.Builder(pipeline).build(
“file:///myfolder/myfile.mp4”);
//Connect your media elements
webRtcEndpoint.connect(webRtcEndpoint);
webRtcEndpoint.connect(recorderEndpoint);
19
Application source for Spring (Java EE)
Application source for Node.js (JavaScript)
Playing
http://www.kurento.org - lulop@kurento.org
20
SinkSRC
SRC
//MediaPipeline is a holder of media elements
MediaPipeline pipeline = kurento.createMediaPipeline();
//Create your media elements
WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build();
PlayerEndpoint playerEndpoint = new PlayerEndpoint.Buildr(pipeline).build(
“file:///myfolder/myfile.mp4”); //RSTP and HTTP URIs also supported
//Connect your media elements
playerEndpoint.connect(webRtcEndpoint);
Application source for Spring (Java EE)
Application source for Node.js (JavaScript)
Interoperating
http://www.kurento.org - lulop@kurento.org
21
Media Pipeline
WebRTC audio
streaming
SinkSRC
SRCSink
Media Pipeline
SinkSRC
SRCSink
WebRTC video
streaming
RTP audio
streaming
RTP video
streaming
Transparent transcoding!!
Some Media processing modules
• Augmented reality
– MarkerArModule
– MarkerlessArModule
• Computer vision
– FaceDetector
– NoseDetector
– EyeDetector
– CrowdDetector
– PointerDetector
– MotionDetector
– VirtualFence
– Etc.
http://www.kurento.org - lulop@kurento.org
22
Sink
SRC
Sink
SRC
Sink
SRC
Sink
SRC
Sink
SRC
Using media processing modules
http://www.kurento.org - lulop@kurento.org
23
SinkSRC
Sink
SRC
CrowdEvents
SRC
Sink
SRC
CrowdDetector
RtspPlayer
SinkSRC
See demo
See demo
Implementing group communications:
just connect
http://www.kurento.org - lulop@kurento.org
24
Media Pipeline
WebRTC
streaming
SinkSRC
WebRTC
streaming SRCSinkSRCSink
WebRTC
streaming
WebRtcEndpoint 1
WebRtcEndpoint 3
WebRtcEndpoint 2
SRCSink
WebRTC
streaming
WebRtcEndpoint 4
User 1 User 2
User 3
User 4
Group communications: RTP
topologies
http://www.kurento.org - lulop@kurento.org
25
SinkSRC
SRC Sink
SinkSRC
SRCSink
• Media Mixing
Mixer
– Composite
• Media Switching
Mixer
– Connect primitive
– Natural topology
• SFU
– WebRtcSfu
• Simulcast
Creating your own modules
http://www.kurento.org - lulop@kurento.org
26
Kurento
IDL Compiler
JSON
Module IDL
Description
Java Java-
Script
cpphpp
Media API code Toolchain
Auto-generated code
Module
Implementation
cmake
Interface
Developer
(1)
(2)
(3)
Going up the API stack: the room API
http://www.kurento.org - lulop@kurento.org
27
createRoom
deleteRoom
joinRoom
leaveRoom
publisMedia
unpublishMedia
onParticipantJoined
onParticipantLeft
onMediaPublished
onMediaUnpublished
onMessage
See demo
Going up the API stack: the tree API
http://www.kurento.org - lulop@kurento.org
28
createTree
deleteTree
joinAsPresenter
joinAsViewer
leave
What’s next
http://www.kurento.org - lulop@kurento.org
29
Where to start
http://www.kurento.org - lulop@kurento.org
30
• http://www.kurento.org/documentation
– Installation and administration guide
– Java tutorials for Spring and Java EE developers
– JavaScript tutorials for Node.js developers
– JSON-RPC protocol documentation
• https://github.com/kurento
– Main repository
Thanks
http://www.kurento.org - lulop@kurento.org
31
Luis Lopez
lulop@kurento.org

More Related Content

What's hot

Kurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampKurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampIvan Gracia
 
Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.Luis Lopez
 
Recording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streamsRecording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streamsLuis Lopez
 
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...Luis Lopez
 
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...Luis Lopez
 
kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1Luis Lopez
 
Nubomedia IETF96 hackathon - The platform
Nubomedia IETF96 hackathon - The platformNubomedia IETF96 hackathon - The platform
Nubomedia IETF96 hackathon - The platformIvan Gracia
 
Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...
Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...
Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...Luis Lopez
 
NUBOMEDIA: an Elastic PaaS Enabling the Convergence of Real-Time and Big Data...
NUBOMEDIA: an Elastic PaaS Enabling the Convergence of Real-Time and Big Data...NUBOMEDIA: an Elastic PaaS Enabling the Convergence of Real-Time and Big Data...
NUBOMEDIA: an Elastic PaaS Enabling the Convergence of Real-Time and Big Data...Boni García
 
WebRTC/Kurento/NUBOMEDIA Hackathon at IETF’96
WebRTC/Kurento/NUBOMEDIA Hackathon at IETF’96WebRTC/Kurento/NUBOMEDIA Hackathon at IETF’96
WebRTC/Kurento/NUBOMEDIA Hackathon at IETF’96Boni García
 
Introduction To Webrtc
Introduction To WebrtcIntroduction To Webrtc
Introduction To WebrtcKnoldus Inc.
 
WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)Chad Hart
 
WebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco StrategyWebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco StrategyJose de Castro
 
Media processing with serverless architecture
Media processing with serverless architectureMedia processing with serverless architecture
Media processing with serverless architectureKensaku Komatsu
 
The future of WebRTC - Sept 2021
The future of WebRTC - Sept 2021The future of WebRTC - Sept 2021
The future of WebRTC - Sept 2021Arnaud BUDKIEWICZ
 

What's hot (20)

Kurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampKurento - FI-WARE Bootcamp
Kurento - FI-WARE Bootcamp
 
Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.
 
Recording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streamsRecording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streams
 
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
 
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...
 
kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1
 
Nubomedia IETF96 hackathon - The platform
Nubomedia IETF96 hackathon - The platformNubomedia IETF96 hackathon - The platform
Nubomedia IETF96 hackathon - The platform
 
Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...
Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...
Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...
 
Kurento FIWARE
Kurento FIWAREKurento FIWARE
Kurento FIWARE
 
Kurento cpmx
Kurento cpmxKurento cpmx
Kurento cpmx
 
NUBOMEDIA: an Elastic PaaS Enabling the Convergence of Real-Time and Big Data...
NUBOMEDIA: an Elastic PaaS Enabling the Convergence of Real-Time and Big Data...NUBOMEDIA: an Elastic PaaS Enabling the Convergence of Real-Time and Big Data...
NUBOMEDIA: an Elastic PaaS Enabling the Convergence of Real-Time and Big Data...
 
WebRTC/Kurento/NUBOMEDIA Hackathon at IETF’96
WebRTC/Kurento/NUBOMEDIA Hackathon at IETF’96WebRTC/Kurento/NUBOMEDIA Hackathon at IETF’96
WebRTC/Kurento/NUBOMEDIA Hackathon at IETF’96
 
WebRTC
WebRTCWebRTC
WebRTC
 
Introduction To Webrtc
Introduction To WebrtcIntroduction To Webrtc
Introduction To Webrtc
 
WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)
 
WebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco StrategyWebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco Strategy
 
Media processing with serverless architecture
Media processing with serverless architectureMedia processing with serverless architecture
Media processing with serverless architecture
 
WebRTC standards update (Jul 2014)
WebRTC standards update (Jul 2014)WebRTC standards update (Jul 2014)
WebRTC standards update (Jul 2014)
 
DevCon 5 (December 2013) - WebRTC & WebSockets
DevCon 5 (December 2013) - WebRTC & WebSocketsDevCon 5 (December 2013) - WebRTC & WebSockets
DevCon 5 (December 2013) - WebRTC & WebSockets
 
The future of WebRTC - Sept 2021
The future of WebRTC - Sept 2021The future of WebRTC - Sept 2021
The future of WebRTC - Sept 2021
 

Similar to FOSDEM 2016 - Creating rich WebRTC Applications with Kurento

0150519-kurento.pdf
0150519-kurento.pdf0150519-kurento.pdf
0150519-kurento.pdfDejVoleti
 
Remixing Media on the Semantic Web (ISWC 2014 Tutorial) Pt 1 Media Fragment S...
Remixing Media on the Semantic Web (ISWC 2014 Tutorial) Pt 1 Media Fragment S...Remixing Media on the Semantic Web (ISWC 2014 Tutorial) Pt 1 Media Fragment S...
Remixing Media on the Semantic Web (ISWC 2014 Tutorial) Pt 1 Media Fragment S...LinkedTV
 
LoCloud Annual Publishable Summary 2014-15
LoCloud Annual Publishable Summary 2014-15LoCloud Annual Publishable Summary 2014-15
LoCloud Annual Publishable Summary 2014-15locloud
 
Docker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroDocker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroPatrick Chanezon
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTBenjamin Cabé
 
Introduction to the Stream Oriented GE (Kurento v6)
Introduction to the Stream Oriented GE (Kurento v6)Introduction to the Stream Oriented GE (Kurento v6)
Introduction to the Stream Oriented GE (Kurento v6)Boni García
 
Swift at IBM: Mobile, open source and the drive to the cloud
Swift at IBM: Mobile, open source and the drive to the cloudSwift at IBM: Mobile, open source and the drive to the cloud
Swift at IBM: Mobile, open source and the drive to the cloudDev_Events
 
Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_kanedafromparis
 
Future Media Production - on embedded metadata and semantic technologies
Future Media Production - on embedded metadata and semantic technologiesFuture Media Production - on embedded metadata and semantic technologies
Future Media Production - on embedded metadata and semantic technologiesMaarten Verwaest
 
Mobile, Open Source, and the Drive to the Cloud
Mobile, Open Source, and the Drive to the CloudMobile, Open Source, and the Drive to the Cloud
Mobile, Open Source, and the Drive to the CloudDev_Events
 
Mobile, Open Source, & the Drive to the Cloud
Mobile, Open Source, & the Drive to the CloudMobile, Open Source, & the Drive to the Cloud
Mobile, Open Source, & the Drive to the CloudDev_Events
 
Docker Application to Scientific Computing
Docker Application to Scientific ComputingDocker Application to Scientific Computing
Docker Application to Scientific ComputingPeter Bryzgalov
 
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...Artefactual Systems - AtoM
 
Dynatrace - Red Hat workshop : Monolith to Microservices
Dynatrace - Red Hat workshop : Monolith to MicroservicesDynatrace - Red Hat workshop : Monolith to Microservices
Dynatrace - Red Hat workshop : Monolith to MicroservicesSteve Caron
 
FIWARE Tech Summit - Stream Processing with Kurento Media Server
FIWARE Tech Summit - Stream Processing with Kurento Media ServerFIWARE Tech Summit - Stream Processing with Kurento Media Server
FIWARE Tech Summit - Stream Processing with Kurento Media ServerFIWARE
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...Matt Raible
 
CENGN - OpenStack MeetUp - March 2017
CENGN - OpenStack MeetUp - March 2017CENGN - OpenStack MeetUp - March 2017
CENGN - OpenStack MeetUp - March 2017Stacy Véronneau
 
ARIADNE federation
ARIADNE federationARIADNE federation
ARIADNE federationguest030425
 
How to Train Your Docker Cloud
How to Train Your Docker CloudHow to Train Your Docker Cloud
How to Train Your Docker CloudC4Media
 

Similar to FOSDEM 2016 - Creating rich WebRTC Applications with Kurento (20)

0150519-kurento.pdf
0150519-kurento.pdf0150519-kurento.pdf
0150519-kurento.pdf
 
Remixing Media on the Semantic Web (ISWC 2014 Tutorial) Pt 1 Media Fragment S...
Remixing Media on the Semantic Web (ISWC 2014 Tutorial) Pt 1 Media Fragment S...Remixing Media on the Semantic Web (ISWC 2014 Tutorial) Pt 1 Media Fragment S...
Remixing Media on the Semantic Web (ISWC 2014 Tutorial) Pt 1 Media Fragment S...
 
LoCloud Annual Publishable Summary 2014-15
LoCloud Annual Publishable Summary 2014-15LoCloud Annual Publishable Summary 2014-15
LoCloud Annual Publishable Summary 2014-15
 
Docker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroDocker Enterprise Workshop - Intro
Docker Enterprise Workshop - Intro
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoT
 
UDP Report
UDP ReportUDP Report
UDP Report
 
Introduction to the Stream Oriented GE (Kurento v6)
Introduction to the Stream Oriented GE (Kurento v6)Introduction to the Stream Oriented GE (Kurento v6)
Introduction to the Stream Oriented GE (Kurento v6)
 
Swift at IBM: Mobile, open source and the drive to the cloud
Swift at IBM: Mobile, open source and the drive to the cloudSwift at IBM: Mobile, open source and the drive to the cloud
Swift at IBM: Mobile, open source and the drive to the cloud
 
Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_
 
Future Media Production - on embedded metadata and semantic technologies
Future Media Production - on embedded metadata and semantic technologiesFuture Media Production - on embedded metadata and semantic technologies
Future Media Production - on embedded metadata and semantic technologies
 
Mobile, Open Source, and the Drive to the Cloud
Mobile, Open Source, and the Drive to the CloudMobile, Open Source, and the Drive to the Cloud
Mobile, Open Source, and the Drive to the Cloud
 
Mobile, Open Source, & the Drive to the Cloud
Mobile, Open Source, & the Drive to the CloudMobile, Open Source, & the Drive to the Cloud
Mobile, Open Source, & the Drive to the Cloud
 
Docker Application to Scientific Computing
Docker Application to Scientific ComputingDocker Application to Scientific Computing
Docker Application to Scientific Computing
 
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...
 
Dynatrace - Red Hat workshop : Monolith to Microservices
Dynatrace - Red Hat workshop : Monolith to MicroservicesDynatrace - Red Hat workshop : Monolith to Microservices
Dynatrace - Red Hat workshop : Monolith to Microservices
 
FIWARE Tech Summit - Stream Processing with Kurento Media Server
FIWARE Tech Summit - Stream Processing with Kurento Media ServerFIWARE Tech Summit - Stream Processing with Kurento Media Server
FIWARE Tech Summit - Stream Processing with Kurento Media Server
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
 
CENGN - OpenStack MeetUp - March 2017
CENGN - OpenStack MeetUp - March 2017CENGN - OpenStack MeetUp - March 2017
CENGN - OpenStack MeetUp - March 2017
 
ARIADNE federation
ARIADNE federationARIADNE federation
ARIADNE federation
 
How to Train Your Docker Cloud
How to Train Your Docker CloudHow to Train Your Docker Cloud
How to Train Your Docker Cloud
 

Recently uploaded

定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Sonam Pathan
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMartaLoveguard
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxDyna Gilbert
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)Christopher H Felton
 
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Lucknow
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一Fs
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一Fs
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa494f574xmv
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一Fs
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Excelmac1
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 

Recently uploaded (20)

定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptx
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
 
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 

FOSDEM 2016 - Creating rich WebRTC Applications with Kurento

  • 1. Creating rich WebRTC Applications with Kurento Luis Lopez lulop@kurento.org
  • 2. Who I am http://www.kurento.org - lulop@kurento.org 2 Associate Professor Escuela Técnica Superior de Ingenieros de Telecomunicación Universidad Rey Juan Carlos (south Madrid) Researcher in the area of RTC • http://www.nubomedia.eu • http://www.fiware.org FOSS enthusiast • Kurento project lead: http://www.kurento.org • NUBOMEDIA Community lead: http://www.nubomedia.eu
  • 3. Real-Time media Communications http://www.kurento.org - lulop@kurento.org 3 Capture Encode Cipher Transport Transport Decipher Decode RenderNetwork The media plane The signaling plane I wan to call you, do you accept? Yes, do it in this way
  • 4. WebRTC to the rescue. Before WebRTC First wave of WebRTC technologies Begin End • APIs • Standards • FOSS Development experience when working with real-time media Common WebRTC application (p2p communications) WebRTC video stream http://www.kurento.org - lulop@kurento.org 4
  • 5. WebRTC infrastructures http://www.kurento.org - lulop@kurento.org 5 Peer-to-Peer WebRTC Application (without media infrastructure) WebRTC video stream WebRTC Application based on media infrastructure media infrastructure
  • 6. WWW VS (Web)RTC applications http://www.kurento.org - lulop@kurento.org 6 Control Multimedia Application logic (developers’ code) Multimedia Capabilities Recording Transcoding Routing Mixing Analyzing Etc. Media Traffic RTC Media APIs Multimedia Clients Events Application Signaling Control WWW Application logic (developers’ code) Database Capabilities Data storage Data recovery Data querying Data processing Etc. DD.BB. API WWW Clients Events Application Signaling
  • 8. http://www.kurento.org - lulop@kurento.org 8 Control Multimedia Application logic (developers’ code) Multimedia Capabilities Recording Transcoding Routing Mixing Analyzing Etc. RTC Media APIs Events
  • 9. Kurento: a WebRTC infrastructure an its APIs http://www.kurento.org - lulop@kurento.org 9 Control Multimedia Application logic (developers’ code) Recording Transcoding Routing Mixing Analyzing Adapting Media Traffic RTC Media APIs Multimedia Clients Events Application Signaling Computer vision Augmented reality Blending Etc. Multimedia Capabilities Kurento Media Server (KMS) Kurento Client API Kurento Room API Kurento Tree API
  • 11. The Kurento FOSS Community http://www.kurento.org - lulop@kurento.org 11 Community support WebRTC worldwide reference International awards More than 300 companies Very active mailing list First result in Google
  • 12. The Kurento FOSS project http://www.kurento.org - lulop@kurento.org 12 • http://www.kurento.org – Main web site • https://www.twitter.com/kurentoms – Main social channel • https://groups.google.com/forum/#!forum/kurento – Main mailing list • https://github.com/kurento – Main repository • https://www.youtube.com/channel/UCFtGhWYqahVlzMgGNtEmKug – Kurento Youtube channel
  • 13. Developing with KMS: The Kurento Client API http://www.kurento.org - lulop@kurento.org 13 SinkSRC Sink SRC SRCSink Sink Media Element • Provides a specific media functionality › Send/receive media › Process media › Transform media • Exchange media through › Sources › Sinks Media pipeline • Chain of media elements implementing the desired media logic. • The Media API provides the capability of creating media pipelines by joining media elements of the toolbox Media Element Sink SRC
  • 14. A modular API • Modular in the sense of modularity* – Isolation • Internal states of a module don’t affect the rest – Abstracion • Internal states are hidden behind an interface – Composability • Interface must enable module recombination and assembly – Reusability • If a module has it, you can use it – Extensibility • If a module does not have it, you can add it. http://www.kurento.org - lulop@kurento.org 14 * Baldwin, Carliss Young, and Kim B. Clark. Design rules: The power of modularity. Vol. 1. MIT press, 2000
  • 15. The paradigm of modularity http://www.kurento.org - lulop@kurento.org 15
  • 16. The Kurento Client API in one word http://www.kurento.org - lulop@kurento.org 16 sourceElement.connect(sinkElement) connect
  • 18. //MediaPipeline is a holder of media elements MediaPipeline pipeline = kurento.createMediaPipeline(); //Create your media elements WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build(); //Connect your media elements webRtcEndpoint.connect(webRtcEndpoint); http://www.kurento.org - lulop@kurento.org 18 Control Multimedia Application logic (developers’ code) Recording Transcoding Routing Mixing Analyzing Adapting Kurento Media APIs Multimedia Clients Events Application Signaling Computer vision Augmented reality Blending Etc. Multimedia Capabilities //Where to render the local and remote streams var options = { localVideo : videoInput, remoteVideo : videoOutput, onicecandidate : onIceCandidate } //Start media capture and communications webRtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendrecv( options, function(error) { if (error) return console.error(error); webRtcPeer.generateOffer(onOffer); }); Application Server Code (Java) Client Server Code Application source for Spring (Java EE) Application source for Node.js (JavaScript)
  • 19. Recording http://www.kurento.org - lulop@kurento.org SinkSRC Sink //MediaPipeline is a holder of media elements MediaPipeline pipeline = kurento.createMediaPipeline(); //Create your media elements WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build(); RecorderEndpoint recorderEndpoint = new RecorderEndpoint.Builder(pipeline).build( “file:///myfolder/myfile.mp4”); //Connect your media elements webRtcEndpoint.connect(webRtcEndpoint); webRtcEndpoint.connect(recorderEndpoint); 19 Application source for Spring (Java EE) Application source for Node.js (JavaScript)
  • 20. Playing http://www.kurento.org - lulop@kurento.org 20 SinkSRC SRC //MediaPipeline is a holder of media elements MediaPipeline pipeline = kurento.createMediaPipeline(); //Create your media elements WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build(); PlayerEndpoint playerEndpoint = new PlayerEndpoint.Buildr(pipeline).build( “file:///myfolder/myfile.mp4”); //RSTP and HTTP URIs also supported //Connect your media elements playerEndpoint.connect(webRtcEndpoint); Application source for Spring (Java EE) Application source for Node.js (JavaScript)
  • 21. Interoperating http://www.kurento.org - lulop@kurento.org 21 Media Pipeline WebRTC audio streaming SinkSRC SRCSink Media Pipeline SinkSRC SRCSink WebRTC video streaming RTP audio streaming RTP video streaming Transparent transcoding!!
  • 22. Some Media processing modules • Augmented reality – MarkerArModule – MarkerlessArModule • Computer vision – FaceDetector – NoseDetector – EyeDetector – CrowdDetector – PointerDetector – MotionDetector – VirtualFence – Etc. http://www.kurento.org - lulop@kurento.org 22 Sink SRC Sink SRC Sink SRC Sink SRC Sink SRC
  • 23. Using media processing modules http://www.kurento.org - lulop@kurento.org 23 SinkSRC Sink SRC CrowdEvents SRC Sink SRC CrowdDetector RtspPlayer SinkSRC See demo See demo
  • 24. Implementing group communications: just connect http://www.kurento.org - lulop@kurento.org 24 Media Pipeline WebRTC streaming SinkSRC WebRTC streaming SRCSinkSRCSink WebRTC streaming WebRtcEndpoint 1 WebRtcEndpoint 3 WebRtcEndpoint 2 SRCSink WebRTC streaming WebRtcEndpoint 4 User 1 User 2 User 3 User 4
  • 25. Group communications: RTP topologies http://www.kurento.org - lulop@kurento.org 25 SinkSRC SRC Sink SinkSRC SRCSink • Media Mixing Mixer – Composite • Media Switching Mixer – Connect primitive – Natural topology • SFU – WebRtcSfu • Simulcast
  • 26. Creating your own modules http://www.kurento.org - lulop@kurento.org 26 Kurento IDL Compiler JSON Module IDL Description Java Java- Script cpphpp Media API code Toolchain Auto-generated code Module Implementation cmake Interface Developer (1) (2) (3)
  • 27. Going up the API stack: the room API http://www.kurento.org - lulop@kurento.org 27 createRoom deleteRoom joinRoom leaveRoom publisMedia unpublishMedia onParticipantJoined onParticipantLeft onMediaPublished onMediaUnpublished onMessage See demo
  • 28. Going up the API stack: the tree API http://www.kurento.org - lulop@kurento.org 28 createTree deleteTree joinAsPresenter joinAsViewer leave
  • 30. Where to start http://www.kurento.org - lulop@kurento.org 30 • http://www.kurento.org/documentation – Installation and administration guide – Java tutorials for Spring and Java EE developers – JavaScript tutorials for Node.js developers – JSON-RPC protocol documentation • https://github.com/kurento – Main repository