docker-selenium icon indicating copy to clipboard operation
docker-selenium copied to clipboard

[🐛 Bug]: Not being able to record session using selenium ffmpeg4 in kubernetes

Open rgeko opened this issue 9 months ago • 6 comments

What happened?

I'm trying to record a session using selenium ffmpeg4 in kubernetes but the video pod fails to record (output is in logs below).

The Kubernetes deployment and services files are the following ` apiVersion: v1 kind: PersistentVolume metadata: name: selenium-outputs-pv spec: capacity: storage: 5Gi # Combined storage accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: selenium-storage hostPath: path: /mnt/data/selenium-outputs # Single storage location


apiVersion: v1 kind: PersistentVolumeClaim metadata: name: selenium-outputs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi storageClassName: selenium-storage


apiVersion: apps/v1 kind: Deployment metadata: name: selenium-node-chrome labels: app: selenium spec: replicas: 1 selector: matchLabels: app: selenium-node-chrome template: metadata: labels: app: selenium-node-chrome spec: containers: - name: selenium-node-chrome image: selenium/node-chrome:120.0.6099.62-chromedriver-120.0.6099.62 ports: - containerPort: 5555 name: bind - containerPort: 5900 name: vnc - containerPort: 7900 name: no-vnc env: - name: SE_NODE_HOST value: "selenium-node-chrome" - name: SE_EVENT_BUS_HOST value: "selenium-hub" - name: SE_EVENT_BUS_PUBLISH_PORT value: "4442" - name: SE_EVENT_BUS_SUBSCRIBE_PORT value: "4443" volumeMounts: - mountPath: /dev/shm name: dshm - mountPath: /home/seluser/Downloads name: selenium-outputs subPath: downloads volumes: - name: dshm emptyDir: {} - name: selenium-outputs persistentVolumeClaim: claimName: selenium-outputs-pvc


apiVersion: apps/v1 kind: Deployment metadata: name: chrome-video labels: app: selenium spec: replicas: 1 selector: matchLabels: app: chrome-video template: metadata: labels: app: chrome-video spec: containers: - name: chrome-video image: selenium/video:ffmpeg-4.3.1-20230421 env: - name: DISPLAY_CONTAINER_NAME value: "selenium-node-chrome" - name: FILE_NAME value: "chrome_video.mp4" - name: SE_SCREEN_WIDTH value: "1920" - name: SE_SCREEN_HEIGHT value: "1080" volumeMounts: - name: selenium-outputs mountPath: /videos subPath: videos volumes: - name: selenium-outputs persistentVolumeClaim: claimName: selenium-outputs-pvc


apiVersion: apps/v1 kind: Deployment metadata: name: selenium-hub labels: app: selenium spec: replicas: 1 selector: matchLabels: app: selenium-hub template: metadata: labels: app: selenium-hub spec: containers: - name: selenium-hub image: selenium/hub:4.19.0 ports: - containerPort: 4442 - containerPort: 4443 - containerPort: 4444 livenessProbe: httpGet: path: /status port: 4444 initialDelaySeconds: 10 periodSeconds: 15 timeoutSeconds: 30 readinessProbe: httpGet: path: /status port: 4444 initialDelaySeconds: 5 periodSeconds: 10

apiVersion: v1 kind: Service metadata: name: selenium-hub spec: selector: app: selenium-hub ports: - name: event-bus-publish port: 4442 - name: event-bus-subscribe port: 4443 - name: webdriver port: 4444 type: ClusterIP


apiVersion: v1 kind: Service metadata: name: selenium-node-chrome spec: selector: app: selenium-node-chrome ports: - name: bind port: 5555 targetPort: 5555 - name: vnc protocol: TCP port: 5900 # Internal service port targetPort: 5900 # Container port - name: no-vnc port: 7900 type: ClusterIP `

Command used to start Selenium Grid with Docker (or Kubernetes)

kubectl apply -f selenium

Relevant log output

Waiting before next display check...
Waiting before next display check...
Waiting before next display check...
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.3.0-17ubuntu1~20.04)
  configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
[x11grab @ 0x558641e60b80] Cannot open display selenium-node-chrome:99.0, error 1.
selenium-node-chrome:99.0: Input/output error
2025-02-06 16:03:31,421 INFO exited: video-recording (exit status 1; not expected)

Operating System

Kubernetes

Docker Selenium version (image tag)

selenium/video:ffmpeg-4.3.1-20230421

Selenium Grid chart version (chart version)

No response

rgeko avatar Feb 06 '25 16:02 rgeko