# OVPro How Display Images with GStreamerFilter

**URL:** <https://openvidu.discourse.group/t/ovpro-how-display-images-with-gstreamerfilter/3642>\
**Category:** Issues developing apps\
**Tags:** v2\
**Created:** [November 30, 2021, 1:31am UTC](https://openvidu.discourse.group/t/ovpro-how-display-images-with-gstreamerfilter/3642 "2021-11-30T01:31:53Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mrussiello](https://avatars.discourse-cdn.com/v4/letter/m/4af34b/32.png) [@mrussiello](https://openvidu.discourse.group/u/mrussiello)\
**Post date:** [November 30, 2021, 1:31am UTC](https://openvidu.discourse.group/t/ovpro-how-display-images-with-gstreamerfilter/3642/1 "2021-11-30T01:31:53Z")

</div>

I am changing over from OpenVidu CE to OpenVidu Pro. I’ve got my pro installation on AWS up and running.

On CE, I show icons on the video window using localOvPublisherObj.stream.applyFilter(‘GStreamerFilter’, {‘command’: cmd })

where cmd=‘gdkpixbufoverlay location=/work/images/mic-off-44px.png offset-x=10 offset-y=420’

Per above, the apply filter command references images that I’ve placed on the openvidu CE server in the /work/images folder. I’ve also edited the docker-compose.yaml file to include this line under kms: volumes:

- /work/images:/work/images

This all works great on CE. kms displays the image icons I specify as overlays on the video.

My question is: How do I do this on OpenVidu Pro, since I cannot manipulate the media nodes. Is there any way?

Thanks,

Mike Russiello  
HR Avatar, Inc.

---

<div class="post-metadata">

**Author:** ![pabloFuente](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/pablofuente/32/2536_2.png) [@pabloFuente](https://openvidu.discourse.group/u/pabloFuente)\
**Post date:** [November 30, 2021, 10:09am UTC](https://openvidu.discourse.group/t/ovpro-how-display-images-with-gstreamerfilter/3642/2 "2021-11-30T10:09:13Z")

</div>

Hello Mike,

It is quite easy if your images are pre-defined. If you know the image files you will be using, then one approach is the following one:

1. Create a custom kurento-media-server docker image, inheriting from the one used by default in the OpenVidu version you are using. For example, for OpenVidu 2.20.0, kurento-media-server:6.16.0 is used ([Releases - OpenVidu Docs](https://docs.openvidu.io/en/stable/releases/#2200))
2. That custom image should copy the image files you need in a known path. For example /work/images.
3. Configure your OpenVidu Master Node to use your custom image, once uploaded to DockerHub. You do so like this: [On premises - OpenVidu Docs](https://docs.openvidu.io/en/stable/deployment/pro/on-premises/#change-kurento-media-server-docker-image). For example: `KMS_IMAGE=your-dockerhub-account/kurento-media-server:6.16.0-custom`

This system is very easy to mantain. But it has a counterpart: your Media Nodes will take a little bit longer to launch, as the new image must be downloaded before booting up.

If you want to use autoscaling or need a very quick launch in your Media Nodes for any reason, then you will have to re-generate the Media Node AMI. You ssh into a running Media Node in your AWS dashboard, download the needed images in the desired path, and generate a new AMI. Then configure your new AMI in `/opt/openvidu/.env` Master Node’s configuration file with property `AWS_IMAGE_ID`

---

<div class="post-metadata">

**Author:** ![mrussiello](https://avatars.discourse-cdn.com/v4/letter/m/4af34b/32.png) [@mrussiello](https://openvidu.discourse.group/u/mrussiello)\
**Post date:** [November 30, 2021, 8:50pm UTC](https://openvidu.discourse.group/t/ovpro-how-display-images-with-gstreamerfilter/3642/3 "2021-11-30T20:50:44Z")

</div>

Thank you Pablo.

That makes sense. I am using autoscaling so have elected to modify a media node, create an ami as you described. I’ve done this and replaced the operating media node with a new one from the new ami. However, I’m still getting this error when I try to apply the filter:

error gdkpixbufoverlay gstgdkpixbufoverlay.c:290 gst\_gdk\_pixbuf\_overlay\_set\_property() Could not load overlay image: Failed to open file ‘/work/images/genericperson-white-400.png’: No such file or directory  
2021-11-30T20:39:22,945300 1 0x00007f2127703700 warning gdkpixbufoverlay gstgdkpixbufoverlay.c:508 gst\_gdk\_pixbuf\_overlay\_start() error: Could not load overlay image.

The file is definitely in /work/images and it has full permissions. Also, I’ve edited /opt/kms/docker-compose.yml to include the path as follows:

services:  
media-node-controller:  
image: openvidu/media-node-controller:5.0.0  
restart: always  
ulimits:  
core: -1  
entrypoint: [’/bin/sh’, ‘-c’, ‘/beats/copy\_config\_files.sh && /usr/local/bin/entrypoint.sh’]  
environment:  
- KMS\_IMAGE=kurento/kurento-media-server:6.16.0  
- MEDIASOUP\_IMAGE=openvidu/mediasoup-controller:2.20.0-beta2  
- METRICBEAT\_IMAGE=[docker.elastic.co/beats/metricbeat-oss:7.8.0](http://docker.elastic.co/beats/metricbeat-oss:7.8.0)  
- FILEBEAT\_IMAGE=[docker.elastic.co/beats/filebeat-oss:7.8.0](http://docker.elastic.co/beats/filebeat-oss:7.8.0)  
- OPENVIDU\_RECORDING\_IMAGE=openvidu/openvidu-recording:2.19.0  
- NO\_COLOR=true  
ports:  
- 3000:3000  
volumes:  
- /opt/openvidu/recordings:/opt/openvidu/recordings  
- /opt/openvidu/beats:/opt/openvidu/beats  
- /var/run/docker.sock:/var/run/docker.sock  
- /opt/openvidu/kurento-logs:/opt/openvidu/kurento-logs  
- ./beats:/beats  
- /work/images:/work/images  
logging:  
options:  
max-size: “100M”

However, it doesn’t seem to be working. Is there somewhere else I should place the files or a different file I should edit so Kurento can find them?

Thanks again,

Mike

---

<div class="post-metadata">

**Author:** ![pabloFuente](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/pablofuente/32/2536_2.png) [@pabloFuente](https://openvidu.discourse.group/u/pabloFuente)\
**Post date:** [December 1, 2021, 10:48am UTC](https://openvidu.discourse.group/t/ovpro-how-display-images-with-gstreamerfilter/3642/4 "2021-12-01T10:48:10Z")

</div>

That’s weird. If you ssh into your new Media Node, and run

`docker exec -it KMS_CONTAINER_ID bash`

And go to path `/work/images` once inside the container… are the images present?  
If that’s the case, then this is a complete mistery.

---

<div class="post-metadata">

**Author:** ![mrussiello](https://avatars.discourse-cdn.com/v4/letter/m/4af34b/32.png) [@mrussiello](https://openvidu.discourse.group/u/mrussiello)\
**Post date:** [December 1, 2021, 12:17pm UTC](https://openvidu.discourse.group/t/ovpro-how-display-images-with-gstreamerfilter/3642/5 "2021-12-01T12:17:03Z")

</div>

Thank you. I was able to find the container id using docker container ls

I was able to log in using sudo docker exec -it KMS\_CONTAINER\_ID bash which worked.

When I tried to cd to /work it says no such file or directory.

I also tried to cd to /opt/openvidu/recordings and that was found no problem. I noticed that /opt/openvidu/recordings is owned by root:root while /work/images was owned by ubuntu:ubuntu. All read write execute privileges were granted though. Anyway - could that be the problem?

I also ran ./media\_node report and I’ve included some snippets below.

I appreciate your help.

# ======================================= = REPORT INFORMATION =

Creation Date: 01-12-2021  
Creation Time: 11:49:03

# ======================================= = MEDIA NODE INFORMATION =

Installation Type: Cloud Formation  
Openvidu Version: 2.20.0

# ======================================= = SYSTEM INFORMATION =

Linux Version:  
- Description: Ubuntu 18.04.5 LTS  
Docker Version: 20.10.8  
Docker Compose Version: 1.25.4

# ======================================= = INSTALLATION INFORMATION =

Installation Folder: /opt/kms  
Installation Folder Tree:

```
 |-media_node
 |-beats
 | |-metricbeat-elasticsearch.yml
 | |-filebeat.yml
 | |-copy_config_files.sh
 |-docker-compose.yml

```

# ======================================= = DOCKER RUNNING SERVICES =

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES  
6d6862fb9abe [docker.elastic.co/beats/filebeat-oss:7.8.0](http://docker.elastic.co/beats/filebeat-oss:7.8.0) “/usr/local/bin/dockâ€¦” 32 minutes ago Up 32 minutes filebeat-elasticsearch  
fde8a2c54e46 [docker.elastic.co/beats/metricbeat-oss:7.8.0](http://docker.elastic.co/beats/metricbeat-oss:7.8.0) “/usr/local/bin/dockâ€¦” 32 minutes ago Up 32 minutes metricbeat-elasticsearch  
bc45eb8379eb kurento/kurento-media-server:6.16.0 “/entrypoint.sh” 32 minutes ago Up 32 minutes (healthy) kms  
c32a44c9a1b7 openvidu/media-node-controller:5.0.0 “/bin/sh -c '/beats/â€¦” 2 months ago Up 32 minutes 0.0.0.0:3000-\>3000/tcp, :::3000-\>3000/tcp kms\_media-node-controller\_1

# ======================================= = CONFIGURATION FILES =

================ .env =================

./media\_node: line 152: /opt/kms/.env: No such file or directory

========= docker-compose.yml ==========

# ------------------------------------------------------------------------------

# 

# DO NOT MODIFY THIS FILE !!!

# 

# Configuration properties should be specified in .env file

# 

# This docker-compose file coordinates all services of OpenVidu CE Platform.

# 

# Openvidu Version: 2.20.0

# 

# Installation Mode: Cloud Formation

# 

# ------------------------------------------------------------------------------

version: ‘3.1’

services:  
media-node-controller:  
image: openvidu/media-node-controller:5.0.0  
restart: always  
ulimits:  
core: -1  
entrypoint: [‘/bin/sh’, ‘-c’, ‘/beats/copy\_config\_files.sh && /usr/local/bin/entrypoint.sh’]  
environment:  
- KMS\_IMAGE=kurento/kurento-media-server:6.16.0  
- MEDIASOUP\_IMAGE=openvidu/mediasoup-controller:2.20.0-beta2  
- METRICBEAT\_IMAGE=[docker.elastic.co/beats/metricbeat-oss:7.8.0](http://docker.elastic.co/beats/metricbeat-oss:7.8.0)  
- FILEBEAT\_IMAGE=[docker.elastic.co/beats/filebeat-oss:7.8.0](http://docker.elastic.co/beats/filebeat-oss:7.8.0)  
- OPENVIDU\_RECORDING\_IMAGE=openvidu/openvidu-recording:2.19.0  
- NO\_COLOR=true  
ports:  
- 3000:3000  
volumes:  
- /opt/openvidu/recordings:/opt/openvidu/recordings  
- /opt/openvidu/beats:/opt/openvidu/beats  
- /var/run/docker.sock:/var/run/docker.sock  
- /opt/openvidu/kurento-logs:/opt/openvidu/kurento-logs  
- ./beats:/beats  
- /work/images:/work/images  
logging:  
options:  
max-size: “100M”

# ======================================= = LOGS =

…

* * *

## kms

- trap on\_error ERR

- BASE\_RTP\_FILE=/etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini

- WEBRTC\_FILE=/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini  
++ id -u

- [[0 -eq 0]]

- [[-n 40000]]

- set\_parameter /etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini minPort 40000

- local FILE=/etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini

- local PARAM=minPort

- local VALUE=40000

- local ‘COMMENT=;’

- local ‘REGEX=^;?\s_minPort=._’

- grep --extended-regexp -q ‘^;?\s_minPort=._’ /etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini

- sed --regexp-extended -i ‘s/^;?\s_minPort=._/minPort=40000/’ /etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini

- [[-n 65535]]

- set\_parameter /etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini maxPort 65535

- local FILE=/etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini

- local PARAM=maxPort

- local VALUE=65535

- local ‘COMMENT=;’

- local ‘REGEX=^;?\s_maxPort=._’

- grep --extended-regexp -q ‘^;?\s_maxPort=._’ /etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini

- sed --regexp-extended -i ‘s/^;?\s_maxPort=._/maxPort=65535/’ /etc/kurento/modules/kurento/BaseRtpEndpoint.conf.ini

- [[-n ‘’]]

- [[-n ‘’]]

- [[-n ‘’]]

- [[-n ‘’]]

- [[-n ‘’]]

- [[-n ‘’]]

- sed /::1/d

- cat /etc/hosts

- tee /etc/hosts

- [[-z ‘’]]

- export ‘GST\_DEBUG=2,Kurento\*:4,kms\*:4,sdp\*:4,webrtc\*:4,_rtpendpoint:4,rtp_handler:4,rtpsynchronizer:4,agnosticbin:4’

- GST\_DEBUG=‘2,Kurento\*:4,kms\*:4,sdp\*:4,webrtc\*:4,_rtpendpoint:4,rtp_handler:4,rtpsynchronizer:4,agnosticbin:4’  
++ id -u

- RUN\_UID=0

- [[-n ‘’]]

- echo ‘[Docker entrypoint] Start Kurento Media Server, UID: 0’

- exec /usr/bin/kurento-media-server ‘’  
[Docker entrypoint] Start Kurento Media Server, UID: 0  
0:00:00.675850544 19 0x222bc70 WARN default gstsf.c:98:gst\_sf\_create\_audio\_template\_caps: format 0x120000: ‘AVR (Audio Visual Research)’ is not mapped  
0:00:00.675886898 19 0x222bc70 WARN default gstsf.c:98:gst\_sf\_create\_audio\_template\_caps: format 0x180000: ‘CAF (Apple Core Audio File)’ is not mapped  
0:00:00.675893350 19 0x222bc70 WARN default gstsf.c:98:gst\_sf\_create\_audio\_template\_caps: format 0x100000: ‘HTK (HMM Tool Kit)’ is not mapped  
0:00:00.675898935 19 0x222bc70 WARN default gstsf.c:98:gst\_sf\_create\_audio\_template\_caps: format 0xc0000: ‘MAT4 (GNU Octave 2.0 / Matlab 4.2)’ is not mapped  
0:00:00.675903788 19 0x222bc70 WARN default gstsf.c:98:gst\_sf\_create\_audio\_template\_caps: format 0xd0000: ‘MAT5 (GNU Octave 2.1 / Matlab 5.0)’ is not mapped  
0:00:00.675909336 19 0x222bc70 WARN default gstsf.c:98:gst\_sf\_create\_audio\_template\_caps: format 0x210000: ‘MPC (Akai MPC 2k)’ is not mapped  
0:00:00.675914610 19 0x222bc70 WARN default gstsf.c:98:gst\_sf\_create\_audio\_template\_caps: format 0xe0000: ‘PVF (Portable Voice Format)’ is not mapped  
0:00:00.675919598 19 0x222bc70 WARN default gstsf.c:98:gst\_sf\_create\_audio\_template\_caps: format 0x160000: ‘SD2 (Sound Designer II)’ is not mapped  
0:00:00.675927471 19 0x222bc70 WARN default gstsf.c:98:gst\_sf\_create\_audio\_template\_caps: format 0x190000: ‘WVE (Psion Series 3)’ is not mapped  
0:00:22.778795673 19 0x222bc70 WARN ladspa gstladspa.c:455:plugin\_init: no LADSPA plugins found, check LADSPA\_PATH

Creating dir for beats  
Copying beat config files  
[Nest] 12 - 09/23/2021, 11:16:42 AM [NestFactory] Starting Nest application…  
[Nest] 12 - 09/23/2021, 11:16:42 AM [InstanceLoader] DiscoveryModule dependencies initialized +43ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [InstanceLoader] ConfigHostModule dependencies initialized +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [InstanceLoader] ScheduleModule dependencies initialized +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [InstanceLoader] ConfigModule dependencies initialized +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM ======== MEDIA NODE CONTROLLER CONFIGURATION ========== +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM RECORDINGS\_SYSTEM\_PATH: /opt/openvidu/recordings +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM LOGS\_DIRECTORIES: /opt/openvidu/kurento-logs +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM MAX\_LOG\_FILES: 10 +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM ======================================================= +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [InstanceLoader] AppModule dependencies initialized +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RoutesResolver] DockerController {/media-node}: +7ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/dockerGatewayIp, GET} route +3ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/getContainerIp/:containerIdOrName, GET} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/getRunningContainers, GET} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/isContainerRunning/:containerNameOrId, GET} route +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/getContainerIdByName/:containerName, GET} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/getContainerByNameOrId/:containerNameOrId, GET} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/getLabelsFromContainerNameOrId/:containerNameOrId, GET} route +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/checkImageExists, POST} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/pullDockerImage, POST} route +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node, POST} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/waitContainer/:containerNameOrId, POST} route +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/stopContainer/:containerNameOrId, DELETE} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/removeContainer/:containerNameOrId, DELETE} route +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/runCommandInContainer/:containerNameOrId, POST} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RoutesResolver] ConfigController {/media-node}: +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/status, GET} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/cpu, GET} route +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/getRequestIp, GET} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/getEnvVariable/:envVariable, GET} route +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/waitForFile, POST} route +1ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [RouterExplorer] Mapped {/media-node/recordings/:recordingId/:recordingFile, DELETE} route +0ms  
[Nest] 12 - 09/23/2021, 11:16:42 AM [NestApplication] Nest application successfully started +14ms  
Creating dir for beats  
Copying beat config files  
[Nest] 11 - 11/29/2021, 10:01:56 PM [NestFactory] Starting Nest application…  
[Nest] 11 - 11/29/2021, 10:01:58 PM [InstanceLoader] DiscoveryModule dependencies initialized +2327ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [InstanceLoader] ConfigHostModule dependencies initialized +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [InstanceLoader] ScheduleModule dependencies initialized +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [InstanceLoader] ConfigModule dependencies initialized +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM ======== MEDIA NODE CONTROLLER CONFIGURATION ========== +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM RECORDINGS\_SYSTEM\_PATH: /opt/openvidu/recordings +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM LOGS\_DIRECTORIES: /opt/openvidu/kurento-logs +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM MAX\_LOG\_FILES: 10 +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM ======================================================= +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [InstanceLoader] AppModule dependencies initialized +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RoutesResolver] DockerController {/media-node}: +4ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/dockerGatewayIp, GET} route +3ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/getContainerIp/:containerIdOrName, GET} route +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/getRunningContainers, GET} route +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/isContainerRunning/:containerNameOrId, GET} route +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/getContainerIdByName/:containerName, GET} route +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/getContainerByNameOrId/:containerNameOrId, GET} route +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/getLabelsFromContainerNameOrId/:containerNameOrId, GET} route +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/checkImageExists, POST} route +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/pullDockerImage, POST} route +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node, POST} route +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/waitContainer/:containerNameOrId, POST} route +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/stopContainer/:containerNameOrId, DELETE} route +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/removeContainer/:containerNameOrId, DELETE} route +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/runCommandInContainer/:containerNameOrId, POST} route +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RoutesResolver] ConfigController {/media-node}: +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/status, GET} route +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/cpu, GET} route +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/getRequestIp, GET} route +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/getEnvVariable/:envVariable, GET} route +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/waitForFile, POST} route +0ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [RouterExplorer] Mapped {/media-node/recordings/:recordingId/:recordingFile, DELETE} route +1ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [NestApplication] Nest application successfully started +29ms  
[Nest] 11 - 11/29/2021, 10:01:58 PM [AuthGuard] First Request from: 172.31.81.87. Security Enabled  
[Nest] 11 - 11/29/2021, 10:01:58 PM [AuthGuard] Valid Request from known OpenVidu IP: 172.31.81.87  
[Nest] 11 - 11/29/2021, 10:01:58 PM [AuthGuard] Valid Request from known OpenVidu IP: 172.31.81.87  
[Nest] 11 - 11/29/2021, 10:01:58 PM [AuthGuard] Valid Request from known OpenVidu IP: 172.31.81.87  
[Nest] 11 - 11/29/2021, 10:01:58 PM [AuthGuard] Valid Request from known OpenVidu IP: 172.31.81.87  
[Nest] 11 - 11/29/2021, 10:01:58 PM [DockerService] Checking if kms container is running  
[Nest] 11 - 11/29/2021, 10:01:58 PM [AuthGuard] Valid Request from known OpenVidu IP: 172.31.81.87  
[Nest] 11 - 11/29/2021, 10:01:58 PM [AuthGuard] Valid Request from known OpenVidu IP: 172.31.81.87  
[Nest] 11 - 11/29/2021, 10:01:58 PM [DockerService] Checking if kms container is running  
[Nest] 11 - 11/29/2021, 10:01:58 PM [DockerService] Launching container kurento/kurento-media-server:6.16.0  
[Nest] 11 - 11/29/2021, 10:01:58 PM [DockerService] Object:  
{  
“Image”: “kurento/kurento-media-server:6.16.0”,  
“name”: “kms”,  
“Env”: [  
“KMS\_MIN\_PORT=40000”,  
“KMS\_MAX\_PORT=65535”,  
“KURENTO\_LOG\_FILE\_SIZE=100”,  
“KURENTO\_NUMBER\_LOG\_FILES=10”,  
“KURENTO\_LOGS\_PATH=/opt/openvidu/kurento-logs”  
],  
“HostConfig”: {  
“AutoRemove”: false,  
“networkMode”: “host”,  
“Binds”: [  
“/opt/openvidu/recordings:/opt/openvidu/recordings”,  
“/opt/openvidu/kms-crashes:/opt/openvidu/kms-crashes”,  
“/opt/openvidu/kurento-logs:/opt/openvidu/kurento-logs”  
],  
“Ulimits”: [  
{  
“Name”: “core”,  
“Soft”: -1,  
“Hard”: -1  
}  
],  
“RestartPolicy”: {  
“Name”: “always”  
}  
},  
“Labels”: {  
“node”: “Media Node”,  
“kms-configuration”: “{"configuration":{"KURENTO\_LOGS\_PATH":"/opt/openvidu/kurento-logs","KMS\_MIN\_PORT":"40000","KURENTO\_LOG\_FILE\_SIZE":"100","KURENTO\_NUMBER\_LOG\_FILES":"10","KMS\_MAX\_PORT":"65535"},"kmsImage":"kurento/kurento-media-server:6.16.0","mediaNodePrivateIp":"172.31.91.33"}”,  
“media-node-private-ip”: “172.31.91.33”  
}  
}

