SlideShare a Scribd company logo
1 of 29
Kurento: a media server architecture
and API
Live video technology

Luis Lopez
lulop@kurento.org
Who am I?
Associate Prof.
• Computer Science
• Multimedia protocols and systems

15 years of experience in multimedia applications
and protocols research
• Director of the FUN-LAB group

Open Source Software enthusiast and contributor

Coordinating the Kurento.org project

: a media server architecture and API – http://www.kurento.org

2
What’s Kurento?
Kurento
• Esperanto translation of “stream”

Esperanto philosophy
• Openness
• Simplicity
• Interoperability

Kurento
• Open source development framework for creating rich real-time
multimedia applications.

: a media server architecture and API – http://www.kurento.org

3
Kurento’s history
2004

March 2013

• Different research
efforts from private
and public
organizations in
the area of
multimedia

• Kurento receives
4M€ by European
Commission
through different
research initiatives

2012

December 2013

• The Kurento stack
goes fully open
source LGPL v2.1

• Kurento first
release available

: a media server architecture and API – http://www.kurento.org

4
Why WebRTC?
•

WebRTC is a movement
– … by Tsahi Levent-Levi

•

Are RTCs new?
– Skype, H.323, Facetime, WebEx

•

Why WebRTC is raising such expectations
– Millions of WWW developers

WWW dev. community

RTC/IMS dev. community

WebRTC
WebRTC = Multimedia RTC is just another feature of your WWW application
: a media server architecture and API – http://www.kurento.org

5
Why Kurento?
WWW RTC developer experience
Before WebRTC
Developing
the client side

After WebRTC

Begin

Next natural step…

End
•
•
•
•

Begin
•
•
•
•

Unified APIs
Standards
FOSS
Multiplatform

Developing the
infrastructure
side

: a media server architecture and API – http://www.kurento.org

End
Unified APIs
Standards
FOSS
Multiplatform

Begin

End
•
•
•
•

Unified APIs
Standards
FOSS
Multiplatform

6
Kurento media framework
components
•Low level media
capabilities

•Signaling and control
capabilities
•SIP, HTTP, RESFul, etc.
•Java
•Spring + JBoss +
Mobicents SIP Servlet

•Transport, encode/decode,
transcode, CV, mix, etc

•C/C++
•C++ Media Server +
Gstreamer plugins

Kurento
Media
Server

Kurento
Application
Server

Kurento
Android
SDK

Kurento
WWW SDK

•RTC library for Android
•Java and C
•Multicodec support

: a media server architecture and API – http://www.kurento.org

•HTML5 multimedia
development
•Video tag, WebRTC
•Javascript

7
Kurento Application Server: extending
the WWW development model
Signaling request:
I want this media

HTTP request:
I want this resource

Process WWW request
- DDBB access
- Transactions
- Security tools
- Etc.

HTTP response:
The resource

Intuition behind
traditional WWW
Applications
(Servlets, ASP, PHP,
Rails, etc.)

: a media server architecture and API – http://www.kurento.org

Process media request

- Media API
-

DDBB access
Transactions
Security tools
Etc.
Signaling response:
The media is here

Intuition behind
Kurento
development APIs:
Multimedia RTC is just
another feature of your
application
8
Media API: media elements and media
pipelines
 Media Element
• Provides a specific media functionality

•

Send/receive media
Process media
Transform media

The Media API provides the capability of
creating media pipelines by joining media
elements of the toolbox

The Media API provides a toolbox of
media elements ready to be used.
New media elements can be added

Media Element

PlayerEndPoint

Sink

SRC

: a media server architecture and API – http://www.kurento.org

WebRtcEndPoint

Filter
Sink

SRC

SRC

•

the desired media functionality.

Building block

Sink

•

›
›
›
›

 Media pipeline
• Chain of media elements implementing

9
Application
architecture

Other systems
and databases

Signaling and
WWW traffic

Media

Media

Signaling and
WWW traffic

HTTP
Servlet

SIP
Servlet

Web
service
s

DD.BB.

