SlideShare una empresa de Scribd logo
1 de 31
Open APIs for Open Minds
The Stream Oriented Generic Enabler – SO GE
Developing rich multimedia applications with FI-WARE.
Speakers
1
 Luis López
• Leader of the Kurento project
• As. Prof. at URJC
• Coordinator of the Stream Oriented GE at
FI-WARE
 Jose Antonio Santos
• Chief Architect of Kurento project
• Senior Developer at Naevatec
• Researcher at FI-WARE project
The Stream Oriented Generic Enabler – SO GE
2
• Send and receive media (Multidevice/multiprotocol)
• Process media (Computer vision, augmented reality, media indexing, etc.)
• Transform and adapt media (H.264, H.263, VP8, Ogg, and others)
Provides multimedia capabilities to the FI-WARE infrastructure
• No need of protocol/codec low level understanding
Exposes those capabilities through a simple to use API
• LGPL 2.1
Is distributed through a flexible FOSS licence
• Sorry for the instabilities…
Is still work in progress
How media APIs (usually) work
3
Client side
- WWW browser
- Native API
Server side
- Media repositories
- Media capabilities
Hey, I want to send/receive media in this way
Here you have the media you requested
API API
The SO-GE API is a WWW inspired API
4
 Dynamic WWW page development
• Lots of capabilities (ex. Java EE)
 Multimedia development with the SO-GE
• Don’t want to loose any capability
Create HTML
- DDBB access
- Transactions
- Security tools
- Etc.
HTTP request:
I want this resource
HTTP response:
The resource
Create Media
- Media API
- DDBB access
- Transactions
- Security tools
- Etc.
HTTP request:
I want this media
HTTP response:
The media is here
The SO-GE Media API: media elements and pipelines
5
 Media Element
• Provides a specific media functionality
› Building block
› Send/receive media
› Process media
› Transform media
• The Media API provides a toolbox of
media elements ready to be used.
• New media elements can be added
 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
File Source
SRC
Ogg-demuxer
Sink
SRC
Vorbis-decoder
Sink
SRC
Audio-sink
Sink
Theora-decoder
Sink
SRC
Video-sink
Sink
The global vision of a SO-GE application
6
SO-GE Media Server Infrastructure
Decode
Video
Augmented
Reality
Encode
Video
Computer
Vision
Video Playing
and Recording
Examples of media elements: HttpEndPoint
7
HttpEndPoint
 Function
• Sends/receives media basing on HTTP
transports (HTML5 video tag)
• Associates media to a temporary-one-
time-use URL
 Formats
• WebM
• H.264 support under development
 Input parameters
• None
HttpEndPoint
Media
Source
Media
Sink
HTTP POST
requests
HTTP
answers
Example of media elements: RtpEndPoint
8
RtpEndPoint
 Function
• Sends/receives media basing on RTP
transports (Real Time Communications).
• Negotiates media parameterization
through SDPs
 Formats
• H.263, MPEG4, H.264, VP8
 Input parameters
• Input SDP
RtpEndPoint
Media
Source
Media
Sink
RTP input
media
RTP output
media
Example of media elements: PlayerEndPoint
9
PlayerEndPoint
 Function
• Plays media from file or URI.
 Formats
• WebM
• MP4 (H.264)
• 3GPP
• AVI
• Etc.
 Input parameters
• File URI
PlayerEndPoint
Media
Source
Media from
file or URI
Example of media elements: RecorderEndPoint
10
RecorderEndPoint
 Function
• Records media into a file.
 Formats
• WebM
• H.264 formats under development
 Input parameters
• File path
RecorderEndPoint
Media
Source
Media
Sink
Media to
file
Example of media elements: JackVaderFilter
11
JackVaderFilter
 Function
• Example of filter
• Recognizes faces
• Adds a Jack Sparrow or Darth Vader hat
onto faces
 Formats
• Raw
 Input parameters
• None
JackVaderFilter
Sink
SRC
Media
Stream
Augmented
Media stream
Example of media elements: ZBarFilter
12
ZBarFilter
 Function