---

<div class="post-metadata">

**Author:** ![pabloFuente](https://yyz2.discourse-cdn.com/free1/user_avatar/openvidu.discourse.group/pablofuente/32/2536_2.png) [@pabloFuente](https://openvidu.discourse.group/u/pabloFuente)\
**Post date:** [December 1, 2021, 4:03pm UTC](https://openvidu.discourse.group/t/ovpro-how-display-images-with-gstreamerfilter/3642/6 "2021-12-01T16:03:25Z")

</div>

Ok, we’ve realised where the problem is just now: it is not enough to modify the docker-compose.yml file in your Media Node. The “volumes” section you have modified won’t work in the kurento-media-server container. As you can see, it is for the “media-node-controller” container (which is the controller for all the services in the Media Node).  
You will have to crete your own kurento-media-server image inheriting with [FROM](https://docs.docker.com/engine/reference/builder/#from), and copying the images in the desired path.  
Then create your new Media Node AMI with this new image already pulled, so new Media Nodes won’t have to download it from DockerHub.  
And don’t forget to set variable `KMS_IMAGE` in your Master Node .env configuration file.

---

<div class="post-metadata">

**Author:** ![mrussiello](https://avatars.discourse-cdn.com/v4/letter/m/4af34b/32.png) [@mrussiello](https://openvidu.discourse.group/u/mrussiello)\
**Post date:** [December 7, 2021, 4:16pm UTC](https://openvidu.discourse.group/t/ovpro-how-display-images-with-gstreamerfilter/3642/7 "2021-12-07T16:16:43Z")

</div>

Thanks for this Pablo. We decided to use image overlays via html/js rather than the gstream
