[FFmpeg-user] ffmpeg x11grab on Xvfb interferring with SDL-1.2 app run from docker image

lynx.abraxas at freenet.de lynx.abraxas at freenet.de
Tue Feb 26 23:32:52 EET 2019


Are there known issues when using ffmpeg x11grab to screen cast from Xvfb running an SDL-1.2 app (https://github.com/civctp2/civctp2 does not use OpenGL with SDL) from a docker image (inside GitLab CI)?
Screen casting with ffmeg x11grab from Xvfb running a java-GUI from a docker image (inside GitLab CI) works: https://gitlab.com/romangrothausmann/dind-sikuli/-/jobs/166447668/artifacts/file/start.mpg
and I was also able to use ffmpeg x11grab from X11 on my local PC when runing ctp2 from docker image
but when using the same command to record ctp2 on Xvfb the SDL canvas stays black. My guess is that x11grab somehow irritates SDL but only if run on Xvfb because ctp2 then issues this at startup:

The program 'ctp2' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 13 error_code 2 request_code 130 minor_code 3)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Xvfb and ffmpeg cmds used:

Xvfb $DISPLAY -ac -listen tcp -screen 0 1280x1024x24 
ffmpeg -f x11grab -framerate 25 -video_size 1280x1024 -i $DISPLAY -v error  ${CI_JOB_NAME}.mpg &

see e.g. https://github.com/LynxAbraxas/ctp2DF/blob/c900843393c56c6378f175711045706fdfcc3499/.gitlab-ci.yml#L80

ffmpeg is from the alpine (extension of the dind docker image):
ffmpeg -version
ffmpeg version 3.4.4 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 6.4.0 (Alpine 6.4.0)
configuration: --prefix=/usr --enable-avresample --enable-avfilter --enable-gnutls --enable-gpl --enable-libass --enable-libmp3lame --enable-librtmp --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libx264 --enable-libx265 --enable-libtheora --enable-libv4l2 --enable-postproc --enable-pic --enable-pthreads --enable-shared --enable-libxcb --disable-stripping --disable-static --enable-vaapi --enable-vdpau --enable-libopus --disable-debug
libavutil      55. 78.100 / 55. 78.100
libavcodec     57.107.100 / 57.107.100
libavformat    57. 83.100 / 57. 83.100
libavdevice    57. 10.100 / 57. 10.100
libavfilter     6.107.100 /  6.107.100
libavresample   3.  7.  0 /  3.  7.  0
libswscale      4.  8.100 /  4.  8.100
libswresample   2.  9.100 /  2.  9.100
libpostproc    54.  7.100 / 54.  7.100

Are there any special options to ffmpeg or SDL-1.2 (env-vars or inside code) that could solve this problem?
Any help or hints how to get this to work are very welcome.


More information about the ffmpeg-user mailing list