JMS

Java EE compatible container
Specific application logic
Media API
Decode
Video

Augmented
Reality

Video Playing
and Recording

Computer
Vision

Encode
Video

Kurento Media Server Infrastructure

: a media server architecture and API – http://www.kurento.org

10
Possible use cases: just integrate with
Java EE and GStreamer
• Verticals
– E-Health
• Kurento + HAPI (http://hl7api.sourceforge.net/)
– P2D video conferences as Electronic Health Records

– Smart cities
• Kurento + NGSI + OpenCV + Google Maps
– City crowds movement tracking
– Traffic density tracking

• Telco infrastructures
– Kurento + Mobicents
• IMS application server

• B2B & B2C WWW RTC
– Kurento + CRM APIs
• Enriched video conferencing with customer personal data

– Kurento + ESB
• Billing, video event processing, physical security, etc.

: a media server architecture and API – http://www.kurento.org

11
Application example: requirements

Kurento Media Server Infrastructure

: a media server architecture and API – http://www.kurento.org

12
Application example: code
@WebRtcMediaService(name = "MyWebRtcService", path = "/pathToService")
public class MyWebRtcService implements WebRtcMediaHandler {
public void onMediaRequest(WebRtcMediaRequest request) {
//I can authenticate using any of the Java EE available mechanisms
MediaPipelineFactory mpf = request.getMediaPipelineFactory();
MediaPipeline mp = mpf.createMediaPipeline();
//I could decide the type of processing connecting to a DDBB
JackVaderFilter filter = mp.newFilter().withType(JackVaderFilter.class).build();
RecorderEndpoint recorder = mp.newRecorderEndpoint().withUri("file:///myFile.webm");
filter.connect(recorder);
HttpEndpoint httpEndpoint = mp.newHttpEndpoint().build();
filter.connect(filter); //I could connect only audio or video separately
request.startMedia(filter, filter);
}

To file

Media
Sink

RecorderEndpoint

Media
Sink

Sink

Video
tag or
CDN

SRC

Media
Sink

HttpEndpoint
: a media server architecture and API – JackVaderFilter
http://www.kurento.org

To
Network

Media
Source

From
network
WebRtcEndpoint

13
Application example: result

: a media server architecture and API – http://www.kurento.org

14
Media element toolbox
Transport

Repository

Group communications

• WebRtcEndpoint
• RtpEndpoint
• HttpEndpoint

• PlayerEndPoint
• RecorderEndPoint

• MainMixer
• GridMixer
• RoundRobinMixer

Filters
• FaceRecognitionFilter (events)
• JackVaderFilter
• QR/Barcode detector
• PlateRecognitionFilter (events)
• ColorTrackingFilter (events)

And growing …

Available as part of

: a media server architecture and API – http://www.kurento.org

15
Media elements: WebRtcEndpoint
• Full implementation of the RTCWeb protocol stack
– SRTP
– ICE
– DTLS

• Allow sending and receiving WebRTC flows at the
media server infrastructure

Media
Source

WebRTC traffic

Media
Sink

WebRTC traffic

WebRtcEndpoint

: a media server architecture and API – http://www.kurento.org

16
Media elements: HttpEndpoint
• Media downloading compatible with the HTML5 video
tag
– WebM (Chrome, Firefox)
– MP4 (Chrome, Firefox, IE, Safari)

• Media uploading compatible with HTML file input tag
– Multipart support

Media
Sink

HTTP WebM/MP4
HttpEndpoint

: a media server architecture and API – http://www.kurento.org

17
Media elements: RtpEndpoint
• Full-duplex RTP multimedia exchange
–
–
–
–

H.264
H.263
VP8
Many different audio codecs supported

Media
Source

RTP traffic

Media
Sink

RTP traffic

RtpEndpoint

: a media server architecture and API – http://www.kurento.org

18
Media elements: UriEndpoints
• PayerEndpoint
– Play media from file or URL
• Support for most popular formats

• RecorderEndpoint
– Record media to file or URL
• WebM
• MP4
Media
Sink

RecorderEndpoint

Media
Source

PlayerEndpoint
: a media server architecture and API – http://www.kurento.org

19
Media elements: Mixers (in progress)
•

Make possible group communications
– ForwardingMixer
•
•
•

One-to-many replication of flows
A source can be assigned to any of the sinks
Multiple sources supported

– MainMixer
•
•
•

Mixes media
A source can be assigned to a combination of sinks
Multiple sources supported

Media
Source
Media
Sink
Media
Source
Media
Sink

Mixer

Media
Sink

: a media server architecture and API – http://www.kurento.org

Media
Source
20
Filters
Seamless integration into OpenCV
Face recognition
Augmented reality
Subtitle adding
Color manipulation
QR detection
People counter
Plate recognition
Etc.

Filter
SRC

–
–
–
–
–
–
–
–

Sink

•

: a media server architecture and API – http://www.kurento.org

21
Filter with events
• Filters can provide events to the application
– Events are generated at the media server
– Events can be propagated to the client app

• Code example:
MediaPipeline mp = mpf.create();
PlayerEndPoint playerEndPoint = mp.newPlayerEndPoint(
"https://ci.kurento.com/video/barcodes.webm").build();
ZBarFilter filter = mp.newZBarFilter().build();
playerEndPoint.connect(filter);

Events

SRC

Media
Source

Sink

filter.addCodeFoundDataListener(new MediaEventListener<CodeFoundEvent>() {
@Override
public void onEvent(CodeFoundEvent event) {
session.publishEvent(new ContentEvent(event.getType(),
event.getValue()));
...

PlayerEndpoint
ZBarFilter
: a media server architecture and API – http://www.kurento.org

22
The magic of pipelines: Transparent
media adaptation
• Agnostic media adaptor
– Acts every time a source is connected to a sink
– Adapts media formats as required by the involved
media elements
– 100% transparent for the application developer
An agnostic media adaptor
is “hidden” behind every
connection making
compatible element
formats transparently

VP8

H.264

: a media server architecture and API – http://www.kurento.org

SRC

Media Element
Sink

SRC

Sink

Media Element

23
Complex examples: Heterogeneous
group communications
Media
Source

Media
Sink

Media
Sink

RecorderEndpoint

WebRtcEndpoint
Media
Source

Mixer

Media
Sink

WebRtcEndpoint
Media
Source

SRC

Media
Sink

Sink

Filter

RtpEndpoint
: a media server architecture and API – http://www.kurento.org

24
Complex examples: WebRTC to HTTP
Media
Source

Media
Sink

Media
Sink

RecorderEndpoint

Mixer

WebRtcEndpoint
Media
Sink

HttpEndpoint

Mixer

Media
Sink

HttpEndpoint

Media
Sink

HttpEndpoint
: a media server architecture and API – http://www.kurento.org
Complex examples: WebRTC Playing
Media
Source

Media
Sink

Media
Sink

RecorderEndpoint

Mixer

WebRtcEndpoint
Media
Sink

Filter

HttpEndpoint

Sink

SRC

Media
Source

PlayerEndpoint
: a media server architecture and API – http://www.kurento.org

26
Kurento’s Roadmap
Q1 2014
• Installer and
documentation
• Group communications
• Super scalable media
repository

Q4 2014
• Kurento cloud
infrastructure
• Hardware acceleration

Q2 2014

2015

• WebRTC support on
Android SDK
• Kurento iOS SDK
• Javascript Media API

• Elastric scalable Kurento
PaaS platform
• SDN Kurento QoS cloud
connectivity manager
• IMS/Telco infrastructure
integration
• 3D/Kinect multimedia
support

: a media server architecture and API – http://www.kurento.org

27
Upcoming opportunities for
developers
• FI-WARE is the platform of the FI-PPP initiative
– European Commission FP7
– Kurento is providing multimedia capabilities to FI-WARE

• FI-WARE is giving 800K€ in prices to developers
– You can opt to them developing on top of Kurento
– http://www.fi-ware.eu/challenges/

• FI-PPP is providing 100M€ in funding to SMEs and entrepreneurs
– http://www.fi-ppp.eu/how-to-participate/

: a media server architecture and API – http://www.kurento.org

28
Collaborations welcome
http://www.github.com/kurento

Thank you very much for your attention
Complains, suggestions and comments can be sent to:
Luis López
lulop@kurento.org

: a media server architecture and API – http://www.kurento.org

29

More Related Content

What's hot

Learning Computer Network Through Network Simulation Program
Learning Computer Network Through Network Simulation ProgramLearning Computer Network Through Network Simulation Program
Learning Computer Network Through Network Simulation ProgramI Putu Hariyadi
 
Shift Left fängt ganz links an
Shift Left fängt ganz links anShift Left fängt ganz links an
Shift Left fängt ganz links anBATbern
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source WorldLorenzo Miniero
 
Sirius Web Advanced : Customize and Extend the Platform
Sirius Web Advanced : Customize and Extend the PlatformSirius Web Advanced : Customize and Extend the Platform
Sirius Web Advanced : Customize and Extend the PlatformObeo
 
Android media codec 사용하기
Android media codec 사용하기Android media codec 사용하기
Android media codec 사용하기Taehwan kwon
 
DevOps maturity models Knowit and DASA
DevOps maturity models Knowit and DASADevOps maturity models Knowit and DASA
DevOps maturity models Knowit and DASAKari Kakkonen
 
CI, CD, CT, Deploy, IaaS, DevOps, Stage
CI, CD, CT, Deploy, IaaS, DevOps, StageCI, CD, CT, Deploy, IaaS, DevOps, Stage
CI, CD, CT, Deploy, IaaS, DevOps, StageArtur Basak
 
Videostream compression in iOS
Videostream compression in iOSVideostream compression in iOS
Videostream compression in iOS*instinctools
 
Introduction to GitHub Copilot
Introduction to GitHub CopilotIntroduction to GitHub Copilot
Introduction to GitHub CopilotAll Things Open
 
Flutter festival gdsc juet guna
Flutter festival   gdsc juet gunaFlutter festival   gdsc juet guna
Flutter festival gdsc juet gunaSachinVerma869778
 
Control your service resources with systemd
 Control your service resources with systemd  Control your service resources with systemd
Control your service resources with systemd Marian Marinov
 
Free GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOpsFree GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOpsWeaveworks
 
Clean Infrastructure as Code
Clean Infrastructure as Code Clean Infrastructure as Code
Clean Infrastructure as Code QAware GmbH
 
Variability management with Capella and pure::variants
Variability management with Capella and pure::variantsVariability management with Capella and pure::variants
Variability management with Capella and pure::variantsObeo
 

What's hot (20)

Learning Computer Network Through Network Simulation Program
Learning Computer Network Through Network Simulation ProgramLearning Computer Network Through Network Simulation Program
Learning Computer Network Through Network Simulation Program
 
eBPF Basics
eBPF BasicseBPF Basics
eBPF Basics
 
Shift Left fängt ganz links an
Shift Left fängt ganz links anShift Left fängt ganz links an
Shift Left fängt ganz links an
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source World
 
Sirius Web Advanced : Customize and Extend the Platform
Sirius Web Advanced : Customize and Extend the PlatformSirius Web Advanced : Customize and Extend the Platform
Sirius Web Advanced : Customize and Extend the Platform
 
DevOps and Cloud
DevOps and CloudDevOps and Cloud
DevOps and Cloud
 
Android media codec 사용하기
Android media codec 사용하기Android media codec 사용하기
Android media codec 사용하기
 
DevOps maturity models Knowit and DASA
DevOps maturity models Knowit and DASADevOps maturity models Knowit and DASA
DevOps maturity models Knowit and DASA
 
CI, CD, CT, Deploy, IaaS, DevOps, Stage
CI, CD, CT, Deploy, IaaS, DevOps, StageCI, CD, CT, Deploy, IaaS, DevOps, Stage
CI, CD, CT, Deploy, IaaS, DevOps, Stage
 
Videostream compression in iOS
Videostream compression in iOSVideostream compression in iOS
Videostream compression in iOS
 
Introduction to GitHub Copilot
Introduction to GitHub CopilotIntroduction to GitHub Copilot
Introduction to GitHub Copilot
 
Flutter festival gdsc juet guna
Flutter festival   gdsc juet gunaFlutter festival   gdsc juet guna
Flutter festival gdsc juet guna
 
SBOM, Is It 42?
SBOM, Is It 42?SBOM, Is It 42?
SBOM, Is It 42?
 
Control your service resources with systemd
 Control your service resources with systemd  Control your service resources with systemd
Control your service resources with systemd
 
Nse4 fgt 6.0
Nse4 fgt 6.0Nse4 fgt 6.0
Nse4 fgt 6.0
 
Free GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOpsFree GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOps
 
Flutter
FlutterFlutter
Flutter
 
Clean Infrastructure as Code
Clean Infrastructure as Code Clean Infrastructure as Code
Clean Infrastructure as Code
 
Variability management with Capella and pure::variants
Variability management with Capella and pure::variantsVariability management with Capella and pure::variants
Variability management with Capella and pure::variants
 
WebRTC presentation
WebRTC presentationWebRTC presentation
WebRTC presentation
 

Similar to Kurento media server architecture and API overview

The future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's roleThe future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's roleLuis 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 applications with Kurento
Developing applications with KurentoDeveloping applications with Kurento
Developing applications with KurentoLuis Lopez
 
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
 
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 IETF96 hackthon - Kurento
Nubomedia IETF96 hackthon - KurentoNubomedia IETF96 hackthon - Kurento
Nubomedia IETF96 hackthon - KurentoIvan Gracia
 
Kurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampKurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampIvan Gracia
 
FOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with KurentoFOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with KurentoLuis Lopez
 
kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1Luis Lopez
 
0150519-kurento.pdf
0150519-kurento.pdf0150519-kurento.pdf
0150519-kurento.pdfDejVoleti
 
Nubomedia IETF96 hackathon - The platform
Nubomedia IETF96 hackathon - The platformNubomedia IETF96 hackathon - The platform
Nubomedia IETF96 hackathon - The platformIvan Gracia
 
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
 
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
 
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
 
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...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
 
Web application development ( basics )
Web application development ( basics )Web application development ( basics )
Web application development ( basics )Chirag Nag
 
"In love with Open Source : Past, Present and Future" : Keynote OSDConf 2014
"In love with Open Source : Past, Present and Future" : Keynote OSDConf 2014"In love with Open Source : Past, Present and Future" : Keynote OSDConf 2014
"In love with Open Source : Past, Present and Future" : Keynote OSDConf 2014Piyush Kumar
 

Similar to Kurento media server architecture and API overview (20)

The future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's roleThe future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's role
 
Kurento cpmx
Kurento cpmxKurento cpmx
Kurento cpmx
 
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 applications with Kurento
Developing applications with KurentoDeveloping applications with Kurento
Developing applications with Kurento
 
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.
 
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 IETF96 hackthon - Kurento
Nubomedia IETF96 hackthon - KurentoNubomedia IETF96 hackthon - Kurento
Nubomedia IETF96 hackthon - Kurento
 
Kurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampKurento - FI-WARE Bootcamp
Kurento - FI-WARE Bootcamp
 
FOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with KurentoFOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with Kurento
 
kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1
 
0150519-kurento.pdf
0150519-kurento.pdf0150519-kurento.pdf
0150519-kurento.pdf
 
Nubomedia IETF96 hackathon - The platform
Nubomedia IETF96 hackathon - The platformNubomedia IETF96 hackathon - The platform
Nubomedia IETF96 hackathon - The platform
 
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...
 
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)
 
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
 
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
 
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...
 
Web application development ( basics )
Web application development ( basics )Web application development ( basics )
Web application development ( basics )
 
"In love with Open Source : Past, Present and Future" : Keynote OSDConf 2014
"In love with Open Source : Past, Present and Future" : Keynote OSDConf 2014"In love with Open Source : Past, Present and Future" : Keynote OSDConf 2014
"In love with Open Source : Past, Present and Future" : Keynote OSDConf 2014
 
My Media at University of Toronto Libraries
My Media at University of Toronto LibrariesMy Media at University of Toronto Libraries
My Media at University of Toronto Libraries
 

Recently uploaded

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Recently uploaded (20)

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

Kurento media server architecture and API overview

  • 1. Kurento: a media server architecture and API Live video technology Luis Lopez lulop@kurento.org
  • 2. Who am I? Associate Prof. • Computer Science • Multimedia protocols and systems 15 years of experience in multimedia applications and protocols research • Director of the FUN-LAB group Open Source Software enthusiast and contributor Coordinating the Kurento.org project : a media server architecture and API – http://www.kurento.org 2
  • 3. What’s Kurento? Kurento • Esperanto translation of “stream” Esperanto philosophy • Openness • Simplicity • Interoperability Kurento • Open source development framework for creating rich real-time multimedia applications. : a media server architecture and API – http://www.kurento.org 3
  • 4. Kurento’s history 2004 March 2013 • Different research efforts from private and public organizations in the area of multimedia • Kurento receives 4M€ by European Commission through different research initiatives 2012 December 2013 • The Kurento stack goes fully open source LGPL v2.1 • Kurento first release available : a media server architecture and API – http://www.kurento.org 4
  • 5. Why WebRTC? • WebRTC is a movement – … by Tsahi Levent-Levi • Are RTCs new? – Skype, H.323, Facetime, WebEx • Why WebRTC is raising such expectations – Millions of WWW developers WWW dev. community RTC/IMS dev. community WebRTC WebRTC = Multimedia RTC is just another feature of your WWW application : a media server architecture and API – http://www.kurento.org 5
  • 6. Why Kurento? WWW RTC developer experience Before WebRTC Developing the client side After WebRTC Begin Next natural step… End • • • • Begin • • • • Unified APIs Standards FOSS Multiplatform Developing the infrastructure side : a media server architecture and API – http://www.kurento.org End Unified APIs Standards FOSS Multiplatform Begin End • • • • Unified APIs Standards FOSS Multiplatform 6
  • 7. Kurento media framework components •Low level media capabilities •Signaling and control capabilities •SIP, HTTP, RESFul, etc. •Java •Spring + JBoss + Mobicents SIP Servlet •Transport, encode/decode, transcode, CV, mix, etc •C/C++ •C++ Media Server + Gstreamer plugins Kurento Media Server Kurento Application Server Kurento Android SDK Kurento WWW SDK •RTC library for Android •Java and C •Multicodec support : a media server architecture and API – http://www.kurento.org •HTML5 multimedia development •Video tag, WebRTC •Javascript 7
  • 8. Kurento Application Server: extending the WWW development model Signaling request: I want this media HTTP request: I want this resource Process WWW request - DDBB access - Transactions - Security tools - Etc. HTTP response: The resource Intuition behind traditional WWW Applications (Servlets, ASP, PHP, Rails, etc.) : a media server architecture and API – http://www.kurento.org Process media request - Media API - DDBB access Transactions Security tools Etc. Signaling response: The media is here Intuition behind Kurento development APIs: Multimedia RTC is just another feature of your application 8
  • 9. Media API: media elements and media pipelines  Media Element • Provides a specific media functionality • Send/receive media Process media Transform media The Media API provides the capability of creating media pipelines by joining media elements of the toolbox The Media API provides a toolbox of media elements ready to be used. New media elements can be added Media Element PlayerEndPoint Sink SRC : a media server architecture and API – http://www.kurento.org WebRtcEndPoint Filter Sink SRC SRC • the desired media functionality. Building block Sink • › › › ›  Media pipeline • Chain of media elements implementing 9
  • 10. Application architecture Other systems and databases Signaling and WWW traffic Media Media Signaling and WWW traffic HTTP Servlet SIP Servlet Web service s DD.BB. JMS Java EE compatible container Specific application logic Media API Decode Video Augmented Reality Video Playing and Recording Computer Vision Encode Video Kurento Media Server Infrastructure : a media server architecture and API – http://www.kurento.org 10
  • 11. Possible use cases: just integrate with Java EE and GStreamer • Verticals – E-Health • Kurento + HAPI (http://hl7api.sourceforge.net/) – P2D video conferences as Electronic Health Records – Smart cities • Kurento + NGSI + OpenCV + Google Maps – City crowds movement tracking – Traffic density tracking • Telco infrastructures – Kurento + Mobicents • IMS application server • B2B & B2C WWW RTC – Kurento + CRM APIs • Enriched video conferencing with customer personal data – Kurento + ESB • Billing, video event processing, physical security, etc. : a media server architecture and API – http://www.kurento.org 11
  • 12. Application example: requirements Kurento Media Server Infrastructure : a media server architecture and API – http://www.kurento.org 12
  • 13. Application example: code @WebRtcMediaService(name = "MyWebRtcService", path = "/pathToService") public class MyWebRtcService implements WebRtcMediaHandler { public void onMediaRequest(WebRtcMediaRequest request) { //I can authenticate using any of the Java EE available mechanisms MediaPipelineFactory mpf = request.getMediaPipelineFactory(); MediaPipeline mp = mpf.createMediaPipeline(); //I could decide the type of processing connecting to a DDBB JackVaderFilter filter = mp.newFilter().withType(JackVaderFilter.class).build(); RecorderEndpoint recorder = mp.newRecorderEndpoint().withUri("file:///myFile.webm"); filter.connect(recorder); HttpEndpoint httpEndpoint = mp.newHttpEndpoint().build(); filter.connect(filter); //I could connect only audio or video separately request.startMedia(filter, filter); } To file Media Sink RecorderEndpoint Media Sink Sink Video tag or CDN SRC Media Sink HttpEndpoint : a media server architecture and API – JackVaderFilter http://www.kurento.org To Network Media Source From network WebRtcEndpoint 13
  • 14. Application example: result : a media server architecture and API – http://www.kurento.org 14
  • 15. Media element toolbox Transport Repository Group communications • WebRtcEndpoint • RtpEndpoint • HttpEndpoint • PlayerEndPoint • RecorderEndPoint • MainMixer • GridMixer • RoundRobinMixer Filters • FaceRecognitionFilter (events) • JackVaderFilter • QR/Barcode detector • PlateRecognitionFilter (events) • ColorTrackingFilter (events) And growing … Available as part of : a media server architecture and API – http://www.kurento.org 15
  • 16. Media elements: WebRtcEndpoint • Full implementation of the RTCWeb protocol stack – SRTP – ICE – DTLS • Allow sending and receiving WebRTC flows at the media server infrastructure Media Source WebRTC traffic Media Sink WebRTC traffic WebRtcEndpoint : a media server architecture and API – http://www.kurento.org 16
  • 17. Media elements: HttpEndpoint • Media downloading compatible with the HTML5 video tag – WebM (Chrome, Firefox) – MP4 (Chrome, Firefox, IE, Safari) • Media uploading compatible with HTML file input tag – Multipart support Media Sink HTTP WebM/MP4 HttpEndpoint : a media server architecture and API – http://www.kurento.org 17
  • 18. Media elements: RtpEndpoint • Full-duplex RTP multimedia exchange – – – – H.264 H.263 VP8 Many different audio codecs supported Media Source RTP traffic Media Sink RTP traffic RtpEndpoint : a media server architecture and API – http://www.kurento.org 18
  • 19. Media elements: UriEndpoints • PayerEndpoint – Play media from file or URL • Support for most popular formats • RecorderEndpoint – Record media to file or URL • WebM • MP4 Media Sink RecorderEndpoint Media Source PlayerEndpoint : a media server architecture and API – http://www.kurento.org 19
  • 20. Media elements: Mixers (in progress) • Make possible group communications – ForwardingMixer • • • One-to-many replication of flows A source can be assigned to any of the sinks Multiple sources supported – MainMixer • • • Mixes media A source can be assigned to a combination of sinks Multiple sources supported Media Source Media Sink Media Source Media Sink Mixer Media Sink : a media server architecture and API – http://www.kurento.org Media Source 20
  • 21. Filters Seamless integration into OpenCV Face recognition Augmented reality Subtitle adding Color manipulation QR detection People counter Plate recognition Etc. Filter SRC – – – – – – – – Sink • : a media server architecture and API – http://www.kurento.org 21
  • 22. Filter with events • Filters can provide events to the application – Events are generated at the media server – Events can be propagated to the client app • Code example: MediaPipeline mp = mpf.create(); PlayerEndPoint playerEndPoint = mp.newPlayerEndPoint( "https://ci.kurento.com/video/barcodes.webm").build(); ZBarFilter filter = mp.newZBarFilter().build(); playerEndPoint.connect(filter); Events SRC Media Source Sink filter.addCodeFoundDataListener(new MediaEventListener<CodeFoundEvent>() { @Override public void onEvent(CodeFoundEvent event) { session.publishEvent(new ContentEvent(event.getType(), event.getValue())); ... PlayerEndpoint ZBarFilter : a media server architecture and API – http://www.kurento.org 22
  • 23. The magic of pipelines: Transparent media adaptation • Agnostic media adaptor – Acts every time a source is connected to a sink – Adapts media formats as required by the involved media elements – 100% transparent for the application developer An agnostic media adaptor is “hidden” behind every connection making compatible element formats transparently VP8 H.264 : a media server architecture and API – http://www.kurento.org SRC Media Element Sink SRC Sink Media Element 23
  • 24. Complex examples: Heterogeneous group communications Media Source Media Sink Media Sink RecorderEndpoint WebRtcEndpoint Media Source Mixer Media Sink WebRtcEndpoint Media Source SRC Media Sink Sink Filter RtpEndpoint : a media server architecture and API – http://www.kurento.org 24
  • 25. Complex examples: WebRTC to HTTP Media Source Media Sink Media Sink RecorderEndpoint Mixer WebRtcEndpoint Media Sink HttpEndpoint Mixer Media Sink HttpEndpoint Media Sink HttpEndpoint : a media server architecture and API – http://www.kurento.org
  • 26. Complex examples: WebRTC Playing Media Source Media Sink Media Sink RecorderEndpoint Mixer WebRtcEndpoint Media Sink Filter HttpEndpoint Sink SRC Media Source PlayerEndpoint : a media server architecture and API – http://www.kurento.org 26
  • 27. Kurento’s Roadmap Q1 2014 • Installer and documentation • Group communications • Super scalable media repository Q4 2014 • Kurento cloud infrastructure • Hardware acceleration Q2 2014 2015 • WebRTC support on Android SDK • Kurento iOS SDK • Javascript Media API • Elastric scalable Kurento PaaS platform • SDN Kurento QoS cloud connectivity manager • IMS/Telco infrastructure integration • 3D/Kinect multimedia support : a media server architecture and API – http://www.kurento.org 27
  • 28. Upcoming opportunities for developers • FI-WARE is the platform of the FI-PPP initiative – European Commission FP7 – Kurento is providing multimedia capabilities to FI-WARE • FI-WARE is giving 800K€ in prices to developers – You can opt to them developing on top of Kurento – http://www.fi-ware.eu/challenges/ • FI-PPP is providing 100M€ in funding to SMEs and entrepreneurs – http://www.fi-ppp.eu/how-to-participate/ : a media server architecture and API – http://www.kurento.org 28
  • 29. Collaborations welcome http://www.github.com/kurento Thank you very much for your attention Complains, suggestions and comments can be sent to: Luis López lulop@kurento.org : a media server architecture and API – http://www.kurento.org 29