SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Real-time Multimedia Stream Processing
Developing rich multimedia applications with Kurento
Desarrollando filtros para Kurento
d.fernandezlop@gmail.com
http://www.kurento.org
Open APIs for Open Minds
¿Qué es un filtro?
• Es un MediaElement con una entrada y n
salidas.
• Permite procesar frame a frame todo el
flujo de media.
– Recibe media.
– Procesa las imágenes.
– Envía el media a n destinatarios.
KMS
2
¿Qué es un filtro?
KMS
3
Media PipelineMedia Pipeline
SinkSinkSRCSRC
SinkSink
SRCSRC
SinkSink
SRCSRC
¿Qué es un filtro?
KMS
4
SinkSinkSRCSRC
SinkSink
SinkSink
SRCSRC
SinkSink
SRCSRC
SinkSink
SRCSRC
SinkSink
SRCSRC
WebRtcEndpoint
MirrorFilter PointerDetectorFilter
ChromaFilter FaceOverlayFilter
Media Pipeline
Events (buttons)Change faceChange background
Arquitectura de Kurento
5
Kurento Media ServerKurento Media Server
Capa de transporte ( Apache Thrift)Capa de transporte ( Apache Thrift)
Kurento APIsKurento APIs
ClientesClientes
RecubrimientoRecubrimiento
C++C++
ElementosElementos
GStreamerGStreamer
KURENTOKURENTO
MODELMODEL
DESCRIPTORDESCRIPTOR
GStreamer
6
●
Librería C para el desarrollo de
aplicaciones multimedia.
●
Incluye elementos para reproducir y
manejar diferentes tipos de media.
●
Desarrollo basado en módulos.
●
Gran comunidad de desarrolladores.
OpenCV
7
●
Librería C/C++ para el desarrollo de
aplicaciones de visión artificial.
●
Facilita el acceso a la información de
una imagen.
●
Gran número de métodos
implementados.
●
En constante desarrollo.
●
Mucho código en internet.
Desarrollando un filtro para
Gstreamer con OpenCV
●
Independiente de la arquitectura de
Kurento.
●
Basado en el proyecto
kms-plugin-sample disponible en:
http://github.com/Kurento/kms-plugin-sample
8
Desarrollando un filtro para
Gstreamer con OpenCV
●
Estructura del proyecto.
9
Desarrollando un filtro para
Gstreamer con OpenCV
KMS
10
Desarrollando un filtro para
Gstreamer con OpenCV
KMS
11
Desarrollando un filtro para
Gstreamer con OpenCV
KMS
12
Desarrollando un filtro para
Gstreamer con OpenCV
KMS
13
Desarrollando un filtro para
Gstreamer con OpenCV
KMS
14
●
Para probar nuestro filtro:
●
gst-launch-1.0 --gst-plugin-path=. v4l2src ! videoconvert !
samplefilter type=1 ! videoconvert ! autovideosink
Generando un módulo para Kurento
●
Kurento Model Descriptor (kmd)
– Fichero en formato JSON que describe
nuestro módulo.
– En él se describen el constructor, los
métodos y las propiedades del filtro.
– Además se especifica la versión del
módulo y sus dependencias.
*Disponible a partir de Kurento 5.0.0
15
Generando un módulo para Kurento
●
Kurento Model Descriptor (kmd)
16
Generando un módulo para Kurento
17
●
Fichero CMakeLists.txt
●
Kurento-module-tool + kmd + CMakeLists
– Código C++
●
Código de pegamento.
●
Implementación inicial de las clases del módulo.
– Código Java
– Código JavaScript
18
Generando un módulo para Kurento
Generando un módulo para Kurento
●
Kurento-module-tool + kmd + CMakeLists
– Código C++
●
Código de pegamento.
●
Implementación inicial de las clases del módulo.
– Código Java
– Código JavaScript
19
Generando un módulo para Kurento
●
Kurento-module-tool + kmd + CMakeLists
– Código C++
●
Código de pegamento.
●
Implementación inicial de las clases del módulo.
– Código Java
– Código JavaScript
20
Generando un módulo para Kurento
●
Kurento-module-tool + kmd + CMakeLists
– Código C++
●
Código de pegamento.
●
Implementación inicial de las clases del módulo.
– Código Java
– Código JavaScript
21
Generando un módulo para Kurento
●
Kurento-module-tool + kmd + CMakeLists
– Código C++
●
Código de pegamento.
●
Implementación inicial de las clases del módulo.
– Código Java
– Código JavaScript
22
Generando un módulo para Kurento
●
Desarrollo en la parte C++
23
Generando un módulo para Kurento
●
Generación de código cliente
– Generar el código cliente para acceder
desde las APIs de Kurento.
●
Generar código Java y empaquetarlo
utilizando maven.
●
Generar código JavaScript y
empaquetarlo utilizando npm.
24
Uso en aplicaciones cliente
●
Uso en Java
25
public void onContentRequest(WebRtcContentSession contentSession) throws
Exception {
MediaPipeline mp = contentSession.getMediaPipelineFactory().create();
contentSession.releaseOnTerminate(mp);
WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint().Builder(mp).build();
SamplePlugin samplePlugin = new SamplePlugin().Builder(mp).build();
samplePlugin.setFilterType (1);
samplePlugin.setEdgeThreshold (125);
webRtcEndpoint.connect (samplePlugin);
samplePlugin.connect (webRtcEndpoint);
contentSession.start (webRtcEndpoint);
}
Uso en aplicaciones cliente
●
Uso en JavaScript*
26
var kwsMedia = yield KwsMedia(ws_uri);
var pipeline = yield kwsMedia.create("MediaPipeline");
var webRtc = yield pipeline.create("WebRtcEndpoint");
var filter = yield pipeline.create("SamplePlugin");
yield filter.setFilterType(1);
yield filter.setEdgeThreshold(125);
var answer = yield webRtc.processOffer(offer);
webRtcPeer.processSdpAnswer(answer);
yield webRtc.connect(filter);
yield filter.connect(webRtc);
*Utilizando generators de ECMAScript 6
Para colaborar con Kurento
http://www.github.com/kurento
Muchas gracias por vuestra atención
d.fernandezlop@gmail.com
27

