Skip to main content

I’m struggling with editing the eolearn docker file to include ffmpeg.

It is needed for the time series batch process notebook.


I tried to add ffmpeg to the original apt-get or to multi stage it FROM ubuntu:18.04


but ffmpeg is missing after the container is created.


Any ideas?

Hi @tonish,


I think you have to install ffmpeg-python Python package. So I recommend adding a line


pip3 install --no-cache-dir ffmpeg-python

into your dockerfile.


I also see that there exist a bunch of different ffmpeg packages and we never specified which one should be used. We’ll try to improve that in the future.


Thanks but I already tried this and it does not work.

The error is : [Errno 2] No such file or directory: ‘ffmpeg’.

And also from the container terminal ffmpeg is missing, that is why I thought it should be added to the docker file, and I listed my attempts.

Maybe it should be compiled from source?


I tried it myself and it works. I started running a docker container from sentinelhub/eolearn:latest-examples, inside I installed the package and imported it:



This shows that the package can be simply installed without any extra system dependencies. It should also work if you add it to your docker file and create a new docker image on top of the one from eo-learn.


At what step exactly do you get the error?


But that just says that the package is installed well. but the module is only a wrapper for ffmpeg, so just importing it is not enough.


So when you try to use it, as the case here,(see also photo), it fails with the error I wrote previusly.



Please try to run the first few cells in the notebook with your new container. It fails on the last cell before step #2.


We should have the same behavior since both of us created a new container from sentinelhub/eolearn:latest-examples and then installed ffmpeg-python.


You are right, that wasn’t enough. I also had to install the system library ffmpeg inside the docker container (which is already running on sudo):


apt-get update
apt-get install -y ffmpeg

After that the system library was working but I was getting an error at the line:


video.output(f'{self.out_dir}/{self.out_name}.mp4', crf=15, pix_fmt='yuv420p', vcodec='libx264', an=None).run(overwrite_output=True)

It turned out the problem was that self.out_dir didn’t exist. So I had to add a line:


os.makedirs(self.out_dir, exist_ok=True)

before the problematic line. Then it successfully created a video and a gif.


Overall, the notebooks that are just in the eo-learn repository but not used for the official documentation are not that frequently maintained and can have such minor reproducibility issues. Thank you for pointing out this issue. 👍


Thank you its working for me now as well.


The only thing I don’t understand is why installing ffmpeg inside the docker worked, but adding “ffmpeg” to the docker file did not.


I added it this way:


FROM python:3.8-buster

LABEL maintainer="Sinergise EO research team <eoresearch@sinergise.com>"

RUN apt-get update && apt-get install -y \
ffmpeg \
gcc \
libgdal-dev \
graphviz \
proj-bin \
......

and it should do the same as:


apt-get update
apt-get install -y ffmpeg

but I guess now it doesn’t matter and the issue is resolved.

Thank you


Reply