• Example of filter
• Recognizes Bar and QR codes
• Generates events
 Formats
• Raw
 Input parameters
• None
ZBarFilter
Sink
SRC
Media
Stream
Media
stream
Event
Developing media application with the SO-GE
 Runtime environment
• Install Kurento Media Server (soon available at FI-LAB)
• Install JBoss Java EE container (soon available at FI-LAB)
 Development environment
• Maven (repository: http://repository.kurento.com/archiva/repository/snapshots)
• Soon available at maven central
› kmf-content-api
› Provides handers
› kmf-media-api
› Provides media elements and pipelines
• Eclipse
• Javascript libraries (available at the same repository)
› kws-content-api
13
My first application with the SO-GE: play a video
14
HttpEndPoint
Media
Source
Media
Sink
PlayerEndPoint
Media
Source
Media from
file or URI
HTTP media
streaming
Client side Server side
My first application with the SO-GE: play a video
 Source code …
15
My second application: including a simple filter
16
HttpEndPoint
Media
Source
Media
Sink
PlayerEndPoint
Media
Source
HTTP media
streaming
JackVaderFilter
Sink
SRC
Client side Server side
My second application: including a simple filter
 Source code …
17
Making it more fun: introducing real time media
18
Media
Source
Media
Sink
Real time
media
HTTP media
streaming
JackVaderFilter
Sink
SRC
RtpEndPoint
Media
Source
Media
Sink
Client side Client sideServer Side
Making it more fun: introducing real time media
 Source code …
19
Programming with media events: the ZBarFilter
20
Real time
media
ZBarFilter
Sink
SRC
RtpEndPoint
Media
Source
Media
Sink
HttpEndPoint
Media
Source
Media
Sink
Media events to browser
Client side Client sideServer Side
Programming with media events: the ZBarFilter
 Source code …
21
Digging into the media API: implementing your own
filters: requirements
 Requirements
• GStreamer
› Based on GObject and GLib
› C programing skills needed
• OpenCV or your preferred image processing software
• C++ basic knowledge
• Thrift basic knowledge
22
Digging into the media API: implementing your own
filters: GStreamer media element implementation
 Download media server source code
 Look for sub-module gst-kurento-plugins
 Enter into src/filters folder
 Create your filter as couple of filtername.c filtername.h files
• Your filter must inherit from GstVideoFilter
• You have to implement virtual method transform_frame_ip
› This method gives you each frame to be processed
• Be aware of init and finalize functions if you use attributes that need to be freed
23
Digging into the media API: implementing your own
filters: Integration in media server
 Modify kms-interface/mediaServer.thrift file adding a new value to enum FilterType
 Create a C++ file to manage your GStreamer filter (by convention we use the same name in camel
case)
• This class inherits from kurento::Filter class
• Its constructor creates a “filterelement” gstreamer element and add your filter name as a
parameter (it will be created automatically)
• Destructor should free this element
 Modify kurento::MediaPipeline::createFilter method in order to add your filter type in the switch
statement
24
Facing the FI-WARE challenge using the SO-GE
 Getting started
• Use the FI-WARE Catalogue (ready since 15 minutes ago hopefully!)
› http://catalogue.fi-ware.eu/enablers/stream-oriented-kurento/
• Ask the SO-GE team around the FI-WARE stand
 Augmenting videos in novel ways
• Sensor information on live stream videos
› Pollution/noise/traffic  Red-filtering level
• Combine audio-visual & sensor information through augmented reality
› Thermometers, charts, gauges on top of a media flow.
 Make a camera to become an advanced sensor using computer vision
• Traffic status
› Car counter
• Weather
› Sky/ground color
 Conceive novel WWW and Smartphone interaction GUIs
• Up to your imagination
25
 http://fi-ppp.eu
 http://fi-ware.eu
 Follow @Fiware on Twitter !
Thanks !
26
Technical details: Javascript KwsContent API
 Creating a media connection
• conn = new KwsContent(uri, options);
• Options
› remoteVideoTag: id of the video tag rendering the remote stream
› Others for WebRtc (currently not available)
• Semantics
› Connects to URI and requests media
› Upon media reception, renders it on the specified video tag
 Adding event handlers
• conn.onstart( function …
• conn.onremotestream (function …
• conn.onterminate( function …
• conn.onmediaevent( function …
27
The SO-GE Content API: handlers
 Handler
• Is implemented by the application developer (equivalent to a Servlet)
• Defines the sequence of instructions executed when a request for media is received
 Four types
• PlayerHandler
› Handles requests for playing media with HTTP transport
› Compatible with the HTML5 video tag
• RecorderHandler
› Handlers request for recording media with HTML transport
› Compatible with HTTP file upload mechanism
• RtpMediaHandler
› Handlers request for establishing RTP media sessions
• WebRtcMediaHandler (under development)
28
Applica on logic
Applica on Server (JBosss/Mobicents)Media Server
Flash Video
Server
HTTP ServeletSIP Servlet
Media
element
proxies
Media Session (signaling)
Server side signaling plane
IP Network (remote clients)
Media Session (media plane)
SIPSignaling
Media
events
RESTfulSignaling
RAWHTTPSignaling
OtherSignaling
Other JEE
SOAPSignaling
Media applica on (App. logic)
Media
Repository
Input
Element
Decoder
AR Filter
CV Filter
Encoder
Adaptor
Output
Element
Incomingmediastream
Outgoingmediastream
Media message bus
Control
commands
Technical details: the SO-GE Architecture
29
PlayerHanlderinternaldetails:
sequencediagram
30
Player Handler Servlet Media ServerClient
Player Handler
(Applica on logic)
PlayRequest
Applica on Server
POST Content URL
create()
onMediaRequest(playHandler)
Addi onal logic
play(source)
create(h pEndPoint)
connect(source,
h pEndPoint)
h pEndPoint.getURL
Assigned URL
(JSON object)
200 OK
(JSON object)
build media
pipeline
createPipeline
create(media-element)
create, connect, etc.
GET URL
Media

Más contenido relacionado

La actualidad más candente

WebRTC business models beyond calls
WebRTC business models beyond callsWebRTC business models beyond calls
WebRTC business models beyond callsLuis Lopez
 
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
 
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
 
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
 
Advanced Kurento Real Time Media Stream Processing
Advanced Kurento Real Time Media Stream ProcessingAdvanced Kurento Real Time Media Stream Processing
Advanced Kurento Real Time Media Stream ProcessingFIWARE
 
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
 
Kurento v6 Development Guide
Kurento v6 Development GuideKurento v6 Development Guide
Kurento v6 Development GuideBoni García
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Lorenzo Miniero
 
How ORTC adds Power to WebRTC - London April 1, 2014
How ORTC adds Power to WebRTC - London April 1, 2014 How ORTC adds Power to WebRTC - London April 1, 2014
How ORTC adds Power to WebRTC - London April 1, 2014 Hookflash
 
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
 
WebRTC: A front-end perspective
WebRTC: A front-end perspectiveWebRTC: A front-end perspective
WebRTC: A front-end perspectiveshwetank
 
Media processing with serverless architecture
Media processing with serverless architectureMedia processing with serverless architecture
Media processing with serverless architectureKensaku Komatsu
 
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
 
A Tour of Open Source on the Mainframe
A Tour of Open Source on the MainframeA Tour of Open Source on the Mainframe
A Tour of Open Source on the MainframeAll Things Open
 

La actualidad más candente (20)

WebRTC business models beyond calls
WebRTC business models beyond callsWebRTC business models beyond calls
WebRTC business models beyond calls
 
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
 
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
 
Kurento FIWARE
Kurento FIWAREKurento FIWARE
Kurento FIWARE
 
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...
 
Advanced Kurento Real Time Media Stream Processing
Advanced Kurento Real Time Media Stream ProcessingAdvanced Kurento Real Time Media Stream Processing
Advanced Kurento Real Time Media Stream Processing
 
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...
 
NUBOMEDIA Webinar
NUBOMEDIA WebinarNUBOMEDIA Webinar
NUBOMEDIA Webinar
 
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
 
Kurento v6 Development Guide
Kurento v6 Development GuideKurento v6 Development Guide
Kurento v6 Development Guide
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020
 
How ORTC adds Power to WebRTC - London April 1, 2014
How ORTC adds Power to WebRTC - London April 1, 2014 How ORTC adds Power to WebRTC - London April 1, 2014
How ORTC adds Power to WebRTC - London April 1, 2014
 
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
 
WebRTC: A front-end perspective
WebRTC: A front-end perspectiveWebRTC: A front-end perspective
WebRTC: A front-end perspective
 
Media processing with serverless architecture
Media processing with serverless architectureMedia processing with serverless architecture
Media processing with serverless architecture
 
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)
 
A Tour of Open Source on the Mainframe
A Tour of Open Source on the MainframeA Tour of Open Source on the Mainframe
A Tour of Open Source on the Mainframe
 

Similar a Open APIs and Multimedia Apps with FI-WARE

Windows Azure Media Services June 2013 update
Windows Azure Media Services June 2013 updateWindows Azure Media Services June 2013 update
Windows Azure Media Services June 2013 updateMingfei Yan
 
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
 
ReproNow—Save Time Reproducing and Triaging Security Bugs
ReproNow—Save Time Reproducing and Triaging Security BugsReproNow—Save Time Reproducing and Triaging Security Bugs
ReproNow—Save Time Reproducing and Triaging Security BugsPriyanka Aash
 
Android media framework overview
Android media framework overviewAndroid media framework overview
Android media framework overviewJerrin George
 
JAM316 - Native API Deep Dive: Multimedia Playback & Streaming
JAM316 - Native API Deep Dive: Multimedia Playback & StreamingJAM316 - Native API Deep Dive: Multimedia Playback & Streaming
JAM316 - Native API Deep Dive: Multimedia Playback & StreamingDr. Ranbijay Kumar
 
Nextcloud Android App Development Process Insights
Nextcloud Android App Development Process InsightsNextcloud Android App Development Process Insights
Nextcloud Android App Development Process InsightsAndy Scherzinger
 
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...sparkfabrik
 
BigBlueButton Platform Components
BigBlueButton Platform ComponentsBigBlueButton Platform Components
BigBlueButton Platform ComponentsRIADVICE
 
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...Jean Vanderdonckt
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERIndrajit Poddar
 
Arcomem training Specifying Crawls Beginners
Arcomem training Specifying Crawls BeginnersArcomem training Specifying Crawls Beginners
Arcomem training Specifying Crawls Beginnersarcomem
 
Evolution of Applications & Web
Evolution of Applications & WebEvolution of Applications & Web
Evolution of Applications & WebHimanshu Jindal
 
Streaming video to html
Streaming video to htmlStreaming video to html
Streaming video to htmljeff tapper
 
Media Source Extensions
Media Source ExtensionsMedia Source Extensions
Media Source ExtensionsFITC
 
Spring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionSpring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionStefan Schmidt
 
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)Chris Adamson
 
Software update for IoT Embedded World 2017
Software update for IoT Embedded World 2017Software update for IoT Embedded World 2017
Software update for IoT Embedded World 2017Chris Simmonds
 
Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...
Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...
Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...ITCamp
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...Amir Zmora
 
122 naver-deview2013-tizen-universal-device-platform-r20131014
122 naver-deview2013-tizen-universal-device-platform-r20131014122 naver-deview2013-tizen-universal-device-platform-r20131014
122 naver-deview2013-tizen-universal-device-platform-r20131014NAVER D2
 

Similar a Open APIs and Multimedia Apps with FI-WARE (20)

Windows Azure Media Services June 2013 update
Windows Azure Media Services June 2013 updateWindows Azure Media Services June 2013 update
Windows Azure Media Services June 2013 update
 
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
 
ReproNow—Save Time Reproducing and Triaging Security Bugs
ReproNow—Save Time Reproducing and Triaging Security BugsReproNow—Save Time Reproducing and Triaging Security Bugs
ReproNow—Save Time Reproducing and Triaging Security Bugs
 
Android media framework overview
Android media framework overviewAndroid media framework overview
Android media framework overview
 
JAM316 - Native API Deep Dive: Multimedia Playback & Streaming
JAM316 - Native API Deep Dive: Multimedia Playback & StreamingJAM316 - Native API Deep Dive: Multimedia Playback & Streaming
JAM316 - Native API Deep Dive: Multimedia Playback & Streaming
 
Nextcloud Android App Development Process Insights
Nextcloud Android App Development Process InsightsNextcloud Android App Development Process Insights
Nextcloud Android App Development Process Insights
 
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
 
BigBlueButton Platform Components
BigBlueButton Platform ComponentsBigBlueButton Platform Components
BigBlueButton Platform Components
 
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
 
Arcomem training Specifying Crawls Beginners
Arcomem training Specifying Crawls BeginnersArcomem training Specifying Crawls Beginners
Arcomem training Specifying Crawls Beginners
 
Evolution of Applications & Web
Evolution of Applications & WebEvolution of Applications & Web
Evolution of Applications & Web
 
Streaming video to html
Streaming video to htmlStreaming video to html
Streaming video to html
 
Media Source Extensions
Media Source ExtensionsMedia Source Extensions
Media Source Extensions
 
Spring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionSpring Roo Add-On Development & Distribution
Spring Roo Add-On Development & Distribution
 
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
 
Software update for IoT Embedded World 2017
Software update for IoT Embedded World 2017Software update for IoT Embedded World 2017
Software update for IoT Embedded World 2017
 
Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...
Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...
Programming on Windows 8.1: The New Stream and Storage Paradigm (Raffaele Ria...
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
 
122 naver-deview2013-tizen-universal-device-platform-r20131014
122 naver-deview2013-tizen-universal-device-platform-r20131014122 naver-deview2013-tizen-universal-device-platform-r20131014
122 naver-deview2013-tizen-universal-device-platform-r20131014
 

Último

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
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
 
"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
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Último (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
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
 
"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
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
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?
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Open APIs and Multimedia Apps with FI-WARE

  • 1. Open APIs for Open Minds The Stream Oriented Generic Enabler – SO GE Developing rich multimedia applications with FI-WARE.
  • 2. Speakers 1  Luis López • Leader of the Kurento project • As. Prof. at URJC • Coordinator of the Stream Oriented GE at FI-WARE  Jose Antonio Santos • Chief Architect of Kurento project • Senior Developer at Naevatec • Researcher at FI-WARE project
  • 3. The Stream Oriented Generic Enabler – SO GE 2 • Send and receive media (Multidevice/multiprotocol) • Process media (Computer vision, augmented reality, media indexing, etc.) • Transform and adapt media (H.264, H.263, VP8, Ogg, and others) Provides multimedia capabilities to the FI-WARE infrastructure • No need of protocol/codec low level understanding Exposes those capabilities through a simple to use API • LGPL 2.1 Is distributed through a flexible FOSS licence • Sorry for the instabilities… Is still work in progress
  • 4. How media APIs (usually) work 3 Client side - WWW browser - Native API Server side - Media repositories - Media capabilities Hey, I want to send/receive media in this way Here you have the media you requested API API
  • 5. The SO-GE API is a WWW inspired API 4  Dynamic WWW page development • Lots of capabilities (ex. Java EE)  Multimedia development with the SO-GE • Don’t want to loose any capability Create HTML - DDBB access - Transactions - Security tools - Etc. HTTP request: I want this resource HTTP response: The resource Create Media - Media API - DDBB access - Transactions - Security tools - Etc. HTTP request: I want this media HTTP response: The media is here
  • 6. The SO-GE Media API: media elements and pipelines 5  Media Element • Provides a specific media functionality › Building block › Send/receive media › Process media › Transform media • The Media API provides a toolbox of media elements ready to be used. • New media elements can be added  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 File Source SRC Ogg-demuxer Sink SRC Vorbis-decoder Sink SRC Audio-sink Sink Theora-decoder Sink SRC Video-sink Sink
  • 7. The global vision of a SO-GE application 6 SO-GE Media Server Infrastructure Decode Video Augmented Reality Encode Video Computer Vision Video Playing and Recording
  • 8. Examples of media elements: HttpEndPoint 7 HttpEndPoint  Function • Sends/receives media basing on HTTP transports (HTML5 video tag) • Associates media to a temporary-one- time-use URL  Formats • WebM • H.264 support under development  Input parameters • None HttpEndPoint Media Source Media Sink HTTP POST requests HTTP answers
  • 9. Example of media elements: RtpEndPoint 8 RtpEndPoint  Function • Sends/receives media basing on RTP transports (Real Time Communications). • Negotiates media parameterization through SDPs  Formats • H.263, MPEG4, H.264, VP8  Input parameters • Input SDP RtpEndPoint Media Source Media Sink RTP input media RTP output media
  • 10. Example of media elements: PlayerEndPoint 9 PlayerEndPoint  Function • Plays media from file or URI.  Formats • WebM • MP4 (H.264) • 3GPP • AVI • Etc.  Input parameters • File URI PlayerEndPoint Media Source Media from file or URI
  • 11. Example of media elements: RecorderEndPoint 10 RecorderEndPoint  Function • Records media into a file.  Formats • WebM • H.264 formats under development  Input parameters • File path RecorderEndPoint Media Source Media Sink Media to file
  • 12. Example of media elements: JackVaderFilter 11 JackVaderFilter  Function • Example of filter • Recognizes faces • Adds a Jack Sparrow or Darth Vader hat onto faces  Formats • Raw  Input parameters • None JackVaderFilter Sink SRC Media Stream Augmented Media stream
  • 13. Example of media elements: ZBarFilter 12 ZBarFilter  Function • Example of filter • Recognizes Bar and QR codes • Generates events  Formats • Raw  Input parameters • None ZBarFilter Sink SRC Media Stream Media stream Event
  • 14. Developing media application with the SO-GE  Runtime environment • Install Kurento Media Server (soon available at FI-LAB) • Install JBoss Java EE container (soon available at FI-LAB)  Development environment • Maven (repository: http://repository.kurento.com/archiva/repository/snapshots) • Soon available at maven central › kmf-content-api › Provides handers › kmf-media-api › Provides media elements and pipelines • Eclipse • Javascript libraries (available at the same repository) › kws-content-api 13
  • 15. My first application with the SO-GE: play a video 14 HttpEndPoint Media Source Media Sink PlayerEndPoint Media Source Media from file or URI HTTP media streaming Client side Server side
  • 16. My first application with the SO-GE: play a video  Source code … 15
  • 17. My second application: including a simple filter 16 HttpEndPoint Media Source Media Sink PlayerEndPoint Media Source HTTP media streaming JackVaderFilter Sink SRC Client side Server side
  • 18. My second application: including a simple filter  Source code … 17
  • 19. Making it more fun: introducing real time media 18 Media Source Media Sink Real time media HTTP media streaming JackVaderFilter Sink SRC RtpEndPoint Media Source Media Sink Client side Client sideServer Side
  • 20. Making it more fun: introducing real time media  Source code … 19
  • 21. Programming with media events: the ZBarFilter 20 Real time media ZBarFilter Sink SRC RtpEndPoint Media Source Media Sink HttpEndPoint Media Source Media Sink Media events to browser Client side Client sideServer Side
  • 22. Programming with media events: the ZBarFilter  Source code … 21
  • 23. Digging into the media API: implementing your own filters: requirements  Requirements • GStreamer › Based on GObject and GLib › C programing skills needed • OpenCV or your preferred image processing software • C++ basic knowledge • Thrift basic knowledge 22
  • 24. Digging into the media API: implementing your own filters: GStreamer media element implementation  Download media server source code  Look for sub-module gst-kurento-plugins  Enter into src/filters folder  Create your filter as couple of filtername.c filtername.h files • Your filter must inherit from GstVideoFilter • You have to implement virtual method transform_frame_ip › This method gives you each frame to be processed • Be aware of init and finalize functions if you use attributes that need to be freed 23
  • 25. Digging into the media API: implementing your own filters: Integration in media server  Modify kms-interface/mediaServer.thrift file adding a new value to enum FilterType  Create a C++ file to manage your GStreamer filter (by convention we use the same name in camel case) • This class inherits from kurento::Filter class • Its constructor creates a “filterelement” gstreamer element and add your filter name as a parameter (it will be created automatically) • Destructor should free this element  Modify kurento::MediaPipeline::createFilter method in order to add your filter type in the switch statement 24
  • 26. Facing the FI-WARE challenge using the SO-GE  Getting started • Use the FI-WARE Catalogue (ready since 15 minutes ago hopefully!) › http://catalogue.fi-ware.eu/enablers/stream-oriented-kurento/ • Ask the SO-GE team around the FI-WARE stand  Augmenting videos in novel ways • Sensor information on live stream videos › Pollution/noise/traffic  Red-filtering level • Combine audio-visual & sensor information through augmented reality › Thermometers, charts, gauges on top of a media flow.  Make a camera to become an advanced sensor using computer vision • Traffic status › Car counter • Weather › Sky/ground color  Conceive novel WWW and Smartphone interaction GUIs • Up to your imagination 25
  • 27.  http://fi-ppp.eu  http://fi-ware.eu  Follow @Fiware on Twitter ! Thanks ! 26
  • 28. Technical details: Javascript KwsContent API  Creating a media connection • conn = new KwsContent(uri, options); • Options › remoteVideoTag: id of the video tag rendering the remote stream › Others for WebRtc (currently not available) • Semantics › Connects to URI and requests media › Upon media reception, renders it on the specified video tag  Adding event handlers • conn.onstart( function … • conn.onremotestream (function … • conn.onterminate( function … • conn.onmediaevent( function … 27
  • 29. The SO-GE Content API: handlers  Handler • Is implemented by the application developer (equivalent to a Servlet) • Defines the sequence of instructions executed when a request for media is received  Four types • PlayerHandler › Handles requests for playing media with HTTP transport › Compatible with the HTML5 video tag • RecorderHandler › Handlers request for recording media with HTML transport › Compatible with HTTP file upload mechanism • RtpMediaHandler › Handlers request for establishing RTP media sessions • WebRtcMediaHandler (under development) 28
  • 30. Applica on logic Applica on Server (JBosss/Mobicents)Media Server Flash Video Server HTTP ServeletSIP Servlet Media element proxies Media Session (signaling) Server side signaling plane IP Network (remote clients) Media Session (media plane) SIPSignaling Media events RESTfulSignaling RAWHTTPSignaling OtherSignaling Other JEE SOAPSignaling Media applica on (App. logic) Media Repository Input Element Decoder AR Filter CV Filter Encoder Adaptor Output Element Incomingmediastream Outgoingmediastream Media message bus Control commands Technical details: the SO-GE Architecture 29
  • 31. PlayerHanlderinternaldetails: sequencediagram 30 Player Handler Servlet Media ServerClient Player Handler (Applica on logic) PlayRequest Applica on Server POST Content URL create() onMediaRequest(playHandler) Addi onal logic play(source) create(h pEndPoint) connect(source, h pEndPoint) h pEndPoint.getURL Assigned URL (JSON object) 200 OK (JSON object) build media pipeline createPipeline create(media-element) create, connect, etc. GET URL Media