Mais conteúdo relacionado

Semelhante a Desarrollando filtros para Kurento

Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Rodolfo Finochietti
 
App engine
App engineApp engine
App engineThirdWay
 
Mq conceptos y programacion as400
Mq conceptos y programacion as400Mq conceptos y programacion as400
Mq conceptos y programacion as400Giovanny Guillen
 
Creando un Theme con WP Rest API
Creando un Theme con WP Rest APICreando un Theme con WP Rest API
Creando un Theme con WP Rest APIBryan Rojas
 
Final Degree Project SMIT
Final Degree Project SMITFinal Degree Project SMIT
Final Degree Project SMITIvan Pretel
 
Optimización de Contenido Flash para Móviles
Optimización de Contenido Flash para MóvilesOptimización de Contenido Flash para Móviles
Optimización de Contenido Flash para MóvilesEdgar Parada
 
Desarrollo de aplicaciones android con Python
Desarrollo de aplicaciones android con PythonDesarrollo de aplicaciones android con Python
Desarrollo de aplicaciones android con PythonManuel Pérez
 
Acelerar ya no es suficiente #RMC19
Acelerar ya no es suficiente #RMC19Acelerar ya no es suficiente #RMC19
Acelerar ya no es suficiente #RMC19MJ Cachón Yáñez
 
El futuro de las tecnologías frontend y su impacto en la conversión
WebAssembly
El futuro de las tecnologías frontend y su impacto en la conversión
WebAssemblyEl futuro de las tecnologías frontend y su impacto en la conversión
WebAssembly
El futuro de las tecnologías frontend y su impacto en la conversión
WebAssemblyFlat 101
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
Meterpreter en android el desembarco en tu smartphone
Meterpreter en android   el desembarco en tu smartphoneMeterpreter en android   el desembarco en tu smartphone
Meterpreter en android el desembarco en tu smartphoneJASENT
 

Semelhante a Desarrollando filtros para Kurento (20)

Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8
 
Clase_01.pdf
Clase_01.pdfClase_01.pdf
Clase_01.pdf
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Software libre en la oficina técnica.
Software libre en la oficina técnica.Software libre en la oficina técnica.
Software libre en la oficina técnica.
 
