editly: Error: gl returned null (missing dependencies)

While attempting to run the “kenBurns” example in a Debian docker image (using a node:14-stretch base image) I get the following error:

640x640 25fps
Error: gl returned null, this probably means that some dependencies are not installed. See README.
    at module.exports (/usr/local/lib/node_modules/editly/glTransitions.js:12:11)
    at module.exports (/usr/local/lib/node_modules/editly/index.js:265:36)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async /usr/local/lib/node_modules/editly/cli.js:124:3

For reference, here’s the Dockerfile I’m using:

FROM node:14-stretch

RUN apt-get -qq update \
  && apt-get -qq install \
    build-essential \
    libcairo2-dev \
    libpango1.0-dev \
    libjpeg-dev \
    libgif-dev \
    librsvg2-dev \
    libxi-dev \
    libglu1-mesa-dev \
    libglew-dev \
    pkg-config \
    python2.7 \
    python-pip \
    ffmpeg

RUN mkdir -p /opt/node \
  && cd /opt/node \
  && npm install --global --unsafe-perm editly

About this issue

  • Original URL
  • State: open
  • Created 4 years ago
  • Comments: 52 (16 by maintainers)

Most upvoted comments

Merely installing xvfb just… installs it. However it is not running. I’ve used the instructions found here

xvfb-run -s "-ac -screen 0 1280x1024x24" <node program>

Using that command results in e.g. xvfb-run -s "-ac -screen 0 1280x1024x24" editly --json kenBurns.json5 which now complains about assets not found.

BTW I find it unfortunate that there are no sample assets. Makes it harder to play around with it.

I did get further along with this Docker File…But now its failing when FFMPEG tries to write out to the temp dir- Hope this helps someone

FROM node:14.7
# FROM nikolaik/python-nodejs:latest
RUN apt-get update && apt-get install -y \
    libcairo2-dev \
    libpango1.0-dev \
    libjpeg-dev \
    libgif-dev \
    librsvg2-dev \
    libxi-dev \
    libglu1-mesa-dev \
    libglew-dev \
    python2.7 \
    python-pip \
    ffmpeg \
    xvfb
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# #
# ## Install app dependencies
COPY package.json /usr/src/app/

RUN npm install
ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 /usr/bin/dumb-init
RUN chmod 0777 /usr/bin/dumb-init

# Bundle app source
COPY . /usr/src/app

ENTRYPOINT ["/usr/bin/dumb-init", "--", "xvfb-run", "-s", "-ac -screen 0 1280x1024x24"]
CMD [ "node", "source/startup.js" ]

@Stefan-Hanke solution works for me https://github.com/mifi/editly/issues/33#issuecomment-622289045

If I run xvfb-run editly --json kenBurns.json5 the video is created. What’s the downside of this technique? I need to run from node, can I use this lib for that https://www.npmjs.com/package/xvfb ?

thanks! Armando

google can help you with this

macOS: BigSur 11.4 nodejs: v12.14.1 ffmpeg: 4.4 python: 3.9

$ editly --fast mosaic.json5 ffmpeg version 4.4 WARNING: ffmpeg issue: Invalid Version: 4.4 ffprobe version 4.4 WARNING: ffprobe issue: Invalid Version: 4.4 250x250 15fps Caught error Error: gl returned null, this probably means that some dependencies are not installed. See README. at module.exports (/usr/local/lib/node_modules/editly/glTransitions.js:12:11) at Editly (/usr/local/lib/node_modules/editly/index.js:172:60) at async /usr/local/lib/node_modules/editly/cli.js:136:3

Ah yes, the xvfb-run bit was 100% part of my dockerfile as well. Sorry if that wasn’t clear before

Sorry, not sure then! You might want to clarify (for future travellers) if you built with all the same flags from the dockerfile I linked, so ppl will know which approach you’ve exhausted

Hi @patcon I updated the versions:

  • ffmpeg version 4.3.1
  • node v14.15.2

and throws the same error 😦

Got this working in Docker thanks to @maerics @chapmanjacobd @MDrooker, thanks all! See #96 (I’m 100% sure it can be improved after [or before?] merge 🎉 )

EDIT: just confirmed gl shaders work.

I’m running node v15.2.0, throw an error:

`node:internal/modules/cjs/loader:1161 return process.dlopen(module, path.toNamespacedPath(filename)); ^

Error: The module ‘/usr/local/lib/node_modules/editly/node_modules/canvas/build/Release/canvas.node’ was compiled against a different Node.js version using NODE_MODULE_VERSION 72. This version of Node.js requires NODE_MODULE_VERSION 88. Please try re-compiling or re-installing`

Good job!

I don’t want to include the sample assets in this repository because they are quite huge and I don’t want everyone who downloads the repo to have to download hundreds of megabytes. But I’m thinking about putting them in a separate github repo and then having a download script from here.

No change after installing that package, still seeing the same error