App engine
App engineApp engine
App engine
 
Mq conceptos y programacion as400
Mq conceptos y programacion as400Mq conceptos y programacion as400
Mq conceptos y programacion as400
 
Backbeam
BackbeamBackbeam
Backbeam
 
Creando un Theme con WP Rest API
Creando un Theme con WP Rest APICreando un Theme con WP Rest API
Creando un Theme con WP Rest API
 
Final Degree Project SMIT
Final Degree Project SMITFinal Degree Project SMIT
Final Degree Project SMIT
 
Optimización de Contenido Flash para Móviles
Optimización de Contenido Flash para MóvilesOptimización de Contenido Flash para Móviles
Optimización de Contenido Flash para Móviles
 
Desarrollo de aplicaciones android con Python
Desarrollo de aplicaciones android con PythonDesarrollo de aplicaciones android con Python
Desarrollo de aplicaciones android con Python
 
Redes
RedesRedes
Redes
 
Acelerar ya no es suficiente #RMC19
Acelerar ya no es suficiente #RMC19Acelerar ya no es suficiente #RMC19
Acelerar ya no es suficiente #RMC19
 
El futuro de las tecnologías frontend y su impacto en la conversión
WebAssembly
El futuro de las tecnologías frontend y su impacto en la conversión
WebAssemblyEl futuro de las tecnologías frontend y su impacto en la conversión
WebAssembly
El futuro de las tecnologías frontend y su impacto en la conversión
WebAssembly
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
Meterpreter en android el desembarco en tu smartphone
Meterpreter en android   el desembarco en tu smartphoneMeterpreter en android   el desembarco en tu smartphone
Meterpreter en android el desembarco en tu smartphone
 
Alto rendimiento en la web
Alto rendimiento en la webAlto rendimiento en la web
Alto rendimiento en la web
 
Manual jk
Manual jkManual jk
Manual jk
 
Manual jk
Manual jkManual jk
Manual jk
 

Último

tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 

Último (20)

tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 

Desarrollando filtros para Kurento

  • 1. Real-time Multimedia Stream Processing Developing rich multimedia applications with Kurento Desarrollando filtros para Kurento d.fernandezlop@gmail.com http://www.kurento.org Open APIs for Open Minds
  • 2. ¿Qué es un filtro? • Es un MediaElement con una entrada y n salidas. • Permite procesar frame a frame todo el flujo de media. – Recibe media. – Procesa las imágenes. – Envía el media a n destinatarios. KMS 2
  • 3. ¿Qué es un filtro? KMS 3 Media PipelineMedia Pipeline SinkSinkSRCSRC SinkSink SRCSRC SinkSink SRCSRC
  • 4. ¿Qué es un filtro? KMS 4 SinkSinkSRCSRC SinkSink SinkSink SRCSRC SinkSink SRCSRC SinkSink SRCSRC SinkSink SRCSRC WebRtcEndpoint MirrorFilter PointerDetectorFilter ChromaFilter FaceOverlayFilter Media Pipeline Events (buttons)Change faceChange background
  • 5. Arquitectura de Kurento 5 Kurento Media ServerKurento Media Server Capa de transporte ( Apache Thrift)Capa de transporte ( Apache Thrift) Kurento APIsKurento APIs ClientesClientes RecubrimientoRecubrimiento C++C++ ElementosElementos GStreamerGStreamer KURENTOKURENTO MODELMODEL DESCRIPTORDESCRIPTOR
  • 6. GStreamer 6 ● Librería C para el desarrollo de aplicaciones multimedia. ● Incluye elementos para reproducir y manejar diferentes tipos de media. ● Desarrollo basado en módulos. ● Gran comunidad de desarrolladores.
  • 7. OpenCV 7 ● Librería C/C++ para el desarrollo de aplicaciones de visión artificial. ● Facilita el acceso a la información de una imagen. ● Gran número de métodos implementados. ● En constante desarrollo. ● Mucho código en internet.
  • 8. Desarrollando un filtro para Gstreamer con OpenCV ● Independiente de la arquitectura de Kurento. ● Basado en el proyecto kms-plugin-sample disponible en: http://github.com/Kurento/kms-plugin-sample 8
  • 9. Desarrollando un filtro para Gstreamer con OpenCV ● Estructura del proyecto. 9
  • 10. Desarrollando un filtro para Gstreamer con OpenCV KMS 10
  • 11. Desarrollando un filtro para Gstreamer con OpenCV KMS 11
  • 12. Desarrollando un filtro para Gstreamer con OpenCV KMS 12
  • 13. Desarrollando un filtro para Gstreamer con OpenCV KMS 13
  • 14. Desarrollando un filtro para Gstreamer con OpenCV KMS 14 ● Para probar nuestro filtro: ● gst-launch-1.0 --gst-plugin-path=. v4l2src ! videoconvert ! samplefilter type=1 ! videoconvert ! autovideosink
  • 15. Generando un módulo para Kurento ● Kurento Model Descriptor (kmd) – Fichero en formato JSON que describe nuestro módulo. – En él se describen el constructor, los métodos y las propiedades del filtro. – Además se especifica la versión del módulo y sus dependencias. *Disponible a partir de Kurento 5.0.0 15
  • 16. Generando un módulo para Kurento ● Kurento Model Descriptor (kmd) 16
  • 17. Generando un módulo para Kurento 17 ● Fichero CMakeLists.txt
  • 18. ● Kurento-module-tool + kmd + CMakeLists – Código C++ ● Código de pegamento. ● Implementación inicial de las clases del módulo. – Código Java – Código JavaScript 18 Generando un módulo para Kurento
  • 19. Generando un módulo para Kurento ● Kurento-module-tool + kmd + CMakeLists – Código C++ ● Código de pegamento. ● Implementación inicial de las clases del módulo. – Código Java – Código JavaScript 19
  • 20. Generando un módulo para Kurento ● Kurento-module-tool + kmd + CMakeLists – Código C++ ● Código de pegamento. ● Implementación inicial de las clases del módulo. – Código Java – Código JavaScript 20
  • 21. Generando un módulo para Kurento ● Kurento-module-tool + kmd + CMakeLists – Código C++ ● Código de pegamento. ● Implementación inicial de las clases del módulo. – Código Java – Código JavaScript 21
  • 22. Generando un módulo para Kurento ● Kurento-module-tool + kmd + CMakeLists – Código C++ ● Código de pegamento. ● Implementación inicial de las clases del módulo. – Código Java – Código JavaScript 22
  • 23. Generando un módulo para Kurento ● Desarrollo en la parte C++ 23
  • 24. Generando un módulo para Kurento ● Generación de código cliente – Generar el código cliente para acceder desde las APIs de Kurento. ● Generar código Java y empaquetarlo utilizando maven. ● Generar código JavaScript y empaquetarlo utilizando npm. 24
  • 25. Uso en aplicaciones cliente ● Uso en Java 25 public void onContentRequest(WebRtcContentSession contentSession) throws Exception { MediaPipeline mp = contentSession.getMediaPipelineFactory().create(); contentSession.releaseOnTerminate(mp); WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint().Builder(mp).build(); SamplePlugin samplePlugin = new SamplePlugin().Builder(mp).build(); samplePlugin.setFilterType (1); samplePlugin.setEdgeThreshold (125); webRtcEndpoint.connect (samplePlugin); samplePlugin.connect (webRtcEndpoint); contentSession.start (webRtcEndpoint); }
  • 26. Uso en aplicaciones cliente ● Uso en JavaScript* 26 var kwsMedia = yield KwsMedia(ws_uri); var pipeline = yield kwsMedia.create("MediaPipeline"); var webRtc = yield pipeline.create("WebRtcEndpoint"); var filter = yield pipeline.create("SamplePlugin"); yield filter.setFilterType(1); yield filter.setEdgeThreshold(125); var answer = yield webRtc.processOffer(offer); webRtcPeer.processSdpAnswer(answer); yield webRtc.connect(filter); yield filter.connect(webRtc); *Utilizando generators de ECMAScript 6
  • 27. Para colaborar con Kurento http://www.github.com/kurento Muchas gracias por vuestra atención d.fernandezlop@gmail.com 27